个性化推荐研究(四)之如何利用用户行为数据
http://my.oschina.net/wxcchd/blog/139271
如何利用用户行为数据?
目前应用最广泛的就是使用基于用户行为数据分析的算法进行推荐。
基于用户行为数据分析的推荐算法一般被成为协同过滤算法。协同过滤算法有很多种,基于邻域的方法、隐语义模型、基于图的随机游走算法等等,而协同过滤也只是推荐算法中的一类,还有基于人口统计学的推荐、基于内容的推荐等等。
实际应用中用到最多的还有机器学习,聚类分类等等貌似在实际中都有应用。由于对机器学习一点也不了解,这里也就不提了,以后会对其进行补充。
本文主要整理的是基于邻域的方法,主要包含两种算法:基于用户的协同过滤(userCF)和基于物品的协同过滤(itemCF)。
基于用户的协同过滤
定义:根据用户的历史行为数据,给他推荐和他兴趣相似的其他用户喜欢的物品。
主要实现关键点在于计算用户之间的相似度。然后从中找出与指定用户最相似的一组用户的集合,最后根据这个集合计算出指定用户对其不知道的物品的感兴趣程度,从中选出最高的N个推荐给该用户。
基于物品的协同过滤
定义:根据用户的历史行为数据,给他推荐和他之前喜欢的物品相似的物品。 主要实现关键点在于计算物品之间的相似度。物品之间的相似度是根据用户历史行为数据计算出来的,与物品本身属性无关。在计算出物品之间的相似度后,从中找出与其物品j最相似的K个其他物品,然后计算用户对物品j的感兴趣程度,最后选出感兴趣程度最大的N个物品推荐给用户。
UserCF与ItemCF的比较
从推荐结果角度看,UserCF的推荐结果侧重于反映用户兴趣相似的小群体的热点,ItemCF的推荐结果侧重于维系用户的历史兴趣。以这方面来说,UserCF的推荐更加社会化,反映了用户所在的小型群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。
从推荐理由角度看,UserCF很难提供令用户信服的推荐解释,而ItemCF可以利用用户的历史行为给用户做推荐解释,更令用户信服。
从性能角度看,UserCF适合用户较少的场合。如果用户很多,计算用户相似度矩阵代价很大。ItemCF适合物品数明显小于用户数的场合,如果物品很多,计算物品相似度矩阵代价很大。
从技术角度看,UserCF适合物品更新速度快的情况,因为ItemCF需要维持一张物品相关度表,而绝大多数物品相关度表都只能做到一天一更新。
从冷启动角度看,UserCF对新用户有冷启动问题,但对新物品没有,而ItemCF对新物品有冷启动问题,但对新用户没有。
从兴趣角度看,UserCF可能会拓展用户的兴趣,其他用户喜欢的物品该用户也可能喜欢,而ItemCF不会,ItemCF根据用户本身的兴趣进行推荐。
个性化推荐的机器学习算法(待研究)
线性回归(Linear Regression)
逻辑斯特回归(Logistic Regression)
弹性网络(Elastic Nets)
奇异值分解(SVD : Singular Value Decomposition)
RBM(Restricted Boltzmann Machines)
马尔科夫链(Markov Chains)
LDA(Latent Dirichlet Allocation)
关联规则(Association Rules)
GBDT(Gradient Boosted Decision Trees)
随机森林(Random Forests)
聚类方法,从最简单的k-means到图模型,例如Affinity Propagation
矩阵分解(Matrix Factorization)。