总第 110 篇文章,本文大约 3200 字,阅读大约需要 10 分钟
2020 年第一篇技术文章,以一个新的系列开始--推荐系统(Recommend System),第一篇文章会简单介绍推荐系统的定义和应用,目录如下:
来自维基百科的定义:
推荐系统是一种信息过滤系统,手段是预测用户(user)对物品(item)的评分和偏好。
进一步从以下三个方面来回答这个问题
1. 推荐系统能做什么--推荐系统最终可以把那些会在用户和物品之间产生的连接提前找出来。
这里说的连接,含义非常广泛,凡是能够产生关系的都是连接,包括用户对物品的行为,或者用户的某些属性和物品的某些属性。
这里这么说的依据是基于这样一个事实:万事万物都有相互连接的大趋势。
2. 推荐系统需要什么--需要已经存在的连接,从已有的连接去预测未来的连接。
3. 推荐系统怎么做--预测用户评分和偏好。具体说就是机器推荐和人工推荐,也就是通常说的个性化推荐和编辑推荐。
总体来说,推荐系统实际上是在目前信息爆炸的时代,可以帮助用户过滤大量无效信息,获取到感兴趣的信息或者物品的算法,并且也可以挖掘出一些长尾物品。当然,过度依赖推荐系统,实际上也可能让你只接受到同一类的信息或者单一领域的物品,这也是推荐系统存在的一个问题,探索与利用问题。
推荐系统是如何工作的呢?这里可以用一个看电影的例子来解释,比如我们在不确定看什么电影的时候,通常可能会有这几种方法来做决定:
上述也只是3种推荐方式,实际上推荐系统还有其他的推荐方法,但本质上都是需要用户和物品之间存在连接,通过已有的连接来预测未来的连接。
从两个方面考虑这个问题:
这里有一个简单的判断是否需要推荐系统的公式:
分子表示增加的连接数量,分母就是增加的活跃用户数和增加的有效物品数。
这个简单的指标是这样的:
最后,是否需要推荐系统从战术上看是需要考虑投入产出比的问题,需要组建团队、购置计算资源、积累数据和花费时间优化等;但如果是战略问题,那就不需要讨论了。
根据上文的介绍,推荐系统的目标就是预测用户和物品的连接,其预测问题模式,从达成的连接目标角度区分,分为两大类:
评分和行为其实是反映了用户对推荐结果的两类反馈,前者是一个显式反馈,直接表明用户对推荐的物品的喜好程度,而后者更多展示的是隐式反馈,比如用户仅仅是浏览阅读了推荐的物品,或者说电商类的加入购物车,收藏物品等等。
评分预测主要做的事情就是,提前预测用户对物品的评分,比如对电影评分1-5分,或者是商品打多少颗星星。
一个比较朴素的实现思想:建立一个模型,基于用户历史评分的物品来预测分数。
如何衡量预测的好坏,通常可以用均方根误差(RMSE)来作为损失函数:
其中 n 是样本的总数, 是用户对物品的打分,表示模型预测的分数,因此它们的相减就是模型和用户实际打分的误差,而 RMSE 只关心绝对值大小。
评分问题主要用于各种点评类产品,比如豆瓣、Imdb等等,但评分推荐存在这些问题:
行为预测就是利用隐式反馈数据预测隐式反馈的发生概率。行为预测更受到重视的原因有这几点:
行为预测的方式有很多,常见的是这两种方式:
推荐系统发展到现在,依然还是有些问题一直没有很好的通用解决方案,并且不容易被重视。
推荐系统实际上是数据贪婪型应用,也就是对数据的需求绝无足够的那一天。
冷启动问题可以分为:
通常的解决办法是:想办法引入数据,从已有数据中主动学习(一种半监督学习),比如用户的注册信息,物品的描述信息等等。
这个问题也叫 EE(Explore & Exploit) 问题:
通常最好的做法是推荐大部分用户感兴趣的物品,小部分是新的其他领域的物品,比如已知用户是数码产品爱好者,那么大部分推荐的就是电脑、键盘等数码产品,然后推荐少量的其他类的物品,比如运动健身产品或者衣服等;
但这里需要考虑的就是这个比例的问题,不同的用户的推荐比例也不一样,可能有的用户就是喜欢探索新奇的物品,但有的用户只喜欢感兴趣的物品。
推荐系统也是存在安全问题,可能会被攻击,被攻击的影响有以下几个:
推荐系统的应用特别广泛,包括电子商务、电影和视频、音乐、社交网络、阅读、基于位置的服务、个性化邮件和广告等等。
事实上,当产品的用户和物品数据越来越大的时候,都需要考虑使用个性化推荐系统,给用户个性化的体验。
参考