TA的每日心情 | 开心 2024-9-19 21:14 |
---|
签到天数: 757 天 [LV.10]以坛为家III
管理员
- 积分
- 1312677
|
推荐系统三十六式-刑无刀 极客时间
由于工作需要,开始学习推荐算法,参考【极客时间】->【刑无刀大牛】的【推荐系统三十六式】,学习并整理。
1. 概念篇
1.1 什么是推荐系统
推荐系统:它是一种信息过滤系统,手段是预测用户(User)对物品(Item)的评分和偏好。
1.1.1 它能做什么?
推荐系统可以把那些最终会在用户(User)和物品(Item)之间产生的连接提前找出来。
1.1.2 它需要什么?
推荐系统需要已经存在的连接(可理解为原料),从已有的连接去预测未来的连接。
1.1.3 怎么做?
机器学习和人工推荐,也就是通常说的“个性化推荐”和“编辑推荐”。两者之间还存在现在最常见的领域专家推荐,也就是网红推荐。
1.2 推荐系统的问题模式
1.2.1 推荐系统的预测问题模式,从达成的连接目标角度区分,有两大类:
1、评分预测
Netflix 比赛的评判标准就是 RMSE ,即均方根误差,怎么算的呢?
t 表示每一个样本,
n 表示总共的样本数,
有帽子的 yt 就是模型预测出的分数,是我们交的作业,
秃顶的 yt 就是用户自己打的分数,是标准答案,
然后一个样本一个样本地对答案,模型预测分数和用户自己打分相减,这就是我们预测的误差
2、行为预测
根据用户爸爸使用App或浏览网站的行为:登录、点击率、刷新、收藏、阅读完成、评论、添加购物车、推荐好友、分享、购买、评价等,进行推测。
行为预测说白了,就是利用隐式反馈数据预测隐式反馈的发生概率;也因此,各家互联网产品要高度重视隐式反馈,归纳起来有以下几点原因:
1. 数据比显式反馈更加稠密。诚然,评分数据总体来说是很稀疏的,之前 Netflix 的百万美元挑战赛给出的数据稀疏度大概是 1.2%,毕竟评分数据是要消耗更多注意力的数据。
2. 隐式反馈更代表用户的真实想法,比如你不是很赞成川普的观点,但还是想经常看到他的内容(以便吐槽他),这是显式反馈无法捕捉的。而人们在 Quora 上投出一些赞成票也许只是为了鼓励一下作者,或者表达一些作者的同情,甚至只是因为政治正确而投,实际上对内容很难说真正感兴趣。
3. 隐式反馈常常和模型的目标函数关联更密切,也因此通常更容易在 AB 测试中和测试指标挂钩。这个好理解,比如 CTR 预估当然关注的是点击这个隐式反馈。
1.2.2 推荐系统的隐藏顽疾,即没有很好的通用解决方案。
1、冷启动问题
推荐系统是数据贪婪型应用,就是对数据的需求绝无足够的那一天。
新用户或者不活跃用户,以及新物品或展示次数较少的物品,这些用户和物品,由于缺乏相关数据,很是空虚寂寞冷,因此就是冷启动问题的关注对象。
因为通常的解决方式就是给它加热:想办法引入数据,想办法从已有数据中主动学习(一种半监督学习)。我们会在后面的文章中详细讨论冷启动的问题。
2、探索与利用问题
探索与利用,行话又叫做 EE 问题。假如我们已经知道了用户的喜好,一般有三种对待方式:
1. 全部给他推荐他目前肯定感兴趣的物品;
2. 无视他的兴趣,按照其他逻辑给他推荐,如编辑推荐、随机推荐、按时间先后推荐等等;
3. 大部分给他推荐感兴趣的,小部分去试探新的兴趣,如同一边收割长好的韭菜,一边播种新的韭菜。
显然是第三种,那么如何平衡这里的“大部分”和“小部分”呢?这就是 Exploit 和 Explore 问题的核心了。Exploit 意为“开采”,对用户身上已经探明的兴趣加以利用,Explore 意为“探索”,探明用户身上还不知道的兴趣。
3、安全问题
如果你正在一款流量非常大的产品上构建推荐系统,那么一定要考虑推荐系统攻击问题。推荐系统被攻击的影响大致有以下几个:
1. 给出不靠谱的推荐结果,影响用户体验并最终影响品牌形象;
2. 收集了不靠谱的脏数据,这个影响会一直持续留存在产品中,很难完全消除;
3. 损失了产品的商业利益,这个是直接的经济损失。
1.3 对关键元素重要性的认识
要开发一个推荐系统产品,有这么四个关键的元素需要注意:
1. UI 和 UE;
2. 数据;
3. 领域知识;
4. 算法。
重要性依次递减,权重大致是 4-3-2-1。
1.4 目标思维和不确定性思维
推荐系统这种信息过滤系统,追求的是指标的增长,背后思想强调是目标和不确定性:我们并不能很确定地模拟每个人将会看到什么,也不能很好地复现一些操作过程,充满了不确定性,但是在推荐系统未动的情形下,目标先行则是常识。
关于目标思维,如果了解机器学习的人会很好理解。通常来说,训练机器学习模型是一个不断最小化(或者最大化)目标函数的过程,先设定一个目标函数,然后通过不断迭代让这个函数值到最小值(或者最大值)。
不确定性思维就是:不用因果逻辑严丝合缝地提前推演,而是用概率的眼光去看结果。
为什么负责推荐系统产品的人一定要有不确定性思维呢?原因有以下几个:
1. 绝大多数推荐算法都是概率算法,因此本身就无法保证得到确切结果,只是概率上得到好的效果;
2. 推荐系统追求的是目标的增长,而不是一城一池的得失;
3. 如果去花时间为了一个 Case 而增加补丁,那么付出的成本和得到的收益将大打折扣;
4. 本身出现意外的推荐也是有益的,可以探索用户的新兴趣,这属于推荐系统的一个经典问题:EE 问题,后面会有记录。
|
|