首页 > 代码库 > 推荐算法 学习笔记一
推荐算法 学习笔记一
“未来 30 年最大的财富会出现在这一领域;内容扩张得越多,就越需要过滤,以便使得注意力聚焦。注意力流到哪里,金钱就跟到哪里。”——摘自某笔记的博文
大学期间因为课题冲突(只要还是人懒欠思考),没有深入地去学习“机器学习”相关知识。近期看到很多关于推荐的博文,也与牛人同学有相关方面的接触,以前的懈怠令我大有悔意。亡羊补牢,犹未晚矣。
不过讲真,抛开主观因素,学点推荐相关的知识,对从事信息技术这个行业真的大有裨益。
言归正传,这篇文章介绍推荐算法(建议直接看英文原文,链接在最后)。
## 算法分类
推荐算法通常被分为四大类(1-4):
- 协同过滤推荐算法
- 基于内容的推荐算法
- 混合推荐算法
- 流行度推荐算法
除了这些种类以外,还有一些高级非传统的推荐算法(5)。
## 算法详细属性
1.协同过滤推荐算法
简介:通过在用户的一系列行为中寻找特定模式来产生用户特殊推荐
输入:仅仅依赖于惯用数据(例如评价、购买、下载等用户偏好行为)
类型:
- 基于邻域的协同过滤(基于用户和基于项)
- 基于模型的协同过滤(矩阵因子分解、受限玻尔兹曼机、贝叶斯网络等等)
优点:
- 需要最小域
- 不需要用户和项
- 大部分场景中能够产生足够好的结果
缺点:
- 冷启动问题
- 需要标准化产品
- 需要很高的用户和项的比例(1:10)
- 流行度偏见(有长尾的时候表现不够好)
- 难于提供解释
2.基于内容的推荐算法
简介:向用户推荐和其过去喜欢项的内容(例如元数据、描述、话题等等)相似的项
输入:仅仅依赖于项和用户的内容/描述(除了惯用数据)
类型:
- 信息检索(例如 tf-idf 和 Okapi BM25)
- 机器学习(例如朴素贝叶斯、支持向量机、决策树等等)
优点:
- 没有冷启动问题
- 不需要惯用数据
- 没有流行度偏见,可以推荐有罕见特性的项
- 可以使用用户内容特性来提供解释
缺点:
- 项内容必须是机器可读的和有意义的
- 容易归档用户
- 很难有意外,缺少多样性
- 很难联合多个项的特性
3.混合推荐算法
简介:综合利用协同过滤推荐算法和基于内容的推荐算法各自的优点同时抵消各自的缺点
输入:同时使用用户和项的内容特性与惯用数据,同时从两种输入类型中获益
类型:
- 加权
- 交换
- 混合
- 特性组合
- 案列
- 特征增强
- 元层次
优点:
- 由于单独使用协同过滤推荐算法和基于内容的推荐算法
- 没有冷启动问题
- 没有流行度偏见,可推荐有罕见特性的项
- 可产生意外,实现多样性
缺点:
- 需要通过大量的工作才能得到正确的平衡
4.流行度推荐算法
简介:这是一种推荐流行项的方法(例如最多下载、最多看过、最大影响的项)
输入:使用惯用数据和项的内容(例如类目)
优点:
- 相对容易实现
- 良好的基准算法
- 有助于解决新用户冷启动问题
缺点:
- 需要标准化产品
- 经常需要一些项的类型进行分类
- 不会推荐新项(很少有机会被观测到)
- 推荐列表不会改变太大
5.高级非传统推荐算法
类型:
- 深度学习
- 学习等级
- Multi-armed bandits(探索/开发)
- 上下文感知推荐
- 张量分解
- 分解机
- 社会推荐
优点:
- 利于勉强维持最终性能百分点
- 你可以说你正在使用渐进的方式
缺点:
- 难于理解
- 缺乏推荐工具支持
- 没有为你的首个推荐系统提供推荐的方式
## 参考
参考文章链接:
http://www.infoq.com/cn/articles/recommendation-algorithm-overview-part01
https://buildingrecommenders.wordpress.com/2015/11/16/overview-of-recommender-algorithms-part-1/
## 结束语
“最重要的一点,在信息丰富的世界里,唯一稀缺的资源就是人类的注意力。”
推荐算法 学习笔记一