推荐阅读时间:8min~10min 文章内容:推荐系统绕不开的经典问题
推荐系统从诞生到现在,伴随产生了很多的问题,有一些问题有较好的解决方案,但是有的仍然没有通用的解决方案。介绍这些问题之前,先来介绍下推荐系统的预测手段。
推荐系统的目标是预测用户跟物品之间隐藏的连接,最后将这些连接呈现给用户。想要完成这个预测,可以从以下两个方式入手:
推荐系统推荐的评分和行为都是用户对推荐结果的反馈,评分属于显式反馈,表示用户明确表示自己的态度,也有很多行为属于隐式反馈,这些行为并不是为了表达兴趣/态度,而只是在正常使用产品而已。
举个具体的例子,我们在京东首页看到的商品列表属于京东给我们的一个推荐,我们点击了某些感兴趣的商品进入商品详情页(相比我们点击的商品,大多数商品我们都不会点击),在商品详情页,我们会查看商品的介绍,如果确实需要,我们会将该商品添加到购物车(相比我们加入购物车的商品,大多数商品我们并没有加入),针对购物车中的商品,我们会选择一些直接下单(会存在很多在购物车中的商品,但是并不下单购买),等我们收到了购买的商品后,有时候我们会对所购买商品进行评分和评价(当然了,大多数人在大多数情况下并不会有该行为)。
很明显,用户的整个行为呈现一个漏斗形状,越往后,行为的数量会越少。
上面的各种行为都是针对于电商产品的,针对于其他类型的产品(比如资讯产品、视频音乐产品),这些行为的表现方式是不一样的,但是都是满足漏斗形状的。
总结来说,用户对不同类型的产品有不同的“消费方式”,也就是行为,但都是满足漏斗形状的。
不同推荐系统的任务也不同,有的直接预测用户消费后给出的评分,但更多的是预测用户的行为。
预测评分要做的事情就是建立一个模型,根据用户已经消费过并且给过评分的物品,然后预测用户对其他物品的打分,最后将预测结果中他打高分但是没有消费过的物品推给他。
这里要说明下评分的产生方式,有的产品会直接有明确的分数显示(通常是1-5),有的产品会以“星星”的方式显示,但都是一样的道理,都可以用来作为用户评分。
看到这,可能会觉得评分预测很简单,但实际上,我们预测评分的时候会跟实际分数有误差,我们可以根据这个误差来调整模型参数,让这个误差越来越小(在机器学习领域里,这就是回归问题)。
我们在衡量预测评分与实际评分的差别时,可以有很多指标,这里简单解释一个指标:RMSE,即均方根误差。
简单解释下, t 表示每一个样本,n 表示总共的样本数,有帽子的 yt 就是模型预测出的分数,秃顶的 yt 就是实际用户打的分数,这两个分数相减就是模型预测结果的绝对误差,由于绝对误差有正数也有负数,而我们只关心绝对值大小,所以再给误差求平方,这就是名字中的“方”的来源,再对所有样本的误差平方求平均值,这就是名字中“均”的来源,因为我们对误差都平方了,所以最后再对均值开方根,这就是名字中的“根”的来源。这个过程就是求均方根误差。
评分预测问题常见于各种点评类产品(如:书影音的点评),但评分类推荐存在以下问题:
推荐系统预测行为的方式有很多,常见的有两种:直接预测行为本身的发生概率,预测物品的相对排序。
直接预测行为本身的发生概率有一个更广为人知的名称叫 CTR预估,CTR 意思就是 Click Through Rate,即点击率,CTR预估要做的事情就是给用户一个物品,预测用户会点击它的概率(机器学习中的二元分类问题)。
行为预测简单来说,就是利用隐式反馈数据预测隐式反馈的发生概率。隐式反馈有以下好处:
总结来说,由于用户的行为呈现漏斗形状,所以评分数据会很稀疏(有的产品并没有直接的评分数据),所以推荐系统更多是预测用户行为。
介绍了推荐系统的两种预测手段所带来的问题后,来看下推荐系统还会遇到的问题,这些问题是目前还没有很好的通用解决方案:
当遇到新用户、不活跃用户、新物品、展示次数较少物品时(已存在的连接过少),会造成缺失相关数据,这个就是冷启动关注的重点
探索与利用问题,又叫 EE 问题,假如我们已经知道了用户的偏好,一般有以下三种对待方式:
哪一种更科学和持久呢?显然是第三种,那么如何平衡这里的“大部分”和“小部分”呢?
这就是 Exploit 和 Explore 问题的核心了。Exploit 意为“开采,利用”,对用户身上已经探明的兴趣加以利用,Explore 意为“探索”,探明用户身上还不知道的兴趣。
推荐系统也是系统,是系统就有漏洞。推荐系统被攻击的影响大致有以下几个:
作者:无邪,个人博客:脑洞大开,专注于机器学习研究。