<audio id="audio" title="04 | 画鬼容易画人难：用户画像的“能”和“不能”" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/91/df/910c80be51ea84dbce5d7da5957cb6df.mp3"></audio>

做好一个推荐系统，总共分三步：

1. 认识每一个用户；
1. 给他推荐他感兴趣的东西；
1. 坐等各项指标上升。

开个玩笑，如果这么简单的话，那么你和我都要失业了；但是话说回来，认识用户是必须的，不过不用担心，认识用户不用请他们吃饭，这就是我们常常听说的“用户画像”这个词。今天，我就来跟你聊一聊：用户画像的那些事儿。

用户画像比较抽象，就像每个人都听说过鬼，但很少有人见过。事实上，它也没有那么神秘，只是大家对它有误解，要么觉得没什么用，要么觉得它是“银弹”，可能相信后者的人略多一些，但实际上这两种看法都不准确。

## 什么是用户画像

先说说“用户画像”这个词，它对应的英文有两个：Personas 和 User Profile。Personas属于交互设计领域的概念，不在本文讨论范围内，请出门右转去找交互设计师们聊，留下来的人，我们聊聊 User Profile 这种用户画像。

User Profile 原本用于营销领域。营销人员需要对营销的客户有更精准的认识，从而能够更有针对性地对客户和市场制定营销方案。

这个理念本身没有错，但是有一个问题：传统营销领域，是以市场销售人员为第一人称视角去看待客户的，也就是用户画像为营销人员服务。

在这种用途下谈论的用户画像，和我们即将在推荐系统领域谈论的相差有点大；但是很遗憾，今天在媒体上看到的大多数“用户画像”案例分享，都停留在这个意思上。

比如最常见的用户画像出现在高大上的PPT上：用标签云的方式绘制一个人的形状，或者在一个人物形象旁边列出若干人口统计学属性，以此来表达“用户画像”这个概念。

看上去非常酷炫，但是我得悄悄告诉你一个赤裸裸的真相：越酷炫的用户画像越没什么用。

**为什么会这样？根本原因是：用户画像应该给机器看，而不是给人看。**

既然是给机器看的，那么画像是不是酷炫、是不是像、维度是不是人类可读，都不重要。那它到底是个什么样子呢？先别急，听我慢慢讲。

一个推荐系统来到这个世界上，它只有一个使命，就是要在用户（User）和物品（Item）之间建立连接。

一般方式就是，对用户和物品之间的匹配评分，也就是预测用户评分或者偏好。推荐系统在对匹配评分前，则首先就要将用户和物品都向量化，这样才能进行计算。

而根据推荐算法不同，向量化的方式也不同，最终对匹配评分的做法也不同，在后面讲到具体推荐算法时你会看到这一点。

用户向量化后的结果，就是User Profile，俗称“用户画像”。**所以，用户画像不是推荐系统的目的，而是在构建推荐系统的过程中产生的一个关键环节的副产品。**

另外，通常大型推荐系统一般都分为召回和排序两个阶段，这个在后面我会专门讲到。

因为全量物品通常数量非常大，无法为一个用户（User）逐一计算每一个物品（Item）的评分，这时候就需要一个召回阶段，其实就是预先筛选一部分物品（Item），从而降低计算量，用户画像除了用于最终匹配评分，还要用在召回。所以，构建用户画像就要以这两个阶段为目的。

## 用户画像的关键因素

举个例子，我想去吃点夜宵，楼下有五家大排档，那么从推荐系统的思路来看，我怎么选择呢？

首先就是将五家大排档向量化，我暂定向量的维度有：

1. 价格，1~5分，最贵的1分，最便宜的5分；
1. 种类，1~5分，只烤馒头片的是1分，天上飞的、海里游的、地上跑的、地里种的都有就是5分；
1. 味道，1~5分，根据以前吃的，最难吃的是1分，最好吃的是5分。

现在每一个大排档都有一个向量，我自己也要有一个对应的向量，就是你有多看中这三个元素：

1. 价格： 1~5分，土豪不差钱就是1分，囊中羞涩就是5分。
1. 种类： 1~5分，早就想好吃什么了不在乎选择多不多1分，看看再说就是5分
1. 味道： 1~5分，只是果腹就是1分，资深吃货就是5分

这样一来就可以对五家大排档做匹配打分了，你很容易得出哪家大排档最适合。

假如我的向量是：

价格： 3<br />
<br>种类： 5<br />
<br>味道： 5

这就是一个大排档推荐系统的简单用户画像了，是不是很简单！

