This commit is contained in:
louzefeng
2024-07-11 05:50:32 +00:00
parent bf99793fd0
commit d3828a7aee
6071 changed files with 0 additions and 0 deletions

View File

@@ -0,0 +1,160 @@
<audio id="audio" title="24 | 推荐类产品(一):推荐系统产品经理的工作职责与必备技能" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/5d/18/5df61172a1a60962401ec754ffa19118.mp3"></audio>
你好,我是海丰。
从这节课开始我们进入AI项目实践篇的学习。这一模块我们会一起打造三类 AI 产品,分别是推荐类产品、预测类产品、自然语言处理类产品。在接下来的两节课中,我们先来完成一个电商个性化推荐产品的打造。
一说到主导推荐系统的建设,很多产品同学就会有类似的疑问:推荐系统不是研发或者算法工程师来主导的吗?在牵头建设推荐系统的过程中,产品经理参与度不是很低吗,怎么去主导一个推荐系统的建设呢?我们到底应该做什么呢?
今天,我就结合我曾经实现过的商品推荐系统,来和你说说如何站在产品经理主导的角度来牵头建设推荐系统,下节课我们再一起搭建一个 MVP 推荐系统。
虽然推荐系统目前有很多不同的应用场景,比如,社交场景的内容信息流推荐,有电商场景的个性化商品推荐,还有地图场景的路径推荐等等,但是它们的底层逻辑是类似的。因此,只要你跟着我一起弄明白了商品推荐系统的原理,其他的也就不在话下了。
## 你的业务适合做推荐系统吗?
我想先问你一个问题,你觉得任何业务都适合做推荐系统吗?我认为不是的,做推荐系统需要在业务发展现阶段满足三个必要条件,分别是有货、有人、有场景。那它们具体指什么呢?我们一一来看。
有货就是要保证**业务发展的现阶段供应链齐全,有足够的商品用于推荐**,可以让用户“逛”起来,如果商品少到用人工就可以应付过来,那你觉还有推荐的必要吗?
而有人的意思是指,做推荐系统的前提是**你的用户量要足够多,足够多的用户会带来足够多的用户行为**,这些是推荐系统的数据和特征的来源。除此之外,有人还包括你得有合适的人才来做这件事儿,最完整的配比是“算法工程师 + 研发工程师 + 数据工程师 + 产品经理”,当然 MVP 的推荐系统通过研发工程师 + 产品经理也能搞定。
最后是有场景,**做推荐系统要立足于业务的发展阶段**。这很好理解,因为业务在发展初期阶段正忙于系统功能的建设,所以推荐系统这类偏前端流量玩法的工作的价值凸显不出来。也就是说,我们需要有合适的产品场景以及完善的系统,才能“接住”这样的需求。
因此,**在推荐系统的建设上,你要考虑到人、货、场这三个因素**。
拿我们部门举个例子,当我们要做推荐的系统时候,我们正处在用户高速增长的阶段,各条业务线产品的基础建设、供应链,以及用户体验都有了一定的积累和沉淀,业务发展战略的工作重心也逐渐从后台的基础建设,转移到了前台的用户流量运营。为了提高长尾商品的曝光率、挖掘用户潜在意图、优化用户体验,以达到提高购买转化率的目的,我才临时组建了推荐系统团队,去做一个基于旅行商品的个性化推荐系统。
## 推荐系统的工作流程
在了解了推荐系统的业务背景之后,我们有必要深入理解一下推荐系统工作流程和原理,这是从事个性化推荐相关工作的产品经理需要掌握的必备知识点。
推荐系统将一个物品/内容推荐给用户主要会经历三个步骤,即商品召回、商品排序和综合调整。
<img src="https://static001.geekbang.org/resource/image/17/23/17d077d2ed6b4553b4d6b8198325ee23.jpeg" alt="">
举个例子,如果你是一个女生,你在浏览京东商城的时候,可能会关注一些美妆品牌,收藏一些奢饰品包包或者加购一些零食。这一系列的行为反映了你对某些商品的偏好,此时推荐系统就会根据你的操作行为大致勾勒出你的兴趣偏好。
与此同时,推荐系统发现京东网站上还有很多与你兴趣偏好相似的用户,你们有着类似的喜好,她们喜欢的东西大概率你也会觉得不错。因此,推荐系统就会统计你们在京东商城的操作行为(如浏览、收藏、加购、下单),计算出你们之间的相似度,这样推荐系统就筛选出那些同类用户喜欢而你还没有接触过的商品。**像这样推荐系统根据算法帮你初步筛选出你可能喜欢的商品的过程,叫做推荐系统的召回,你也可以把召回简单理解为商品的粗筛过程。**
在召回的阶段中,有很多成熟的策略和算法供我们选择,比如基于用户行为的协同过滤召回算法,基于内容标签的召回算法,以及当今很火的基于深度学习的召回算法。但是,不管你选择哪一种召回算法,它们最终返回的结果都是一个商品列表。
一般来说,采用一个召回算法,我们只能得到一个商品列表,这对于一个个性化的推荐系统来说远远不够。因此在实际工作中,**为了提高召回商品的覆盖率和多样性,我们往往会应用多种召回算法进行商品召回,这也叫做多路召回**。
那么问题就来了,采用多路召回得到多个商品列表之后,我们该怎么对这些列表进行排序呢?
这时就进入了推荐系统的**排序阶段**。具体来说就是将召回阶段获取到的多个商品列表结合多种因素进行考量比如业务指标CTR、CVR、GMV、UV、已经商品的多样性、覆盖率等融合成一个列表并精细筛选出Top100甚至更少的商品列表。
不过,商品列表在被展示给用户之前,还需要经过一道**调整的工序。其实就是对排序后的商品列表做运营策略上的调整**,如广告坑位填充、特定商品置顶,这部分就和实际业务策略息息相关了。
在经过这三个步骤之后,推荐系统才能将最终的商品列表展示到用户页面。
到这里,我们已经学完 了什么样的业务适合做推荐系统,以及推荐系统的工作流程。接下来,就到了咱们这节课的重头戏:如何牵头建设一个推荐系统。刚才我们在讲推荐系统工作流程的时候,其实过程中的关键环节我们已经提到了,也就是召回阶段、排序阶段和调整阶段,而产品经理的工作核心就是把控好这些关键环节。
## 推荐系统产品经理的工作职责
为了帮助你理解,我们还是通过一个案例,来帮助你深入理解建设推荐系统过程中,产品经理的工作职责。
假设你正在一家电商公司工作部门领导让你牵头做一个推荐系统它会应用在你们公司App“猜你喜欢”的页面中。当你拿到任务的第一时间应该是明确推荐系统的整体架构与职责分工这其实和大多数的产品设计初期并无二致。作为推荐系统的产品经理当然不需要像算法工程师一样死磕算法模型也不需要像研发工程师一样专注代码开发那我们的工作职责到底是什么呢
### 召回阶段的工作职责
**在召回阶段,产品经理要对召回策略进行评估**。实际工作中不需要产品经理设计召回策略,但你要了解常用召回策略的优缺点,以便根据实际场景做出合理的选择。
我们知道,召回就是对商品进行初步筛选,过滤出用户可能感兴趣的商品列表。之所以说“可能”是因为在召回这一步,为了提高覆盖率,我们通常会使用多个算法进行召回。在这些召回算法中,产品经理需要了解的召回算法有**基于用户行为的协同过滤召回算法**和**基于内容标签的召回算法**。下面,我们详细说一说。
**我们先来看基于用户行为的协同过滤算法User-based Collaborative Filtering。** 协同过滤的基本思想很简单,就是基于用户对商品的偏好找到和用户最相近的一批人,然后把这批人喜欢的商品推荐给当前用户。
比如说,现在有三个用户,分别是用户 A、用户 B 和用户 C以及四个商品分别是商品 A、商品 B、商品 C 和商品 D。我们对三个用户的行为进行分析发现用户A喜欢商品 A 和 C用户 B 喜欢商品 B用户 C 喜欢商品 A、C 和 D我们把这些信息整理到一个表格中。
<img src="https://static001.geekbang.org/resource/image/a1/24/a1b8b8c3e0e5090e28707b79a7b8ee24.jpeg" alt="">
通过这个表格,我们能很直观地看到,用户 A 和用户 C 都喜欢商品 A 和商品 C。由此我们可以猜测用户 A 和用户 C 的兴趣偏好可能相同。这个时候,我们就可以把商品 D 推荐给用户A。
这就是协同过滤策略的基本原理,在算法的实现上就是将用户对商品的操作行为,如浏览、收藏、加购和下单,[变成向量形式的数学表达方式](https://time.geekbang.org/column/article/322393),然后通过相似度算法,常见地有通过余弦相似度算法计算这些行为的相似度,最后得出一个相似度分数的排序。这样,就能找到和你行为最相近的其他用户,并过滤出他们喜欢而你没有接触过的商品。
通过相似度计算,我们可以得到和某个用户最相似的其他用户的一个列表。举一反三,我们就能得出和某个商品最相似的一个商品列表。
<img src="https://static001.geekbang.org/resource/image/a2/b7/a2a30a1d2fcc9100bf9d7a354528yyb7.jpeg" alt="">
那你可能想问了,协同过滤算法看起来就不简单,产品经理到底要掌握到什么程度呢?
产品经理不需要掌握如何实现协同过滤算法,但是需要理解它的原理。**协同过滤算法需要有用户行为数据作为基础,才能根据行为计算用户之间的相似度以及商品之间的相似度,在系统冷启动阶段很难实施,所以在冷启动阶段,我们还需要考虑其他的召回策略**,比如我接下来要说的基于内容标签的召回策略。
**基于内容标签的召回算法Content-based RecommendationsCB是最早被使用的召回算法**,在现在的工业界中仍然被广泛使用,因为它的效果很好。它的基本思想就是给用户和商品分别打标签,然后召回同类标签的商品,最终把它们推荐给用户。
比如说,现在有两个用户,分别是用户 A 和用户 B还有四部电影分别是《钢铁侠》《蜘蛛侠》《蝙蝠侠》和《神奇女侠》。我们给每部电影打上标签《钢铁侠》是“科幻片”和“漫威”《蜘蛛侠》是“科幻”和“漫威”《蝙蝠侠》是“科幻片”和“DC”《神奇女侠》是“科幻片”和“DC”。为了方便你理解我简化了标签的数量在实际工作中我们可能会给每一个电影打上几十甚至是几百个标签。
给电影打完标签之后,我们还要给每一个用户打上兴趣偏好标签,如用户 A 刚看完《钢铁侠》,就给用户 A 打上“科幻片”和“漫威”的标签,用户 B 看过《蝙蝠侠》,就给用户 B 打上“科幻片”和“DC”的标签我们把这些信息都整理到了下面的表格中你可以看看。
<img src="https://static001.geekbang.org/resource/image/3d/66/3d83cfeaeb1d0419387839613e86ed66.jpeg" alt=""><br>
通过这个表格,我们能很直观地看到,用户 A的偏好标签为“科幻片”“漫威”正好和《钢铁侠》《蜘蛛侠》的标签相同。很显然我们应该把《蜘蛛侠》推荐给用户 A再把《神奇女侠》推荐给用户 B。
这就是内容标签召回算法的基本原理具体的算法实现就是将用户的偏好标签和电影的标签变成向量形式的数学表达方式然后通过相似度算法常见地会通过余弦相似度算法去计算这些行为的相似度最后得出一个相似度分数的排序。这样我们就能找到和用户偏好最相似的TopN部电影了。
到这里,两种最常见的召回算法我们就讲完了。这两个召回算法作为推荐系统产品经理是必须要了解和掌握的。为了帮助你在实际工作中进行选择和评估,我把这两种算法的优缺点总结在了下面。
<img src="https://static001.geekbang.org/resource/image/64/18/64968d2b209a9a618679dfea81605d18.jpeg" alt="">
### 排序阶段的工作职责
知道了产品经理在召回阶段需要具备的能力和工作职责。下面,我们继续来看看,产品经理在排序阶段需要掌握哪些内容。
**在推荐系统的排序环节中,产品经理要以目标为导向来确定排序的目标**。如果产品是以提高 CTR 为目标,那么推荐系统可以使用 CTRClick-Through Rate点击率预估的方式来构建排序模型根据用户历史的浏览记录来预测用户的点击行为。
但在电商场景中,还存在 CVR、GMV、UV 等多个核心指标,所以产品规则并不是一个指标所能决定的,要根据业务目标来优化排序模型。也就是说,如果公司追求的是 GMV那么单纯地提升 CTR ,在一定程度上只能代表着用户体验的提升。
当然,你可以把这些指标的诉求抛给算法工程师,让算法同学给出 CTR 或 CVR 预估的方案。这个时候,你需要关注的就是如何评估算法同学交付的算法模型的性能和稳定性。
但是由于冷启动阶段用户个性化和行为化特征过少,如果我们把评估的重心定位在“针对用户的精准化预测”就是不合理的。这个时候,你可以让算法工程师给出冷启动阶段的排序模型,如果没有更优的方案,你也可以给出一套打分策略来进行商品列表的排序融合,这也是面向策略的产品经理必须要具备的能力。
下面我再通过一个例子来讲解一下排序阶段几种常见的排序策略。假如我们使用了3种召回策略分别得到了3个商品列表以及每个商品所在列表中的评分。
<img src="https://static001.geekbang.org/resource/image/eb/17/ebd80ae24ec3fbaa4253db41c23d0417.jpeg" alt="">
这个时候有3种排序策略可以供我们参考它们分别是**加权平均法、CTR 动态加权平均法和CTR 预估加权平均法。**接下来,我们就按照实现复杂度从易到难的顺序一一来看。
**首先是加权平均法,我又叫它综合加权平均法。** 加权平均法是统计领域内常用来综合指标的基本方法它的计算方法最简单。以商品A为例我们根据专家经验预先定义三种召回策略的权重0.4、0.3、0.2然后结合上面的评分列表让商品的权重分别乘上每一种策略的权重再除以策略权重之和就能得到商品的评分。那么商品A的评分就是$\left(0.9^{\star} 0.4+0^{\star} 0.3+0^{\star} 0.2\right) /(0.4+0.3+0.2)=0.4$。同理我们能够得到其他商品的评分按照字母顺序分别是0.62、0.66、0.29、0.09。
最终根据分数排序我们可以得到C&gt;B&gt;A&gt;D&gt;E。这种排序策略的特点简单明确每种排序策略可以根据业务规则预设权重。
**接着我们来看CTR 动态加权平均法。** 使用这种方法,我们需要每天离线计算三种召回策略的 CTR把它们作为每天更新的动态权重最终根据动态的权重做加权平均。CTR 动态加权平均法可以看成是加权平均法的一种改进,每种召回策略的 CTR =每种召回源的点击数 / 每种召回源的展现数。
**最后我们再来看CTR 预估加权平均法。** 它是通过 CTR 预估三种召回策略的权重,然后做加权平均。因为需要用到前两种方法,所以它的实现方法是最复杂的。
这些排序算法实现起来虽然有的简单、有的复杂,但它们没有优劣之分,只有适不适合,所以每一种我们都要掌握。除此之外,我们也要立足于自己所处的业务场景和业务下阶段的发展战略,来选择冷启动阶段的排序策略。
好了,推荐系统最核心的两个环节,召回和排序我们就讲完了。作为一个完整的推荐系统,它还要包括最后的调整的步骤,产品经理要与业务和运营人员充分沟通,以及结合实际的业务场景,把如广告商品、流量坑位、特殊扶持等相关的运营策略结合到推荐系统中。
因此,产品经理还有一个非常重要的工作职责,那就是评估一个推荐系统的好坏。
### 推荐系统的评估
评估一个推荐系统有很多指标比如准确率、召回率、覆盖率、多样性、体验度等等。这些指标看起来多但是常用的有4个。
首先是**准确率**它用来判断模型预测的商品列表有多少是用户感兴趣的。举个例子我们认为用户点击该商品就表示用户对其感兴趣。通过推荐系统我们给用户推荐了10个商品其中用户点击了5个商品那么推荐系统的准确率就是5/10=50%
其次是**召回率**,即用户感兴趣的商品有多少是模型预测出来的商品。举个例子,用户一共点击 了10个商品其中有8个是通过推荐系统推送给用户的那么推荐系统的召回率就是8/10=80%
然后是**覆盖率**是说推荐系统可以覆盖到多少用户或者说推荐系统可以给多少用户进行商品推荐。假设我们有1000万的旅行用户推荐系统可以为其中900万用户进行推荐那么覆盖率就是900/1000=90%
最后是**多样性**,推荐系统为用户推荐商品的类型应该保持多样性。这怎么理解呢? 我们会发现,如果我们在某电商平台购买了薯片,这个电商平台后续就会一直给我们推荐薯片或者薯条产品。从短期来看,这种推荐结果有助于提高用户转化,但从长期来看,它牺牲了用户的整体体验。因此,我们在保证短期收益的基础上也要考虑长期的用户体验。
除了上面比较通用的评估指标外产品经理还需要根据业务现状提出预期收益大多数的推荐系统衡量指标都是CTR但是我不建议你直接使用这个指标来定义预期收益。你可以从业务的建设阶段来设定收益指标我在下面给出了业务发展的三个阶段提出推荐系统的预期收益的一般方法你可以作为参考
- **对于业务建设阶段**可以从流量的增长入手比如以DAU、MAU为核心指标衡量业务的增长
- **对于业务发展阶段**可以从流量的转化入手比如以CTR、CVR为核心指标衡量流量的转化率
- **对于业务成熟阶段**可以从GMV入手比如以UV价值、RPM等为核心指标衡量用户价值。
## 小结
今天,我们讲了推荐系统的工作流程,以及产品经理在推荐系统中需要具备的能力和工作职责。为了帮助你理解和记忆,我总结了一张思维导图,放在了下面。
<img src="https://static001.geekbang.org/resource/image/c0/b4/c021847a37e0d6baab81eda39d2cd5b4.jpg" alt="">
除此之外,我还想再和你强调一下,作为产品经理,我们要重点掌握推荐系统各个环节的工作内容,每个环节用到了哪些技术,以及它们的原理。通过理解它们,来进一步掌握建设推荐系统时一个优秀产品经理必备的能力和工作职责。
## 课后讨论
如果立足于你现在的业务场景,让你牵头建设一个推荐系统,你觉得对你来说最大的挑战是什么?
欢迎把你的答案写到留言区和我一起讨论,我们下节课见!

View File

@@ -0,0 +1,151 @@
<audio id="audio" title="25 | 推荐类产品从0打造电商个性化推荐系统产品" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/63/da/631e6d6724daa72e96e39597545a67da.mp3"></audio>
你好,我是海丰。
假设,你是一家电商平台公司的产品经理,公司经过一年多的供应链打造和用户运营的投入,业务已经发展到了一个高速增长的阶段。
但问题也随之暴露了出来:之前产品首页是人工配置选品的,每个用户在浏览 App 的时候,看到的都是千篇一律的商品。这种无法体现用户对于商品兴趣的偏好情况,不但削减了用户的体验,也没法让供应商满意,因为随着接入的供应链多了起来,供应商也希望自己的商品能有更多的曝光。
为了尽快解决这个问题老板决定让你牵头打造一个个性化电商MVP推荐系统 Minimum Viable Product最小可行性产品。已知推荐系统的建设可以分为 4 个重要的阶段,分别是需求定义、数据准备、技术实现和评价标准。
那么,每个阶段产品经理都要做些什么呢?接下来,我就和你详细说说。
## 需求定义
在需求定义环节我们最重要的工作就是产出需求文档。具体来说产品经理需要做的有3件事分别是交代需求背景、描述交互逻辑以及明确预期目标。下面我们一一来说。
### 1. 构建需求背景
在需求背景部分,**我们要重点交代清楚为什么要建设推荐系统,让协同部门能够理解背景,和我们对齐这个项目的价值**。一般来说,我们会和业务方进行频繁沟通,发掘他们最核心的诉求。那么,今天这个例子中的核心诉求其实就是要展现所有用户对商品的偏好,避免“千人一面”。
### 2. 描述交互逻辑
接下来,我们要**对推荐系统的交互逻辑进行描述,主要包括描述用户的动线流程、模型诉求和产品功能上的逻辑**。
因为我们这次构建的是MVP推荐系统所以不需要通过算法模型来实现所有的推荐逻辑而是分成两部分一部分通过算法进行推荐另一部分通过运营系统配置进行推荐。
那再说回到这个推荐系统产品的交互逻辑上。
首先,当用户进入商品主页的时候,推荐系统会检查是否已存在当前用户的画像信息。如果存在就获取用户的商品偏好标签,执行商品召回的算法逻辑,如果不存在就把运营系统配置的商品数据展示给用户。
然后进入商品召回模块,由于只需要打造一个 MVP 的推荐系统,因此我们只设计一种召回策略就可以了,如“基于协同过滤的召回策略”。这样,推荐系统就不涉及多路召回融合的问题,在产品需求中也就不用涉及“排序阶段”的需求了。
所以我们直接进入“调整阶段”。这一阶段,推荐系统需要通过规则,将算法召回的商品列表和运营系统配置的商品列表进行融合。常见的运营配置有,商品在第一周上新期内需要在展示列表中置顶等等。
最终,推荐系统会将融合后的商品列表展示给用户。完整的交互逻辑如下,你可以看看。
<img src="https://static001.geekbang.org/resource/image/d9/61/d9df49cff252df915e96c6613e022061.jpeg" alt="">
### 3. 制定预期目标
**最后就是制定电商推荐系统的预期目标了,这个目标是根据业务的实际情况而设定的。有了目标就要有衡量目标的指标,** 虽然大多数推荐系统的衡量指标都是 CTR但我建议你从业务的建设阶段来设定衡量指标就像我上节课讲的那样。这里因为我们的业务发展属于成熟阶段所以设定的衡量指标为 CVR。
<img src="https://static001.geekbang.org/resource/image/69/53/69da01403bca82fcc771f2ac2be2be53.jpeg" alt="">
总的来说,产品经理要能够清晰地设计需求,需求定义要明确需求背景、描述交互逻辑,以及制定预期目标,那么如何做才是清晰的设计需求呢?我为你准备了一份推荐系统需求模板,你可以作为参考。
<img src="https://static001.geekbang.org/resource/image/a3/ce/a34cedfb0f237d5ec308050ea1a7b5ce.jpg" alt="">
## 数据准备
接下来是数据准备阶段。在推荐系统中,如果用户在某个环境下对某个商品做了某种操作,我们就认为这个操作表达了用户对这个商品的兴趣偏好。推荐系统要做的就是挖掘这个偏好,然后给这个用户推荐相同偏好的其他商品。因此,数据对于推荐系统是非常重要性。我们要做到的就是在搭建推荐系统之前,完成大量数据的收集和整理工作。
**这些数据的来源一般包含三类:业务数据、埋点日志和外部数据。**并且每个来源的数据都有着详细的数据分类,这些数据会应用于机器学习的离线预估模型训练和实时模型预估计算。具体内容我都总结在了下面的表格中,你可以看一看。
<img src="https://static001.geekbang.org/resource/image/18/bf/18d364f0b3d5ef4ff8328751bc51e8bf.jpeg" alt="">
像是“用户数据”、“商品数据”和“上下文环境数据”本来就是存在于数据库中的,产品经理只需告诉算法同学数据源在哪里即可,后续算法同学会自行抽数。我们唯一提前要进行收集的就是用户的前端埋点日志,如果系统之前没有做过埋点,那么势必会影响推荐系统的准确性。
**因此,在搭建推荐系统之前,我们要通过埋点尽可能地收集用户的前端行为日志。**
那么问题来了,我们都需要埋哪些数据,把它们埋在哪些页面呢?这需要产品经理根据自己对业务的理解,整理出一套页面埋点文档,为算法同学提供数据支持。虽然根据业务的不同,具体的埋点策略会有差别,但我还是根据经验梳理出了一些用户行为与商品信息的数据埋点字段,供你参考。
首先是用户行为数据埋点字段:
<img src="https://static001.geekbang.org/resource/image/69/18/695c03ca4ae792c5d3fc28f103257718.jpg" alt="">
然后是商品信息数据埋点字段:
<img src="https://static001.geekbang.org/resource/image/d9/1f/d9719bc795cb43a5a9f0772e5c66071f.jpg" alt="">
有了数据之后,算法同学就可以根据数据建立特征工程,然后我们就可以进入到模型构建的环节了。
## 技术实现
从项目管控上来看,在推荐系统的项目建设过程中会涉及两波技术团队,分别是算法团队和工程团队,他们是并行进行的。 算法工程师在构建模型的同时,研发工程师也在进行系统功能的开发,最终系统工程与算法模型会通过 API 接口进行通信,这需要双方提前约定好接口协议。**因此作为产品经理,我们除了要关注算法同学的模型构建,同时也要关注推荐系统工程的整体设计。**
具体来说,对于系统工程的整体设计,产品经理要关注推荐系统进行一次完整推荐会涉及哪些系统模块,它们和算法模型是怎么交互的,数据流向什么样,产品的关键逻辑是在哪个模块中实现的。
下面,我们就来看下工程系统和算法模型的数据架构图,图中的箭头都是数据流向,方向是从左往右。
<img src="https://static001.geekbang.org/resource/image/99/35/99d1fd9744353b4e05fc9afyy61d8535.jpeg" alt="">
从架构图中,我们可以看到**工程系统在进行推荐的时候先后经过3个模块分别是召回模块、排序模块和调整模块每个模块都调用了算法模型对应训练好的机器模型提供的服务。**
在召回模块中,系统调用了算法模型的“离线召回模型”和“实时召回模型”,它们都做了哪些事儿呢?
首先是实时召回,实时召回模型根据历史的用户行为数据,集合当前用户实时的浏览行为,计算并更新用户召回商品的列表信息。实时召回的计算是秒级运算,比如你在京东 App 上搜索华为手机后Feed 流就会推荐给你很多其他品牌手机。
离线召回则是每天通过定时脚本触发模型的计算,如全量更新用户的偏好信息,计算热度榜单等等不要求实时性的数据,这些数据会被存储到数据库中。这样,当工程系统调用某个用户的召回商品列表的时候,推荐系统直接查询数据库就能得到,不需要再计算一遍,从而提高了系统性能。
说完了召回模块,下一个是排序模块。 排序模块就比较好理解了推荐系统会直接调用模型提供的排序服务。这里我们需要注意的是在系统工程中排序服务可以通过规则如加权平均、CTR 动态加权平均)的方式实现,也可以基于机器学习模型的 CTR 预估方式实现。至于,具体选择哪种技术策略,我们根据业务现状和技术驾驭能力来决策就可以。
然后是调整模块,调整模块是对排好序的商品列表进行运营策略上的调整,它和业务规则强相关,我们就不做过多介绍了。最后,推荐系统会把最终的商品列表返回给产品客户端。
这样,整个工程上的数据流向我们就讲完了,但这只是一个最为简单的 MVP 推荐系统的构建。在实际情况下,技术同学还需要考虑很多非功能性的需求,比如系统响应时长、系统稳定性等等,但产品经理的重点还是要放在“召回”、“排序”和“调整”上面。
## 评价标准
最后,也是业务方最为关注的,那就是如何评估推荐系统给业务提升了多少效果。评估方法并不难,产品经理可以通过 AB 测试的方式进行评估,推荐系统要想做 AB 测试,有三点我们必须要注意:
第一,**推荐系统的工程代码要提前准备两套实现方案**,一套千人一面,一套千人千面;
第二,**推荐系统要能进行 AB 测试的切量配置**,也就是多少流量流向改造前的系统,多少流量流向改造后的系统,当然这个功能要让系统工程研发同学给予支持;
第三,为了查看 AB 测试的效果,对比 CTR、UCTR、转化率等指标我们要生成最终的效果统计报表。**但在 AB 测试切量的时候,我们要注意打上流量标志位,标识是哪种方案。**这样在统计报表的时候,我们才能分别计算指标,进而比较推荐系统在原有系统之上做到了多少提升。
除了这三点,我也把做 AB 测试时常见的几个错误总结在了下面你在做AB测试的时候要尽量避免。
<img src="https://static001.geekbang.org/resource/image/a8/4e/a85ca38599e44b275bfcc632cb94c74e.jpeg" alt="">
这些其实还不是我们做AB测试的难点实际的难点在于产品经理对指标的分析过程以及最终给出的迭代计划下面我们就来详细讲讲。
因为我们的业务比较成熟,并且业务方的 PKI 是 GMVGross Merchandise Volume成交总额所以我们选用了 CVR 作为推荐系统的衡量标准。CVR的计算方式是转化数/点击数,也就是最终点击商品并且购买的转化率,它通常在广告领域用的比较多。这个指标和最终的 GMV 直接相关,所以也受到业务方的重点关注。那么,对于得到的指标,我们该怎么分析呢?
下表就是推荐指标的汇总,我们按照 0~3、3~6、6~9 对商品进行了分段。
<img src="https://static001.geekbang.org/resource/image/a8/ef/a89dc72627249a33f79d1452e8c291ef.jpeg" alt="">
对比之下,我们可以看到,“传统方式”的 0~3 分的长尾商品没有曝光,这是因为我们之前一味地追求 GMV所以运营同学对于低评分的长尾商品不做展示把所有资源都倾向于头部品牌商的商品让中小商家在平台上无法生存。**因此从长远的角度来看一味的追求GMV并不健康。**
除此之外,在对于推荐系统的迭代计划中,产品经理至少还要对不同人群、不同位置设置不同的评价指标,最后再综合所有的评估指标来优化整体数据指标。具体操作时的注意事项,我都总结在了下面的表格中,你可以看看。
<img src="https://static001.geekbang.org/resource/image/5d/f4/5d5276ccd12c29684ef027a4d5fca3f4.jpeg" alt="">
## 小结
今天我带你一起走完了一个个性化MVP推荐系统构建的全流程。这其中产品经理需要关注的内容可以从三方面概括分别是能力、技术和岗位。
**能力可以总结为三点:**
第一,我们要能够清晰地设计需求:需求定义要明确需求背景、功能描述,以及预期的收益。<br>
第二,我们要能够理解数据:在推荐系统的数据准备阶段,产品经理要关注用户前端的埋点日志,提前设计埋点,以及给研发工程师提需求收集行为日志。<br>
第三,我们要能够对通过 AB 测试来评估推荐系统的效果,然后做出分析再给予持续的迭代计划。
**关于技术,我们要重点掌握推荐系统中召回和排序模块的策略。** 这不仅包括我们这节课说的,工程系统进行一次完整推荐的时候各个系统模块的工作原理、交互逻辑,还有我们上节课讲的常用协同过滤算法和相似度算法的原理。
**关于岗位,无论你要转型成为哪类产品经理,都要时刻关注目前互联网公司中的招聘。**对于推荐产品岗位,除了要知道我们今天讲的内容,你还要注重积累推荐策略、推荐效果数据分析,以及产品的优化升级方面的经验。我在下面列举了一个市场上推荐产品经理的 JD你可以参考下。
<img src="https://static001.geekbang.org/resource/image/53/71/53c9156e4aaf7cae45dec3c5db1d4371.jpg" alt="">
最后,今天的内容比较多,为了帮助你理解,我梳理了一个知识脑图,你可以利用它查缺补漏。
<img src="https://static001.geekbang.org/resource/image/f2/fd/f240b3737a516134d43aea6f7a9baafd.jpg" alt="">
总的来说推荐系统是一个需要长期根据效果进行迭代的产品产品经理要能做到以“Zoom Out”的眼光看待系统的长远发展。因为极有可能系统在上线初期的效果反而不如传统运营的手动配置策略但是作为产品经理我们要有信心并且要能通过持续的 AB 测试分析和迭代来逐步优化它的最终效果。
## 课后讨论
结合你所处的业务场景,对于推荐系统的评价标准,你觉得哪些评价方法更为适合?
欢迎把你的答案写到留言区和我一起讨论,我们下节课见!

