做好推荐系统的第二步,就是认识用户。如果你不了解用户的喜好,推荐也就无从谈起。所以在用户冷启动的时期,我们会用一些策略去试探用户的喜好,目标也是为了认识用户。
认识用户用专业术语表达就是用户画像(User Profile)。读者应该看过下图形式的用户画像:
这种图形化的用户画像,用不同颜色和字体的标签,拼出用户的剪影形象。
实际上,这种形式的用户画像,对计算机来说没什么用处。为什么呢?
因为对于计算机来说,用户画像是否形象,是否直观,甚至是人类是是否可理解,都不重要,重要的是否可计算。对与计算机来说,最好不过的画像就是一组向量,向量的每个纬度可以是人类可理解的,也可以是人类不可理解的。因为用户画像的目标是提高推荐的效果,它需要参与各种推荐算法的计算,画像本身并非目的。
通常来说,用户画像由下面两种构建方法:
- 数据统计:用户的统计特征,直接可以作为画像的一部分,比如性别,年龄,职业等等。
- 机器学习:通过用户的对物品的行为数据,可以学习到用户在物品画像空间的权重,这些权重可以作为用户画像的组成部分。另外,还有通过潜因子分析算法,学习到人类无法直观理解的潜因子表达,称为嵌入(Embedding),也是用户画像的组成部分。
对于构建用户画像,我们来举个例子,放长假的时候,很多人都会选择外出旅游,从推荐系统的角度出发,如何推荐旅游地点呢?
首先我们对旅游地进行分析,构建旅游地的画像,分为下面三个纬度分别量化:
- 距离:1表示距离最远,5表述距离最近
- 价格:1表示价格最贵,5表示价格最便宜
- 评价:1表示评价最差,5表示评价最好
那么所以的旅游地都会有一个向量化的表示,比如:
- 北京:
- 香港:
- 泰国:
- 欧洲:
用户对每个纬度的考虑程度也不一样,也可以量化,比如:
- 距离: 1表示非常在乎距离,极不愿意出远门,5表示距离无所谓
- 价格: 1表示非常在意价格,5表示价格无所谓,是个土豪
- 评价: 1表示非常有主见,不在于别人的评价, 5表示非常在于旅游地的评价
于是每个用户会对应一个向量,这个向量可以称为用户的画像:
- 张三:
有了用户画像和旅游地画像,就可以对每个用户计算旅游地的推荐分数了,例如对于张三来说,上面景点的得分分别是:
- 北京:
- 香港:
- 泰国:
- 欧洲:
有了得分之后,就可以将得分最高的旅游地推荐给张三。
上面的例子中,实际上是对用户画像构建过程做了很大的简化,这些简化包括:
- 纬度的确定: 我们人为的确定了画像的纬度以及每个纬度的含义,实际中,这些纬度需要通过上一章介绍的挖掘算法,挖掘出来的。
- 用户的量化: 用户在每个纬度上的量化值,是人为设置的,实际中,应该是以推荐效果为导向,通过数据自动学习出来的。
- 推荐算法: 这里我们采用了线性模型,对应的纬度相乘求和,得出一个推荐分数,实际中这也不是必须的,可以有推荐模型。甚至目标都可以不是分数,例如,可以是拟合用户对旅游地的评分。