这里可以简单计算一下：每一个因素相乘后再相加，就得到每一个大排档的评分了。

接下来我来围绕这个大排档推荐系统的用户画像，看看建立用户画像的关键因素：**第一个是维度，第二个是量化。**

### **首先我先来说说“维度”。**

看前面这个例子，我定下来的几个维度：价格、种类、味道。这几个维度有三个特点：

**1 每个维度的名称都是可理解的。**

当我们去给每一个大排档计算评分时，想象你是一台计算机，你读取了用户画像的“价格”取值为3，再去取出一个大排档的“价格”评分，两者相乘，用户画像的维度“价格”和大排档的“价格”天然匹配上了。

因为是同一个名字；但是计算机很傻，你把大排档的这个维度换成“价钱”，它就不知道该如何是好了。

另一方面，对这三个维度，把两边同时换成1、 2、3或者a、b、c都是可以的，也不影响计算结果，计算机依然能够匹配上；所以用户画像的维度不一定需要人类能够理解，只要计算机能把两边对应上就可以了。

**2 维度的数量是我拍脑袋定的。**

假如是根据用户的阅读历史挖掘阅读兴趣标签，那么我们无法提前知道用户有哪些标签，也就不能确定用户画像有哪些维度，所以第二点也不是必须的。

**3 有哪些维度也是我拍脑袋确定的。**

因为这一点也不是必须的，用户画像的维度个数可以不用确定。理论上来说维度越多，画像越精细，但带来的计算代价也是很大的，需要权衡。

虽然这里以标签作为例子，但是你要注意，用户画像是向量化结果，而不是标签化。标签化只是向量化的一种，因为向量的维度不一定需要人理解。

### 其次，我来说说量化。

我们这里的量化都是主观的，而在实际生产系统上，用户画像每个维度的量化，应该交给机器，而且以目标为导向，以推荐效果好坏来反向优化出用户画像才有意义，像这里这个简单的例子，没有去管推荐效果而先行主观量化了每一个维度，是大忌。

所以用户画像的量化是和第三个关键元素“效果”息息相关的。前面已经说过，不要为了用户画像而用户画像，它只是推荐系统的一个副产品，所以要根据使用效果（排序好坏、召回覆盖等指标）来指导用户画像的量化。

## 用户画像构建的方法

再来整体说说怎么构建用户画像，按照对用户向量化的手段来分，用户画像构建方法分成三类：

**1. 第一类就是查户口。**

直接使用原始数据作为用户画像的内容，如注册资料等人口统计学信息，或者购买历史，阅读历史等，除了数据清洗等工作，数据本身并没有做任何抽象和归纳。这就跟查户口一样，没什么技术含量，但通常对于用户冷启动等场景非常有用。

**2. 第二类就是堆数据。**方法就是堆积历史数据，做统计工作，这是最常见的用户画像数据，常见的兴趣标签，就是这一类，就是从历史行为数据中去挖掘出标签，然后在标签维度上做数据统计，用统计结果作为量化结果。这一类数据贡献了常见的酷炫用户画像。

**3. 第三类就是黑盒子。**就是用机器学习方法，学习出人类无法直观理解的稠密向量，也最不被非技术人员重视，但实际上在推荐系统中承担的作用非常大。

比如使用潜语义模型构建用户阅读兴趣，或者使用矩阵分解得到的隐因子，或者使用深度学习模型学习用户的Embedding 向量。这一类用户画像数据因为通常是不可解释，不能直接被人看懂。

我会在后面专门讲解这些技术手段，以及它们在推荐系统中的实际使用。

## 总结

现在总结一下今天的内容：

<li>
用户画像到底是什么？它是对用户信息的向量化表示，为什么不向量化表示不行呢？因为没办法交给计算机计算，而且，用户画像是给机器看的，而不是给人看的。
</li>
<li>
用户画像的关键元素有哪些？维度、量化。用户画像是跟着使用效果走的，用户画像本身并不是目的。
</li>
<li>
通常构建用户画像的手段有哪几类？有三类，第一类只会查户口做记录，第二类就是堆数据做统计，第三类就是黑盒子看不懂。
</li>

你可以分享一下你现在正在经历的用户画像是什么样的，它有哪些优点和哪些问题，是不是为了展示给人看而构建的酷炫用户画像呢？欢迎留言和我一起讨论。感谢你的收听，我们下次再见。

<img src="https://static001.geekbang.org/resource/image/87/b0/873b086966136189db14874181823fb0.jpg" alt="" />
