推荐系统知识点
- 推荐系统架构上,占比分别为:数据 60%,产品30%,算法10%。
- 推荐算法主要包括:基于人口统计学的推荐,基于内容的推荐,协同过滤三种。
- 冷启动分为用户冷启动和物品冷启动。
- 用户冷启动通常是指用户没有在产品上留下任何历史数据,无法获取其喜好。常用的解决方法是根据用户的背景资料,或引导性让用户进行选择,从而暂时让用户适应热启动。在线推荐系统可以做到让用户产生了行为后立马更新推荐列表。
- 物品冷启动也类似,对于新物品来说没有用户历史数据,这事会采用物品属性之间的相关程度来解决。
基于人口学的推荐
如上图所示,该推荐方法根据用户的基本信息发现用户之间的相关程度,然后把相似用户喜爱的其他物品推荐给当前用户。
方法:
常常使用用户年龄,性别,兴趣等信息计算用户间的相似度。
优势:
- 不需要历史数据,没有冷启动问题。
- 不依赖于物品的属性,因此其他领域的问题都可无缝接入。
劣势:
算法比较粗糙,效果很难令人满意,只适合简单的推荐
基于内容的推荐
与上文提到的方法类似,只不过用到的不是用户之间的相似度而是物品间的相似度。
方法:
对物品属性进行建模,如果两个物品拥有比较相似属性,那么某用户喜欢物品a的情况下很大可能喜欢物品b。
优势:
对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度。
劣势:
- 物品的属性有限,很难有效的得到更多数据。
- 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性。
- 需要用户的物品的历史数据,有冷启动的问题。
协同过滤
核心:用户交互数据建模
基于协同过滤的推荐可以分为三个子类:
- 基于用户的推荐(User-based Recommendation)
- 基于项目的推荐(Item-based Recommendation)
- 基于模型的推荐(Model-based Recommendation)
基于用户的协同过滤推荐
基本假设:喜欢类似物品的用户可能拥有相同的口味或偏好。
方法:
根据所有用户的偏好信息,根据k近邻等算法构建相似用户群,根据这群用户的历史信息进行推荐。
与基于人口统计学方法的异同:
都是计算用户相似度进行推荐。不同的是,人口学方法是根据用户的特征信息进行计算,而协同过滤方法是根据用户的行为特征划分相似用户族群。
基于项目的协同过滤推荐
与基于用户的协同过滤方法类似,基于项目的方法能够从项目历史信息中发掘出具有相似性的物品,从而将类似信息的物品推荐给用户。
基于模型的协同过滤
根据用户样本的喜好信息,通过机器学习方法训练出推荐模型,根据实时的用户喜好信息进行推荐。
主流方法:
- 关联算法:Apriori,FP Tree和PrefixSpan
- 聚类算法:K-Means,BIRCH,DBSCAN和谱聚类
- 分类算法:逻辑回归、朴素贝叶斯等。
- 回归算法:线性回归,决策树和支持向量机回归。
- 矩阵分解:SVD的一些变种:FunkSVD,BiasSVD和SVD++等。
- 图模型:SimRank,PageRank等。
- 神经网络:限制玻尔兹曼机(RBM),深度学习方法等。
- 隐语义模型:基于NLP的LDA等方法。
- 图神经网络
协同过滤小结
优点:
- 不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。
- 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好。
缺点:
- 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。
- 推荐的效果依赖于用户历史偏好数据的多少和准确性。
- 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。
- 对于一些特殊品味的用户不能给予很好的推荐。
- 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。
参考资料
[1] 常用的推荐算法小结
[2] 协同过滤推荐算法总结