本文主要来源:阿里云天池技术圈常用推荐算法(50页干货)
部分进行总结和详细解释(原文属于比较精炼没有侧重点的提纲)
适合和我一样的推荐算法小白和入门者
主要内容
一.推荐系统简介
- 信息过载
从海量信息中过滤出用户需要的信息。 - 信息过滤三种方法:
1.类目导航(如:搜狗,用户按类目逐层查找)
2.搜索(如:谷歌,用户提供意图明确的query)
3.推荐(如:头条,系统主动给提供用户选择) - 推荐系统的发展史(略)
- 推荐系统的应用和价值(略)
- 推荐系统的评价标注(重要):
1.用户满意度:调研、用户反馈,点击率、转化率等
2.准确性:prediction/recall/F-score三个参数的具体解释
3.覆盖率:照顾到尾部物品和用户
4.多样性:两两之间不相似
5.新颖性:没听过,没见过的物品
6.惊喜性:。。?
7.用户信任度/可解释性:推荐理由
8.鲁棒性/健壮性:哈利波特现象1,抗攻击、反作弊
9.实时性:新加入的物品;新的用户行为(实时意图)
10.商业目标:一个用户带来的盈利
- 推荐系统的核心问题:
如何评价一个用户(user)对一个物品(item)的评分(喜欢程度)
- 影响推荐效果的因素
1.用户交互界面(用户对推荐系统第一感知)
2.数据
数据收集:有效性(真实、准确)、全面性(是否有偏)
数据处理:清洗、挖掘
3.领域知识(产品定位、具体推荐需求的理解)
4.算法迭代(锦上添花) - 推荐算法的两个阶段
二.传统的推荐算法
- 非个性化推荐:热度排行
- 协同过滤:
- Memory-based(aka neighborhood-based)方法:Item-based/user-based CF
- Model-based方法:频繁项挖掘/聚类/分类/回归/矩阵分解/RBM/图模型
- 基于内容/知识的推荐(Content-based/Knowledge-based)
- 混合方法(Hybird Approaches)
热度排行
- 不同的排行榜算法:
- 单一维度的投票(旧版的Delicious)
- 多个维度综合打分
- 加入时间因素:引入衰减权重(半衰期、冷却定律) (Hacker News)
- 考虑反馈信息:如Reddit算法
- 考虑置信度:如威尔逊区间
- 防止马太效应:如MAB算法等
(我在这里还专门百度了一下马太效应hhh)
- 评价
- 容易实现
- 更新慢,难以推新
- 排行榜更多是业务问题而不是算法问题
协同过滤(Collaborative Filtering)
- 思想来源(略)
- 基本组成元素:
- N个用户,M个物品
- 评分矩阵:用户对物品的评分(显式)或用户对物品的行为(隐式)
- 相似性度量:物品与物品(人与人) 之间的相似性
Memory-based
将用户的所有数据读入内存中进行运算,所以被称为Memory-based
User-based CF
算法步骤
- Step1 协同(在线)
计算目标用户的(前k