推荐系统-基本概念

什么是推荐系统

按照维基百科的定义:

它是一种信息过滤系统,手段是预测用户(user)对物品(item)的评分和偏好。

重新定义推荐系统

  1. 它能做什么?

    推荐系统可以把那些最终会在用户(user)和物品(item)之间产生的连接提前找出来。

    连接:用户与物品有关系就是有连接。

  2. 它需要什么?

    推荐系统需要已经存在的连接,从已有的连接去预测未来的连接

  3. 怎么做?

    预测用户的评分和偏好。更抽象的实现方式分类是: - 机器推荐 or 个性化推荐 - 人工推荐 or 编辑推荐 一句话总结推荐系统: 用已有的连接去预测未来用户和物品之间会出现的连接

个性化推荐系统的经典问题

推荐系统的预测问题模式,从达成的连接目标角度区分,有两大类:评分预测和行为预测。

用户给产品施舍的评分数据,叫做显式反馈。各类用户行为,叫做隐式反馈。

评分预测

朴素的思想: 建立一个模型,这个模型会给用户历史上打过分的物品去预测分数,预测分数和实际分数之间会有误差,我们根据这个误差去调整模型参数,目标是让这个误差越来越小,是一个机器学习里面的回归问题。

存在的问题

  1. 数据不易收集
  2. 数据质量不能保证
  3. 评分的分布不稳定

行为预测

推荐系统预测行为方式有很多,常见的有两种: 直接预测行为本身发生的概率,和预测物品的相对排序,也叫做CTR预估,C的原意是Click,但是可以引申到其他任何的用户行为,如收藏、购买。

CTR指:Click Through Rate, 即“点击率”。把每一个推荐给用户的物品按照“会否点击”进行二分类,构建分类模型,预估其中一种分类的概率,就是CTR预估。

行为预测说白了,就是利用隐式反馈你数据预测隐式反馈的发生概率。

公司应该高度重视隐式反馈,原因如下:

  1. 数据比显式反馈要更加稠密。
  2. 隐式反馈更代表用户的真实想法。
  3. 隐式反馈常常和模型的目标函数关联更密切。

推荐系统存在的顽疾

隐藏顽疾是指它们还没有很好的通用的解决方案,而且不容易被重视,分别是:

冷启动问题

推荐系统是数据贪婪型应用,所谓数据贪婪型应用,就是对数据的需求绝无足够的那一天。

新用户或者不活跃用户,以及新物品或展示次数较少的物品,这些用户和物品,由于缺乏相关数据,很是空虚寂寞冷,因此就是冷启动问题的关注对象。

解决方法: 通常是给它加热,想办法引入数据,想办法从已有数据中主动学习(一种半监督学习)

探索与利用问题

行话叫做EE问题,假如我们已经知道了用户的喜好,一般有三种对待方式:

  1. 全部给他推荐他目前肯定感兴趣的物品。
  2. 无视他的兴趣,按照其他逻辑给他推荐,如编辑推荐、随机推荐、按时间先后推荐等等
  3. 大部分给他推荐感兴趣的,小部分去试探新的兴趣

显然第三种是更加科学和持久的,如何平衡大部分和小部分就是Exploit和Explore问题的核心了。 Exploit意为“开采”, 对用户身上已经探明的兴趣加以利用,Explore意为“探索”, 探明用户身上还不知道的兴趣。

安全问题

凡是系统就有漏洞,凡是漏洞就有利可图。推荐系统供给问题:

  1. 给出不靠谱的推荐结果,影响用户体验并最终影响品牌形象。
  2. 收集了不靠谱的脏数据,这个影响会一直持续留存在产品中,很难完全消除。
  3. 损失了产品的商业利益,这个是直接的经济损失。

必须具备的思维模式

要开发一个推荐系统产品,有四个关键的元素需要注意,他们的重要性依次递减,如下:

  1. UI和UE 最先优化的一定是产品的UI和UE,即人机交互设计和用户体验设计。

  2. 数据 数据是推荐系统的食材,巧妇难为无米之炊。

  3. 领域知识 常识和通识。

  4. 算法 对算法的常见误会就是:短期高估,长期低估。

目标思维和不确定性思维

目标思维的背后是“量化一切”的价值取向。

确定性思维是对于结果有预期,可以提前推演出来。 不确定性思维是不用因果逻辑严丝合缝地提前推演,而是用概率的眼光去看结果。强调出现一个推荐的可能性。

本文是《推荐系统三十六式》的读书笔记,仅限个人学习,请勿用作商业用途,谢谢。

Note: Cover Picture