什么是推荐系统?算法
1. 能作什么?安全
找出 user 和 item 之间的联系、预测将来 user 和 item 可能出现的链接(产生了某种关系:好比用户点击、购买、评论了物品;或者用户某些属性和物品的属性一致 ...)机器学习
2. 须要什么?函数
须要已经存在的 user 和 item 之间的链接记录工具
3. 怎么作?学习
预测用户评分和偏好(机器推荐和人工推荐)测试
何时须要推荐系统?优化
1. 符合产品的目的。(好比工具类产品就确定不须要,但社区类产品就须要)spa
2. 要看产品中 user 和 item 的状况。若是规模少到编辑推荐便可解决,就不须要;或者 user 的留存回访很低,也不须要(要有长尾效应才可能让推荐系统发挥效果)。设计
好比能够计算 Δconnection / (Δuser * Δitem),若是值较小,说明增长的链接数主要靠增长的活跃用户数和物品数贡献,不适合加入推荐;反之说明链接数已经有自发增加的趋势了,适合用推荐系统来加速。
推荐系统的问题模式
两大类:评分预测、行为预测。(由于评分和行为是用户对推荐结果的反馈)
因此不一样推荐系统的任务也不一样,有的直接去预测用户若是消费完以后会给多少评分;更多的是会分层,想要预测用户的行为。
评分预测:
提早预测一个用户对每一个物品会打多少分,好比1~5分,而后找出那些他可能打高分可是还没消费的物品,推过去就行了
但怎么衡量预测分数和实际分数之间的偏差呢?(机器学习模型的优化可能是偏差驱动)—— 其实就是个回归问题,用均方偏差
评分预测常见问题:
1. 数据不易收集,用户给出对一个物品给出评分,意味着他已经完成前面整个消费行为了
2. 数据质量难以保证,伪造评分数据容易、门槛低,可是得到真实评分数据又不易、门槛高
3. 评分分布不稳定,不一样时期总体评分差异大,我的评分在不一样时期也会变化,不一样人之间评分标准差异也很大
因此评分这种数据,就是用户提供的显式反馈。但其实还存在隐式反馈,一般是各种用户行为,这就引出了下面一类问题
行为预测:
从用户登录刷新,到购买收藏,这类自觉自愿产生的行为,一是数据量很大、二是相对真实。在整个消费流程中,用户行为(好比购买、创建社交关系、完整消费长内容)常呈漏斗关系,从登录刷新开始,逐层经历流失。推荐系统就是要让完整的用户行为越多越好。
预测方式有两种:直接预测行为自己发生的几率(CTR 预估);预测物品的相对排序
隐式反馈相比显式反馈的优点:
1. 数据更加稠密(评分数据整体上很稀疏)
2. 更能表明用户的真实想法
3. 和模型的目标函数关联更密切,更容易在 AB 测试中和测试指标挂钩
行为预测常见问题:
1. 冷启动。新用户或者不活跃用户、新物品或展现次数较少的物品,相关数据较少、比较难作到有效推荐。要想办法从已有数据中主动学习
2. 探索与利用(EE 问题)。假设已经知道用户的喜爱,比较科学的方式是大部分推荐他感兴趣的,小部分尝试去探索新的兴趣。如何平衡这二者就是要处理好的问题。
3. 安全问题。推荐系统被攻击的影响大体有:给出不靠谱的推荐结果;收集了脏数据,且一直持续留存影响;损失了商品的商业利益。因此针对推荐系统的攻防,也是须要讨论的问题。
推荐系统构成元素的相对重要性、思惟模式
四个关键元素:1. UI 和 UE;2. 数据;3. 领域知识;4. 算法。重要性递减(算法其实反而不怎么重要?)
最早优化的必定是人机交互设计和用户体验设计,颜值即正义,交互逻辑要简洁明了;其次就是数据,没有历史数据积累,别的都是白扯;再来就是所处领域的常识和通识,好比电商产品普通用户更在乎价格、新闻类产品必须更新很快、不必给一个歌手的骨灰粉再推荐该歌手的歌...等等。最后才是算法的做用,各类算法原理也是必定要掌握的,算法的左右没那么大,但也不可或缺。
目标思惟和不肯定性思惟
推荐系统是一个信息过滤系统,要解决的问题是如何让信息流通更有效率,追求指标的增加,背后思想强调是目标和不肯定性:并不能很肯定每一个人将会看到什么,也不必定能复现一些操做。但只要能让目标指标增加便可。
输出值在增加就说明修改有效,继续沿着那个方向作下去,一旦无效或副作用就滚回去。
换句话说,要搞清楚作推荐系统的终极目标是什么。在这个过程当中,量化就很是重要,推荐的精准性要量化,优化改进动做也要量化。
不用因果逻辑严丝合缝的推演,而用几率的眼光看待结果。为何要有这种不肯定思惟?1. 大多数推荐算法原本就是几率视角;2. 追求的是不择手段增加目标,而不是纠结一两个case;3. 为个别问题修改模型,付出和收益比;4. 原本出现意外的推荐也多是有益的(EE问题)