<h3>什么是冷启动问题?</h3> <p> 个性化推荐是需要依赖用户的历史行为才能预测用户的兴趣,因此大量的用户行为数据是用户的重要组成部分和先决条件。那么对于在开始阶段就像要一个个性化推荐系统的网站或应用来说,如何在没有用户历史数据的情况下设计个性化推荐并且让用户对推荐结果满意从而使用推荐系统,就是冷启动问题。 </p> <h3>用户冷启动</h3> <p> 如何给新用户做个性化推荐? <br/> 1、做非个性化推荐,如热门排行榜、人工推荐等<br/> 2、利用用户的个人信息做粗粒度的个性化推荐<br/> 算法核心:计算每种特征(如年龄、性别、职业等)的用户喜欢的商品。即,对于每种特征f,计算具有这种特征的用户对各个商品的喜好程度p(f,i)。<br/> p(f,i)=|N(i)与U(f)的交集|,其中N(i)是喜欢物品i的用户集合,U(f)时具有特征f的用户集合。<br/> 以上公式可能会出现有一个物品只被一个用户喜欢过,而这个用户刚好就有特征f的情况,那么p(f,i)=1。这种情况没有统计意义,因此我们可以为分母加上一个比较大的数,可以避免这样的商品产生比较大的权重。<br/> p(f,i)=|N(i)与U(f)的交集|/(|N(i)|+a)<br/> 通过以上公式,可以计算出每种特征的商品集合。<br/> 因此,我们可以通过微博获取用户的个人信息,根据用户个人信息对用户进行分类,给用户推荐他所属分类中用户喜欢的商品。例如:可以通过性别、年龄分别建立性别-商品相关表、年龄-商品相关表,然后将这两张相关表的商品列表按照一定权重相加,得到用户的最终推荐列表。 </p> <h3>物品冷启动</h3> <p> 如何将新商品推荐可能对它感兴趣的用户?<br/> 1、UserCF(基于用户的协同过滤)<br/> UserCF对商品冷启动问题并不敏感。UserCF在给用户进行推荐时,会首先找到和用户兴趣相似的一群用户,然后给用户推荐这一群用户喜欢的商品。当一个新商品加入时,总会有用户通过某些途径(分类、搜索等)看到这些商品,对商品产生反馈。那么当一个用户对某个物品产生反馈后,和他历史兴趣相似的其他用户的推荐列表中就有可能出现这一商品,从而更多的人就会对这个商品产生反馈,导致更多的人的推荐列表中出现这个物品。这个物品就能不断地扩散开来。因此如果使用UserCF算法,我们就可以不用考虑商品冷启动问题。<br/> 但是,推荐列表是用户获取信息的主要途径,那么对于UserCF算法就需要解决第一推动力的问题,即第一个用户从哪里发现这个新商品。只要有一小部分人能够发现并喜欢新商品,那么UserCF就能将这些新商品扩散到更多用户中。解决第一推动力最简单的方法时将新的商品随机展示给用户,但这样效率很低并且显然不太个性化,因此可以考虑利用物品的内容信息,将新商品先投放给曾经喜欢过和它内容相似的其他商品的用户。<br/> 2、ItemCF(基于项目的协同过滤)。<br/> 对于ItemCF算法来说,商品冷启动就是一个严重的问题了。ItemCF算法是给用户推荐和他之前喜欢的商品相似的商品。ItemCF算法每隔一段时间就会利用用户行为计算商品相似度表,在线服务时ItemCF算法会将之前计算好的物品相似度矩阵存放在内存中。当新商品加入时,内存中的商品相关表中不会存在这个商品,从而ItemCF算法无法推荐新商品。解决这一问题的办法是频繁更新物品相似度表,但是基于用户行为计算物品相似度是比较耗时的事情。因为用户行为日志随着时间的推移会变得越来越大。而且新商品如果不展示给用户,用户就无法对它产生行为,通过日志计算是计算不出包含新商品的相关矩阵的。为此,我们只能利用新商品的内容信息计算物品相关表,并且频繁地更新相关表(一小时一次)。 </p> <h3>系统冷启动</h3> <p> 如何让在刚发布时就让用户体验到个性化推荐服务? 要使用“基因”(物品的元属性)来进行推荐。我们就需要人工地对每一件商品进行标记,并且每件商品的基因数量应维持在一个固定的数量上。 </p>
来源:oschina
链接:https://my.oschina.net/u/268089/blog/139302