View File

@@ -0,0 +1,88 @@
<audio id="audio" title="26 | 预测类产品(一):用户复购意向预测的底层逻辑是什么?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/a8/70/a8bc2796c4ba036056ef9a962c2ffb70.mp3"></audio>
你好,我是海丰。
一天你们公司的运营同学来找你“诉苦”说“哎现在618和双11的活动真是越来越难做了很多用户都只是在促销期间薅一次羊毛之后就再也不消费了。我们的运营成本越来越高公司的ROI投资回报率却不见提升。看来我这个月的奖金又要泡汤了。”
听了他的话,你发现解决这个问题的关键,就是提升用户的复购意向也就是用户复购率。那么,作为产品经理,我们该怎么帮助他解决这个问题呢?
## 如何理解复购率?
刚才我们说,解决这个问题的关键就是提升用户的复购率。为什么这么说呢?别着急,我们先来学习几个基本的概念。
首先是复购,复购简单来说就是客户重复购买商品的次数(购买次数 ≥ 2。有复购就有复购率复购率=重复购买人数/总购买人数。一般情况下,业务同学在计算用户转化(用户转化体现在精分维度就是销售额)的时候会用到复购率这个指标,它的计算公式:销售额 = 流量 × 转化率 × ARPU客单价 × 复购率。
其次我们来了解一下什么是盈利只有当用户的消费金额大于商品成本以及获客成本的时候才叫盈利。举个例子你们公司售卖的商品是帽衫它的客单价是100元成本是50元而你们的获客成本也是50元。这个时候如果有100 个新客户进来购买了商品,你们盈利了吗?显然没有。但如果这 100 个新客户中有 50 个人又进行了二次购买这个时候你们就是盈利的因为这一次你们的获客成本是0元盈利了2500元。
**因此,提升复购率就是在提升商家的盈利能力。** 那我们该如何提升用户的复购率呢?
## 如何提升用户复购率
根据公式:复购率 = 重复购买人数/总购买人数,我们知道,**提升复购率的重点就在于想办法增加复购人数,而提升复购人数的基础就是做用户生命周期管理**。这是因为,要想提升复购人数,我们就要了解哪些用户是可以成为复购用户的高潜用户,而发现高潜用户的前提则是对用户进行分层。
更具体点来说,**产品经理只有了解业务发展各个时期的用户特点,才能保证在不同阶段制定出适合的产品策略,来激发新用户的加入、激活老用户的复购,进而提升客户的转化和留存。**
也因此,对于产品和运营同学来说,如果理解和掌握了用户生命周期管理的底层逻辑,再把它应用在自己的产品上,就能在很大程度上拉升各方面的产品指标。同时,这项能力在市场上也非常稀缺,我也希望它能成为你面试和工作上的助力。
接下来,我们就来讲一讲用户生命周期的基本概念,用户周期管理的具体操作,以及根据用户生命周期管理来制作用户复购模型的底层逻辑。
### 什么是用户生命周期?
如何定义用户生命周期呢?我们以电商平台为例,像京东这样累计了近 10 亿用户消费行为的电商平台,可以根据用户在商品品类上的历史购买行为的变化,**通过规则将用户划分为低潜期、高潜期、引入期、成长期、成熟期、衰退期和流失期**,如下表所示。
<img src="https://static001.geekbang.org/resource/image/0c/b3/0c70587fc62dea1fe7c8277f3ab096b3.jpeg" alt="">
我们可以基于如上的分层规则对用户生命周期进行划分,也可以根据我们[第 15 讲](https://time.geekbang.org/column/article/333078)中基于聚类分析的方式发掘用户价值分层 RFM来最终定义用户的生命周期。
为了直观地表示用户生命周期,我们可以构建一个坐标系,它的横轴是用户使用电商平台的时长,纵轴是用户价值,根据用户行为和品类关系,我们可以绘制出一条曲线。具体的示意图如下:
<img src="https://static001.geekbang.org/resource/image/62/bf/62a057cd2602fdcac876cbe5dc79ffbf.jpeg" alt="" title="用户生命周期示意图">
最终,沿着这条用户生命周期曲线,我们可以把用户分成三大阶段六大时期,具体的划分情况如下表:
<img src="https://static001.geekbang.org/resource/image/ea/52/eae8b95f16cb7b81c32e3cd20d554152.jpeg" alt="">
### 如何管理用户生命周期?
知道了什么是用户生命周期,那什么是用户生命周期管理呢?
所谓用户生命周期管理,其实是一套通用的运营体系。**具体来说,就是在用户接触产品到离开产品的整个生命周期中,通过数据分析,以及一些运营手段来提升各阶段用户的价值。**比如,对高潜用户做转化策略,对流失用户做挽留策略,**最终的目的都是提升平台用户的“正向跃迁率”,也就是其他阶段用户向成熟期阶段跃迁的比率。**
当然,很多产品和运营同学经常会进入一个误区,那就是将促销力度过度聚焦于成长、成熟期的“高净值用户”。这样很可能造成“僧多粥少”,以及单客户竞价过高的局面。那么,**基于生命周期模型更科学的分析视角是,跳出“阶段红海”(成长期和成熟期的用户),进入“阶段蓝海”(非成长期和成熟期的用户)。** 为什么这么说呢?
<img src="https://static001.geekbang.org/resource/image/61/98/6187ff4c0be3224eda1f199161bdc198.jpeg" alt="" title="用户生命周期运营重点">
从上面图中我们发现成长、成熟阶段也就是阶段红海的用户购买转化率较高毫无疑问它们是平台大盘运营上的重点。其他蓝海阶段的GMV比较低如果生命周期模型针对阶段蓝海的用户的运营就可以很显著提高用户的复购转化。并且在用户竞价不变的前提下转化“阶段蓝海”的用户才能让品类投放实现更大幅的 ROI 增长。
**所以,我们此时应该做的,就是提高“阶段蓝海”的用户跃迁率,将营销视角拓展到全量的“未来高净值用户”,这样电商平台中的品类或品牌会获取更多细分人群上的差异化竞争优势。** 这一步也叫做提升平台用户的正向跃迁率。它的公式是:正向跃迁率 =其他阶段向成熟期跃迁的用户数/本次运营的总用户数。
那么,问题又来了,像京东这样大的电商平台,在运营实践的过程中,我们往往会发现原来的低高潜用户基数庞大,所以在分析人群结构和圈选人群的时候就会非常困难,那该怎么精准地对“阶段蓝海”用户做运营呢?更进一步来说,我们该怎么对“阶段蓝海”用户做复购策略,提高他们的复购率呢?
### 提升用户复购
一般来说,我们会针对高潜期和引入期的用户做复购,因为处于这两个阶段的用户在“阶段蓝海”的用户中最容易形成复购。选定了人群,接下来我们就要找出有哪些因素会影响用户的购买转化。具体来说,我们可以从两个方面来考虑,分别是用户维度和商品维度。
**首先,用户维度方面的影响是指,不同用户的性别、年龄、喜好、月收入、网购习惯等会影响用户对品类的复购行为。我们可以从用户画像和用户偏好来考虑**。比如说,大部分女性客户对自己喜爱品牌的服饰、化妆品、包包购买的频率会更高,而男性用户更容易购买自己喜爱品牌的数码产品和鞋子。
**其次,商品维度的影响是指商品的品类不同对用户复购行为的影响。**
比如说,小家电、数码产品这种类目属性往往就决定了它们的复购率会偏低,而图书、服装这些类目的复购率则相对偏高。不过,要想准确识别商品品类未来的复购用户并不简单,因为每个类目和客户都有其自身的内在特点。因此,通过数据和算法进行预测用户复购概率的时候,我们往往也会基于特定的品类。
最后,我们构建用户复购模型,也就是找到用户特征与商品品类之间的关联关系,再通过分类算法计算出某个用户在品类下的 CVR。那具体怎么做呢下节课我们再详细来讲。这节课我们先理清制作用户复购模型的底层逻辑就可以了。
## 小结
提升复购率就是在提升商家的盈利能力,想要提升复购率,我们就要做用户生命周期管理。用户生命周期管理告诉我们,在面对增长困难、获客成本增加的情况下,我们要重新梳理用户运营的本质与核心,跳出急功近利的“阶段红海”,而转向细分阶段的“阶段蓝海”,从而海阔天高、破浪长风。
我们首先要做的就是定义用户生命周期,手段有两个:
- 基于阶段规则定义用户分层,分别是低潜期、高潜期、引入期、成长期、成熟期、衰退期和流失期;
- 基于聚类分析定义用户分层,也就是基于聚类分析的 RFM 用户价值划分。
在定义完用户生命周期后,我们要对“阶段蓝海”的用户做用户行为分析,构造算法模型,找到预估 CVR 最高的用户。
## 课后讨论
最后,我想请你想一想,在你的业务场景中,有哪些切实有效的精细化运营手段?
欢迎在留言区分享你的故事,我们下节课见!

View File

@@ -0,0 +1,155 @@
<audio id="audio" title="27 | 预测类产品从0打造一款预测用户复购意向的产品" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/9b/16/9b27058f26b10ecd4803e126607dea16.mp3"></audio>
你好,我是海丰。
上节课,我们学习了帮助运营同学提升用户复购意向的底层逻辑,并在课程结尾的时候说了,最终要找到商品和用户之间的关联关系,然后通过分类算法计算出某个用户在商品品类下的 CVR进而训练模型。这个模型就是用户对商品品类的复购模型它具体该怎么构建呢
这节课,我们一起来打造一个预测用户复购意向的模型,来真正帮助运营同学解决问题。
## 开发流程
机器学习项目开发的一般流程是**数据准备、特征工程、模型训练、模型验证,以及模型融合**。下图就是一个机器学习项目流水线式的开发流程,我们今天要实现的高潜用户复购模型也是基于这样的流程来构建的。
<img src="https://static001.geekbang.org/resource/image/9f/a1/9f9f6448f2b1c45c85a0f0a4574fb9a1.jpeg" alt="">
## 数据准备
在进行特征构建和模型开发之前,我们需要对数据的情况进行了解,你可以参考[第 5 讲](https://time.geekbang.org/column/article/322733)中讲过的,产品经理在数据准备环节中需要做的工作。另外,我也总结了本阶段产品同学需要考虑的几个问题:
- 数据源来自哪里?即数据如何获取,这里包括内部业务数据、跨部门集团内数据、外采数据。
- 数据量是否充分,是否还要外部数据补充?
- 数据是原始数据还是加工后的数据?如果是二次加工后的数据,还需要了解数据加工方法。
- 数据的业务背景是什么,其中每个字段代表什么含义?
- 数据字段是什么类型?每个字段都属于什么分布?
<li>数据本身是否有噪音,是否需要进行清洗和降维?<br>
...</li>
## 数据明细
那我们今天要讲的这个案例它的数据样本主要抽取了“618”之前和之后 3 个月内,匿名用户的购买行为日志数据、用户画像数据,以及是否为复购用户的标签。这些样本数据会以用户行为日志表、用户属性特征表,以及用户复购统计表的形式展示出来。
下面,我们就来详细说说,这三张数据表应该包含哪些信息。这样,当在实际工作中遇到需要构建复购模型项目的时候,你就可以参考我整理的这三张数据样例表了。
**首先,我们来看用户行为日志样例表。**
<img src="https://static001.geekbang.org/resource/image/b2/86/b270c0a0b021da0f4e96d40a958c9486.jpeg" alt="">
其中用户行为动作取值范围是0、1、2、3。其中0 表示点击、1 表示加购、2 表示下单、3 表示收藏。
**然后,我们来看用户属性特征样例表(用户画像信息)。**
<img src="https://static001.geekbang.org/resource/image/6f/a0/6f8e12d6b12bac26050db1e066fd1ea0.jpeg" alt="">
这里我要补充说明两点用户年龄的取值范围是1、2、3、4、5、6。其中1 表示0-15、2 表示16-25、3 表示26-35、4 表示36-45、5 表示46-55、6 表示56及以上用户性别的取值范围是0、1、2。其中0 表示女性、1 表示男性、2 表示未知。
**最后,我们来看用户复购统计样例表。**
<img src="https://static001.geekbang.org/resource/image/f8/62/f8c104be2edc9243aab4bed1ac6e4762.png" alt="">
这里我要补充说明一点用户年龄的取值有0或者1。其中0 表示非重复购买、1 表示重复购买,测试集此字段为 Null。
## 数据处理
有了这些数据之后,接下来我们就要根据这些用户的行为和画像信息,进行数据处理的工作。
我们首先要做的,就是**通过整体数据的分布情况,来判断正负样本的均衡程度**。在实际开发过程中,我们通常会利用 Python 的 Matplotlib 库来分析数据的分布。下图就是正负样本的数据分布图。
<img src="https://static001.geekbang.org/resource/image/ab/yy/ab777f7037c0538082993e5d2a5f41yy.jpeg" alt="">
从图中我们可以看出,样本数据的分布是不均衡的。这个时候,我们就需要采取一些采样方法来处理样本数据,常用的有**随机欠采样、随机过采样、基于聚类的过采样**。
<li>
**随机欠采样就是减少分类中多数样本的数量**,如减少 label = 0 的样本数量,再重新和 label = 1 的样本组合成新的训练集。
</li>
<li>
**随机过采样就是复制分类中少数样本的数量**,如复制多份 label = 1 的样本的数量,再重新和 label = 0 的样本组合成新的训练集。
</li>
<li>
**SMOTE 算法是基于随机过采样的一种改进方法。**由于随机复制少数样本增加样本训练的模型缺少泛化能力,因此 SMOTE 算法采用对少数样本进行人工合成的方式,做法就是计算少量类别的样本与所有样本点的距离,找到最近的 k 个样本,再通过公式数学公式: $ x_{newj} \ = \ x_{i} \ + \ rand(0, \ 1) \ * \ (x_{j} \ - \ x_{i}) $生成新的样本。
</li>
当然,影响复购的因素不只有整体数据分布的影响,还有如店铺、用户、性别、年龄等因素。因此在实际的开发中,我们还需要逐一对采样样本中的每一个因素进行数据可视化操作。如果发现样本数据不均衡就重复刚才的操作,如果处理不了就只能放弃了。
在处理完不均衡样本数据分布之后,我们还需要查看采样数据中各因素的缺失值情况,比如查看年龄值缺失的情况、性别值缺失的情况,或者用户行为日志数据缺失的情况。具体的操作同样是通过 Python 程序进行分析,具体代码产品经理不需要过度的关注,我也就不再详细说了。
## 特征工程
接下来,我们就可以开始构建特征工程了。特征工程的构建流程我们在第 06 讲已经讲得很清楚了。简单来说就是,对数据准备环节中抽取出来的样本数据进行数据清洗、特征提取和特征选择,并最终构建好用于模型训练的训练集和测试集数据。
下面,我们就对复购模型进行关键的基础特征和统计特征的抽取操作,数据特征抽取的思路可以从三个角度进行。
- **统计用户历史行为**:对用户历史行为按照 userpin 进行分组,然后统计用户在所有店铺中,对商品、品类、品牌的购买、点击、收藏和加购等行为的次数。
- **统计店铺历史行为**:对用户历史行为按照 vender_id 进行分组,然后统计所有用户在此店铺上的行为次数。
- **统计用户在店铺上的历史行为**:对用户历史行为按照 user_id 和 vender_id 进行分组,统计每个单独的用户在此店铺上的行为次数。
最终,在复购模型的特征构建中,基于统计次数的特征提取,我们至少能提取出如下表中这些特征信息:
<img src="https://static001.geekbang.org/resource/image/27/31/27d5380a1cf39dcacaa1ba54ca9cfc31.jpeg" alt="">
当然,除了简单地统计个数信息,我们还可以基于组合特征以及文本信息进行特征的提取。常见的做法是,把一阶离散特征两两组合构成高阶的组合特征,这么做目的就是提高复杂关系的拟合能力。比如,我们可以把中文、英文这样的语言和电影、电视剧这样的类型,组成“中文电影”、“中文电视剧”、“英文电影”、“英文电视剧”这四个特征。
到此,我们就构建好复购模型的特征工程了,再结合用户对商家店铺的购买标签,我们就可以进行下一阶段模型训练的工作了。
## 模型训练
首先我们要知道,用户重复购买预测是一个二分类问题,只要是分类问题就是属于有监督学习,所以我们的复购模型就是一个有监督的二分类学习问题。接下来,我们就可以根据提前准备好的训练集数据和测试集数据,通过分类算法进行模型的训练了。
<img src="https://static001.geekbang.org/resource/image/b4/e9/b4b3a64c0a1c9d6baf3c0569d17d59e9.jpeg" alt="">
对于算法的选型我们可以选择之前课程中学习的算法如逻辑回归、K 近邻、决策树、随机森林等等。每一个算法都可以训练出一个 数学公式: $ x $(样本)到 数学公式: $ y $(标签)的函数,然后在使用的过程中,我们只需要通过这个函数导入一个未知的 数学公式: $ x $,就可以预测出对应的 数学公式: $ y $ 标签的概率,然后我们再将概率大于 0.5 (如果要求更高的复购概率可以提高 y 值)的 数学公式: $ y $ 值表示成复购,将概率小于 0.5 的 数学公式: $ y $ 值表示成不复购。
接着,我们再通过集成学习(如加权投票法)将所有模型的预测结果进行加权平均,就能融合成最后的预测结果。
## 模型验证
最后,对于复购模型的预测结果,我们需要进行验证和评估。
这里,我们主要是对模型的性能进行评估。我们之前讲过,对于分类模型的性能评估,我们一般会使用到**混淆矩阵、KS、AUC并且混淆矩阵的结果还要结合准确率、精确率和召回率和F1值一起来看**。
下面,我们就分别说说对于复购模型来说,这些指标该怎么求。首先,我们来说混淆矩阵。假设,这个复购模型对 15 个样本进行了预测,预测的结果如下:
- 真实复购用户 = 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0
- 预测复购用户 = 1 1 1 1 1 0 0 0 0 0 1 1 1 0 1
其中,第一行数据代表用户的真实情况,第二行代表用户的预测结果。它们对应的混淆矩阵如下:
<img src="https://static001.geekbang.org/resource/image/ea/fc/ea884c0ddeee3857f438de0fc592c9fc.jpeg" alt="">
其中TP和TN代表模型预测正确也就是说一共有9个样本预测正确6个样本预测错误。根据得到的数据再结合下面的公式我们就可以得到模型预测的准确率、精确率、召回率和F1值了。
<img src="https://static001.geekbang.org/resource/image/e5/13/e5979dbd2435476cfyy4b448c6591013.jpeg" alt="">
然后我们可以继续来求预测结果的ROC曲线和AUC面积。
我们先来看求得的ROC曲线它的横轴为 FPRFPR 越大表示预测正类中实际负类越多。它的纵轴为 TPRTPR 越大表示预测正类中实际正类越多。我们理想的目标肯定是 TPR = 1、FPR = 0即图中 (0, 1) 点,所以 ROC 曲线越靠拢 (0, 1) 点,越偏离 45° 对角线,它的效果就越好。
而 AUC 就是 ROC 曲线下方的面积AUC 不超过 1且越接近于 1就说明模型分类的准确度越高。
<img src="https://static001.geekbang.org/resource/image/cb/e4/cb92yy311796eabc8f4c1d2fc60f5ce4.jpeg" alt="">
从这张图中我们可以看到,整个 AUC 面积远大于 0.5且趋近于 1 ,所以我们可以理解为复购模型是可用的。
## 小结
这节课,我们一起构建了一个复购预测系统。产品经理需要重点关注的内容可以从能力、技术和岗位这三方面进行总结。
首先是能力,能力也可以分为两方面。
**一方面是要掌握用户分层的方法**:提升复购的前提是掌握用户分层,也就是我们上一讲说的用户生命周期的定义。无论是策略分层还是模型分层,都是产品经理需要掌握和吃透的,并且你还要懂得怎么去分析用户的“正向跃迁率”。
**另一方面是要掌握预测模型的构建**:复购模型是一个比较经典的 AI 预测模型,产品经理要掌握模型的整个构建过程和评价标准。
关于技术:对于从事用户预测相关工作的产品经理来说,只要掌握机器学习算法模型的原理就可以了,比如你要做到对逻辑回归、聚类分析、决策树、随机森林等常用算法的理解。
关于岗位构建复购预测模型一般是对增长产品经理的岗位要求比如增长策略产品经理。增长策略的核心就是做用户运营所以如果你想要从事这方面的工作那除了我今天讲的产品经理必备的知识以外用户运营方面的知识你也要去了解。我在下面给出了一个增长策略产品经理的JD你可以作为参考。<br>
<img src="https://static001.geekbang.org/resource/image/bc/55/bc6daeffd0e35a382805834e4e328b55.jpg" alt="">
为了帮助你查缺补漏,我在文稿中把预测类模型要关注的核心知识点总结成了一张脑图,希望你能好好利用起来。
<img src="https://static001.geekbang.org/resource/image/8d/56/8df6f42c7165b4043df85f01145d5a56.jpg" alt="">
## 课后讨论
如果公司让你负责一个增长小组的工作,你能给出什么样的规划和实施方案呢?
期待在留言区看到你的思考,我们下节课见!

View File

@@ -0,0 +1,138 @@
<audio id="audio" title="28 | 预测类产品从0打造一款“大白信用评分产品”" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/63/52/632d30b2c1a11111ff593fda2d86f252.mp3"></audio>
你好,我是海丰。今天,我们接着来讲预测类产品的打造。我会以小白信用评分产品为例,来教你模拟构建一个大白信用评分产品,从而学习到机器学习在互联网金融行业的产品落地方法。
什么是小白信用评分产品呢?你可以看我下面给出的解释:
>
小白信用评分:指根据用户在京东的浏览、购物、投资理财、信用产品使用和履约情况、个人信息完整度等多个维度的数据,通过大数据算法,对用户的信用水平给出的综合评估的产品。评分越高表明用户的信用越好,受评用户就可以在京东及京东合作商户享受优惠商业政策。
需要提前声明的是,构建“大白信用产品”的过程中,我们不会涉及任何与小白信用产品相关的内容,你只要学会构建的通用流程就可以了。整个构建流程可以分为四部分,分别是案例背景、特征构建、模型训练和模型评估。下面,我们就详细来说说。
## 案例背景
开头说了,我们要设计一个大白信用评分模型,那这个模型具体长什么样呢?一个标准的“大白信用模型”由五大维度构成,如下图所示。
<img src="https://static001.geekbang.org/resource/image/23/77/2331b79b916ed6b5805ccec5653f8677.jpeg" alt="">
**第一是身份特质**,包括你的实名情况、社会属性、居住环境、教育情况,它们代表了你的出身、社会层次和稳定性,是一个人短时间内不会被改变的特质。
**第二是资产评估**:通过你提交的收入和资产信息来综合判断你的履约能力,包括社保、公积金、动产和不动产等。
**第三是行为偏好**:就是通过你的消费、缴费还款、公益活动等行为,判断你的行为特点,比如从消费偏好上看出你消费的高低。这部分数据对产品后续决策有很大的参考价值。
**第四是履约信用**:评估你在金融产品、电商平台和社会行为表现出来的履约和违约情况,比如看你历史的信用,来判断你的诚信度。
**第五是人脉关系**:这一步主要是对你的社交关系,人脉丰富程度进行评估。
通过这五个维度,我们除了能够判断一个人的信用到底好不好,还可以结合人的行为偏好来做更精准的个性化推荐。
在建模之前我们先假设一个信用场景比如通过“大白信用分”来决定用户是否可以免押金租相机。这个场景就是一个二分类问题。它的核心思路是计算出用户在“大白信用”5 个维度上的违约概率,然后把它们综合起来计算出一个最终概率,再把它转化成一个实际的得分,也就是这个用户最终的“大白信用分”。
## 特征构建
接下来,我们就可以从刚才说的五大维度入手,来做“大白信用”评分模型的数据准备了。在做数据准备的时候,这 5 大维度还可以继续拆分成更多详细的分类和数据字段。比如“资产评估”就可以拆分成“固定资产”和“流动资产”等等,示例如下:
<img src="https://static001.geekbang.org/resource/image/1d/e6/1d11ccba0340f54bb622d9009cb377e6.jpg" alt="">
当然,在实际工作中,对于产品级数据模型构建来说,上面的数据信息还远远不够,我们还需要增加更多的**原始数据和扩展数据**。
原始数据就是存储在业务系统中的基础字段,比如日交易额、下单量、点击或搜索次数等原始字段信息。扩展数据是原始数据加工转化后的数据,一般有三种生成方式:按照时间维度衍生,如最近 1 个月或者 3 个月交易额;通过函数衍生,如最大或最小交易额,以及交易额方差;通过比率衍生,如“最近 1 个月交易额/最近 3 个月交易额”。
下一步就是对这些特征数据进行处理了。
在真实工作中,特征处理和选择是一个循环迭代、优化的过程,所以在业务前期,我们要尽可能多地抽取数据特征。特征处理的方法可以分为三种,分别是**特征的通用处理,数值型特征处理和字符串特征处理**。
### 特征的通用处理
特征的通用处理是我们在拿到特征数据之后都需要做的,包括**数据分布分析、缺失值处理与异常值校验。**
首先是特征数据的分布分析,我们要先通过数据可视化的方式查看数据的分布情况,然后对分布不均衡的数据采用“随机欠采样”、“随机过采样”或 “SMOTE 算法”进行处理。这和我们上节课讲的一样,我就不再重复了。
其次,对“大白信用评分产品”中的数值型和字符串型字段进行缺失值和异常值检验,我们可以采用补充缺失值、或者直接剔除掉无效字段的方式进行处理。
### 数值型特征处理
对于数值型特征的处理,我们主要是看特征的 IV 值,因为 IV 值衡量了各特征对$y$值的预测能力。例如,下面是我们对员工工作信息模型的特征相关性排序。
<img src="https://static001.geekbang.org/resource/image/98/f3/98bd52ce222f8828e8af7c8b0f8724f3.jpeg" alt="">
需要注意的是IV 值并不是越大越好。根据不同场景 IV 值的取值有所不同,实际的场景中,我们可以选择 IV 值大于 0.1 的指标。
除此之外,我们还要对特征进行归一化处理,来消除数据特征之间的量纲影响,让不同指标之间具有可比性。比如交易额和交易次数,这两个指标就没有可比性。我们通常使用的**归一化方法有线性函数归一化和零均值归一化**。
线性函数归一化也称为最大值 - 最小值归一化,原理是将数据映射到 [0, 1] 的范围内,公式为:$x' = \frac{X - X_{min}}{X_{max} - X_{min}}$。
零均值归一化的原理是将数据映射到均值为 0标准差为 1 的分布上,公式为:$x' = \frac{x - \bar{X}}{S}$。
### 字符串特征处理
**对于字符串特征的处理主要就是对字符串做离散化,也就是将字符串映射到一个个离散的区间中**。字符串离散化的目的是将变量数值化,因为数值化后的变量才能应用到数学模型中。
以“身份特质”为例,如果你的学历是硕士,那么我们该如何处理这个字段呢?
<img src="https://static001.geekbang.org/resource/image/b1/a8/b135b4519ff5b88c73afc85901d119a8.jpeg" alt="">
如表格所示我们把100分分成6段小学是 020初中是 2040高中是 40~60以此类推我们直接把字符串映射到一个个的分段区间中就可以了。这里的具体取值按照业务常识设置的我们只要做到逻辑上没有问题就行了。
## 模型训练
处理完数据,我们就要开始训练模型了。不过在那之前,我们要先选择算法。因为这是一个二分类问题,所以我们要选择二分类算法,又因为现在是项目前期,所以我们可以选择相对简单的算法模型进行实验,比如逻辑回归模型。接下来,我们就可以按照如下步骤进行操作了 。
<img src="https://static001.geekbang.org/resource/image/95/14/951099f4ee0cee549yy308e2d750d714.jpeg" alt="">
我们以“履约信用”维度为例,假设“履约信用”包含的字段有最近一个月需还款金额 $x_{1}$,最近一个月逾期金额$x_{2}$,最近一个月消费金额 $x_{3}$。根据 LR 公式,我们可以计算得到你违约的概率:$P = sigmod(y) = \frac{1}{1 + e^{-y}} = \frac{1}{1 + e^{-(ax_{1} + bx_{2} + cx_{3}))}}$。
其中,$P$为用户违约的概率,$a$、$b$、$c$为逻辑回归模型的拟合系数。
通过这个方法,我们依次计算出 5 个维度(身份特质、资产评估、行为偏好、履约信用、关系人脉)的概率,分别为 0.1、0.2、0.3、0.4、0.5。然后,我们再假设每个维度的权重都为 0.2,具体如下表所示:
<img src="https://static001.geekbang.org/resource/image/11/c5/112375960188e8813619ae585a32bec5.jpeg" alt="">
最后,我们还需要将综合概率$P$转化为实际的数值,转化公式为:$score=(1-P) \times A+B$
其中,分数区间为 [200, 1000],所以 A=800B=200然后我们再将上面的综合违约概率带入公式就能得到你最后的大白信用分了它等于760。
当然,真实产品的模型构建过程肯定更为复杂,但它们的核心思想是一致的,**都是先划分维度,然后准备每一个维度的数据特征,对它们进行特征处理,构建好训练集和测试集,通过分类算法计算每一个维度的概率分,再通过加权的方式得出综合概率分,最终转化成具体的分数,这就是最终的信用得分了**。
## 模型评估
得到预测结果之后,我们要对模型进行抽样评估。**对于信用评分模型,我们只需关注两个重要的指标:混淆矩阵和 KS 值。**
比如说在得到的预测结果中60分为切分点60以下我们认为会违约60分以上我们认为不会违约我们预测可能会违约的是180人不会违约的是220。但在实际表现上违约有 220 人,未违约有 280 人,相应的混淆矩阵如下:
<img src="https://static001.geekbang.org/resource/image/5d/2f/5da18eef4f6e45a2f3773fa876af722f.jpeg" alt="">
这样我们就能计算出模型的准确率和召回率了:
- 模型的准确率的计算是:$\frac{TP+TN}{TP+TN+FP+FN}=\frac{100 + 200}{100 + 20 + 80 + 200} =0. 75$
- 模型的召回率的计算是:$\frac{TP}{TP+FN} = \frac{100}{100 + 20} = 0.83$
从结果上来看,模型的效果还是不错的。
相应的我们还可以将10分、20分、30分这些分数分别作为切分点得到一系列的混淆矩阵和对应的准确率和召回率以及TPR和FPR。我们把每一个切分点所对应的TPR和FPR相减得到的最大值就是这个模型的KS值。
KS的具体计算过程你可以参考[第20讲](https://time.geekbang.org/column/article/339604)这里我就不多说了。不过最终KS值可以直接通过算法工程师的代码跑出来不需要我们手工计算。
## 小结
这节课,我们一起打造了一个“大白信用评分产品”。还是和前几节课一样,想要成为金融风控方面的产品经理,你要从能力、技术和岗位这三方面进行准备。
**在能力方面**,金融行业的数据比较成熟,所以数据来源很多,这就要求产品经理对于数据源的成熟度和稳定性有**把控能力**。并且,如果我们想在项目前期尽快赢得客户认可,还要具备良好的**沟通能力和快速的反馈能力**。因此,相比于数据分析师这样的岗位,我们要注意锻炼自己能够站在产品、公司以及客户这三方角度来分析问题,提出自己的想法。
**在技术方面**我们要理解机器学习算法模型。更具体点来说你要理解逻辑回归、决策树、GBDT、随机森林、神经网络这些常用算法的原理、应用场景和优缺点具体的内容你可以回顾算法技术能力篇。
**在岗位方面,**因为互联网金融的核心是风控,而风控领域的产品经理岗位,又可以细分为风控策略产品、系统产品,随着 AI 能力的普及,又有了风控 AI 产品经理等等岗位。如下是一张风控AI产品经理的JD你可以看一看。
<img src="https://static001.geekbang.org/resource/image/36/e2/3672aa9b031f75782898821655c2f0e2.jpg" alt="">
并且,我也把这节课和上节课产品经理岗位之间的区别总结在下表中,希望你能更直观地理解。
<img src="https://static001.geekbang.org/resource/image/a8/3e/a8a5deab976da4279b2bd6e0b575a03e.jpeg" alt="">
## 课后讨论
在这里,我想请你谈一谈你对“芝麻信用分”和“小白信用分”的理解,他们的分数的取值范围分别是多少,为什么这样设定?
期待在留言区看到你的思考,我们下节课见!

View File

@@ -0,0 +1,159 @@
<audio id="audio" title="29 | 自然语言处理产品从0打造一款智能客服产品" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/93/30/9323b3fef18f74ed8d833a4a05bf0230.mp3"></audio>
你好,我是海丰。
自然语言处理NLPNatural Language Processing可以说是当今人工智能最活跃的垂直领域之一了它是一种通过机器学习方法对自然语言进行分析和发掘的处理技术。自然语言处理的应用场景非常广泛
- 电商平台中的评论情感分析,通过 NLP 技术分析用户购买商品后的态度;
- 商场的导购机器人通过 NLP 技术去理解用户的语义;
- 在文本分析、智能问诊、搜索应用中也都有自然语言处理技术的应用。
对于AI产品经理来说我们主要的工作场景除了有之前讲过的预测类、推荐类和风控类场景还有自然语言处理场景。今天我们就来学习一下怎么牵头建设一款智能客服产品从而帮助你理解和掌握自然语言处理技术的应用场景、处理流程和基本的技术原理。
我们先来说一下这个需求的背景:为了减轻客服的回复压力,公司现在需要通过 AI 辅助客服回复客户提出的问题,具体的方案是通过自然语言处理技术对客户的问题做语义分析和理解,然后找到问题库中最相近的问题,再把预设的答案回复给客户。
这个过程一共需要4个步骤才能完成分别是**语料获取、语料预处理、文本表示和文本计算**。接下来,我们就一一来说。
## 语料获取
想要打造一款智能客服产品,第一步就是获取语料,形成语料库。所谓的语料就是模型的训练数据集,在客服系统中,语料就是客户的提问与客服人员的问答数据,以及用户对电商网站中某个商品的评价信息等等。
获取语料的途径有很多,一般来说可以分成三种,分别是**业务积累、网络收集,以及外部采购**。下面,我们就来详细说说。
**最准确和方便的方式,就是从业务积累的历史语料中直接获取。**根据存储形式的不同,我们的获取方式也会不同,主要可以分为以下两种:
- 存储在数据库中的语料,它处理起来最为方便,我们可以通过脚本直接从数据库中提取
- 没有进行过电子化,以纸质文件档案的方式存储的语料,它处理起来会复杂很多,需要通过人工录入或者扫描识别等方式进行电子化
**为了丰富语料库,一般我们还会补充一些如新闻资讯、维基百科等语料,这些内容都可以从网络上获取。**网络上有很多开放的数据集,比如 Wiki 百科数据集、中文汉语搜狗语料、 人民日报语料等等,都可以直接从网上下载。除此之外,我们也可以通过爬虫程序快速抓取网络上的公开语料信息。
但是,也有很多专业的语料集合在网络上都是不公开的,我们只能通过采购的方式获取它们。比如,购买电商行业的评论信息、某专业领域的文献资料,或者旅行行业的游记等等。当然,这里的语料获取会有合规性上的操作,这和我们课程无关,我就不展开了。
**在做自然语言处理相关项目的时候,语料集的获取是项目的第一步,也是最为重要的一步,因为它的好坏决定了整个项目的成败关键。**那么,咱们智能客服场景的语料主要来自两方面:
- 专业语料库,用于回答客户的问题咨询
- 开放的数据集,用于回答客户的闲聊问题
## 语料预处理
获取到语料之后,接下来就是项目中最耗时、费力的工作,语料预处理了。在实际工作中,产品经理不需要参与语料预处理的工作,但要理解语料预处理的工作流程。
通常来说,算法工程师在项目中超过一半的工作时间都在进行语料预处理,常见的操作有语料标注和数据清洗。例如,我列举的这几条语料就需要进行清洗、分词和词性标注。
- iphone12的摄像头的分辨率是多少啊 @_@ ?
- 武汉市长江大桥,是中国第一座横跨长江的桥梁。
- 北京大学教授正在教授人工智能课程
首先,我们来看语料清洗。
**语料清洗,顾名思义就是将无用的噪音内容去掉,只保留对我们有用的主体内容。**常见的是通过编写脚本采用正则表达式匹配的方式去清洗数据具体包括全半角转换、大小写转换、繁简体转换、无意义符号移除等等。如果是通过爬虫抓取的网页内容我们还要去除广告、HTML 标签或注释、JavaScript、CSS代码。
这里,我列举了几种简单、常见的清洗方式,你可以看看:
1. 全半角转换将在输入法全角模式下输入的内容转换为半角模式的主要对英文、数字、标点符号有影响如将“”全角输入转成半角模式下的“jipiao123”。
1. 大小写转换:统一将大写形式的字母转成小写形式的。
1. 繁简体转换:将繁体输入转成简体的形式,当然考虑到用户群体的差异以及可能存在繁体形式的资源,有些情况还需要保留转换前的繁体输入用于召回。
1. 无意义符号移除移除诸如火星文符号、emoji表情符号、URL地址等特殊符号内容。
清洗完语料之后,接下来要做的就是分词。因为中文语料数据都是短文本或长文本组成的句子,所以**我们在进行文本挖掘分析时,需要将这些句子处理成最小单位粒度的字符或者词语**。可以使用的分词工具比较多,常见的有以下 3 类:
- 基于规则匹配的分词方法;
- 基于统计的分词方法;
- 基于语义理解的分词方法。
这些方法你了解一下就可以了。除此之外,我还想再补充说明一点,目前中文分词算法的主要技术难点在于“歧义识别”和“新词识别”。比如说:“武汉市长江大桥”,这个句子可以切分成“武汉市/长江大桥”,也可切分成“武汉/市长/江大桥”,如果不依赖上下文其他的句子,恐怕我们很难知道怎么去理解。
分词完成后,我们要对分词后的词性进行标注。**词性标注就是给每个字或者词语打标签,主要方式包括普通词性标注和专业标注**
- 普通词性标注:将句子中的词标记为名词、动词或者形容词等等
- 专业词性标注:针对特定行业领域的词性标注,如医疗行业、教育行业等等
不过,词性标注可不是我们必需要做的事情。因为常见的文本分类并不用关心词性的问题,但如果涉及情感分析、知识推理等和上下文相关的处理,我们就需要考虑词性标注的问题了。
比如我们案例中的原始句子:“教授正在教授人工智能课程”。
- 规则匹配词性标注后的分词:[教授/nnt, 正在/d, 教授/nnt, 人工智能/gm,课程/n]
- 语义理解词性标注后的分词:[教授/nnt, 正在/d, 教授/v, 人工智能/gm, 课程/n]
除此之外,我还在下面列举出了实际工作中的词性编码表,你可以作为了解。
<img src="https://static001.geekbang.org/resource/image/03/b2/03e39cc8d53267e546a8ecf3683bdeb2.jpeg" alt="">
## 文本表示
语料预处理完成后,就需要将分好词的语料转化为计算机可以处理的类型。**由于模型只能处理数量化的信息,因此我们需要将已分词的字符转化成编码或向量矩阵的形式,常用的语料特征提取方式是“词袋模型”。**
词袋模型是最基础的文本表示模型,我们可以把它看作是一种比较文本之间相似度的工具。那它是怎么提取特征的呢?下面,我们通过一个客户咨询的例子来详细说明一下。
假设,针对手机待机时长这个问题,我们在语料库中预设了三条标准语料(按照常识来说,待机时长这个问题的正确回答中应该有数字。事实上,每条语料都会对应一套回复,比如语料 2 会存在类似“手机的电池待机时长是x小时”这样的回复。这样设置语料是为了更准确地比较它和用户的问题的相似度所以像数值化的信息会被事先清洗掉
正好,有一位客户咨询了这个问题:“我咨询一下手机的待机时长”。那么,我们需要做的就是比较客户问题与知识库中哪条语料最相似:
- 语料 1“手机是今天快递过来的”
- 语料 2“手机的电池待机时长”
- 语料 3“手机是双卡双待的”
首先,我们通过分词工具,对用户咨询的问题和语料进行分词。分词后,我们可以得到如下语句:
- 客户咨询:“我 / 咨询 / 一下 / 手机 / 的 / 待机 / 时长”
- 语料 1“手机 / 是 / 今天 / 快递 / 过来 / 的”
- 语料 2“手机 / 的 / 电池 / 待机 / 时长”
- 语料 3“手机 / 是 / 双卡双待 / 的”
然后,为了计算相似度,我们需要将每一个已分词的语料,通过词频表示为一个个的向量,如下所示。例如“电池”这个词,只在“语料 2”中出现 1 次我们就标注为“1”在其他语料中没有出现则标注为“0”。
<img src="https://static001.geekbang.org/resource/image/b5/78/b598b4b34b5ee5ee68159e4fae0b4678.jpeg" alt="">
根据词表,我们可以得到如下 4 个向量,如下所示。
- 咨询:(1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
- 语料 1(0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0)
- 语料 2(0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0)
- 语料 3(0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1)
就这样,每一段语料都可以被表示成一个相对较长的向量,并且向量的维度代表词的个数,频次代表这个词在语料中的出现的次数。
然后我们通过 TF-IDF 算法来计算每个词的权重TF-IDF 算法原理就是看某个词在文章中出现的次数来评估这个词的重要程度。比如一个词在这篇文章中出现的次数很多,但在其他文章中出现的次数很少,我们就认为这个词对这篇文章比较重要。
TF-IDF 的计算公式如下(产品经理了解即可):
其中TF(t,d) 为关键词 t 在语料 d 中出现的频率IDF(t) 为逆文档频率m 为语料的总数n 为包含关键词 t 的语料数量。最终的计算结果如下表所示。
<img src="https://static001.geekbang.org/resource/image/2f/ea/2fec63777f44fdb9cfa0fb29b05f6cea.jpeg" alt="">
从表中我们可以看出,每个词在每段语料中的权重,于是我们得到了每段语料经过 TF-IDF 计算后的新向量形式:
- 咨询:(0.2, 0.2, 0.2, 0.0, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
- 语料 1(0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.1, 0.2, 0.2, 0.2, 0.0, 0.0)
- 语料 2(0.0, 0.0, 0.0, 0.0, 0.1, 0.1, 0.1, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0)
- 语料 3(0.0, 0.0, 0.0, 0.0, 0.2, 0.0, 0.0, 0.2, 0.0, 0.0, 0.0, 0.0, 0.3)
## 文本计算
现在,我们已经有了文本向量,接下来需要做的就是计算四个文本之间的相似度。通过前面的学习我们知道,可以利用余弦距离、欧氏距离、皮尔逊相关度来计算相似度。这里,根据得到的向量,我们是使用余弦距离来计算它们的相似度。
计算的过程和我们之前讲的一样,所以我直接把计算出来的相似度结果告诉你。
<img src="https://static001.geekbang.org/resource/image/d6/c4/d62639863c5bee2ba5bb79ebe26233c4.jpeg" alt="">
因此,这三个语料和用户咨询问题的相似度的排序就是“语料 2”&gt;“语料 3”&gt;“语料 1”。根据这个方法我们就能获取和用户咨询问题最相似的语料然后将语料对应的标准回答反馈给用户了。
## 小结
本节课,我们通过一个“智能客服”的案例熟悉了电商场景下,一个自然语言处理模型的简单构建过程。当然,这只是一个“雏形”,实际场景中智能客服还包括很多功能,如意图识别、多轮对话、情感分析、信息提取等。不过,它们的核心构建原理都离不开自然语言处理领域的知识。
如果你想成为自然语言处理方向的产品经理,我建议你从技术和岗位这两方面来准备。
**关于技术**:由于自然语言处理涉足的领域技术非常多,因此你很难掌握所有 自然语言处理 的技术原理,但是对于通用的文本处理相关概念和处理流程,以及它涉及的基本原理你还是需要掌握的,比如说我们今天讲的文本分词、文本表示还有文本相似度计算,我把这些原理和概念都总结在了下面。
<img src="https://static001.geekbang.org/resource/image/eb/02/ebbe8a950d0524eea73bf01ab6bb9602.jpg" alt="">
**关于岗位**:因为自然语言处理技术领域目前主要有智能客服、机器翻译、咨询处理、评论分析、智能医疗,所以相关的产品经理岗位也都是围绕这些方向进行招聘的。因此,在选定了某一个方向之后,你还需要去了解这些领域的相关知识。这里,我列举了一个自然语言处理方向的产品经理 JD你可以作为参考。
<img src="https://static001.geekbang.org/resource/image/4b/9d/4bca5df12274e535d5d29278a472449d.jpg" alt="">
## 课后讨论
我想请你列举几个你所处的业务中,哪些产品功能可以通过 NLP 进行优化?
期待在留言区看到你的思考,我们下节课见!