171-成为AI产品经理

开篇词 | 你好，产品经理！你的未来价值壁垒在哪儿？

你好，我是刘海丰。

很高兴能和你在这个专栏中见面，跟你一起聊聊产品经理这个岗位，尤其是人工智能领域的产品经理，也叫 AI 产品经理。

我先来介绍一下我自己吧。我现在是京东集团的高级架构师，负责京东生活服务事业群的数据模型与算法，主导过推荐系统、用户意图识别、高潜用户预测、商品内容生成等多款 AI 产品的设计落地。

在来到京东之前，我曾经作为 AI 产研负责人带领整个产品和研发团队，为用户提供基于大数据和 AI 技术的产品解决方案。这段经历也让我既懂研发技术架构，又具备了产品思维和商业视角。

但其实，我刚开始的工作也和 AI 产品没有关系，是在机缘巧合之下才转型的。当时，我们公司突然要上线一个 AI 项目，因为一时没有合适的 AI 产品经理接手，我才被动地成为这个 AI 项目的负责人，去组建和培养整个 AI 产品团队，同时还要带领算法团队。

项目完成之后，我就继续在这个领域深耕，又成了京东的高级架构师。在这个过程中，我也帮助过团队中的很多产品经理成功转型 AI 产品经理。可以说，不管是我自己转型，还是帮助别人转型，我都踩过很多的“坑”，也总结了很多的经验。

未来产品经理的价值壁垒

其实，我们身边的很多人都会因为类似的情况而调换岗位，最终在这个岗位走得更远。那随着越来越多的公司认识到 AI 的重要性，去建立算法团队之后，传统产品经理转型 AI 产品经理的情况会越来越普遍。

甚至我认为，未来一两年后，人人都可能是 AI 产品经理。

听我这么一说，你在心里可能先白了我一眼，又是“人人”，而且还是“AI”，怎么可能呢？我这么说还真不是为了耸人听闻，故意抓眼球，听我跟你仔细说道说道。

不知道你有没有听说过 “移动互联网产品经理” 这个岗位？其实现在已经没有这种岗位了，因为移动互联网已经成为整个互联网的基础建设，而移动互联网技术也已经深入到了各行各业，所有产品经理都是移动互联网产品经理。你看，这就是移动互联网技术的发展所带来的必然结果。

现在呢，你是不是感觉 AI 好像也没有前几年那么热了，这其实是因为 AI 技术的落地越来越多了，大家已经过了谈论的阶段，而是实实在在地在使用它。所以我大胆预测，在不远的一两年后，AI 技术必将和移动互联网技术一样，成为互联网的基础建设。到那时候，我们的工作或多或少都要基于 AI 技术，AI 技术也会赋能于各行各业，也就没有所谓的 AI 产品经理这个岗位了，因为每一个产品经理都是 AI 产品经理。

其实，我的预测还不真是空穴来风。如果你平时留心过 AI 领域的新闻肯定会发现，最近几年，不仅是以 AI 技术为主的创业公司越来越多，一些知名的互联网公司，甚至传统行业公司也都在设立自己的 AILab 或者 AI 事业部，并且联合各大院校设立 AI 实验室。而两年前，只有专门从事 AI 领域的企业或者 BATJ 这样的大厂才会设立这样的部门或岗位。

因此，随着 AI 技术逐渐落地和市场认可度的不断提高，AI 产业岗位以及泛 AI 产业岗位在当今社会已经变得越来越走俏。我身边的一些产品经理也因此越来越关注 AI 领域，会越来越多地和我讨论一些 AI 相关的问题。我把它们都总结下来，大概有这么两类。

一些传统行业的产品经理会问我，我适不适合转行去做 AI 产品经理啊？如果我要转行的话，需要做什么准备？还有 AI 产品经理要懂各种算法吗？这些算法太难了，我看不懂怎么办呀？

还有一些刚刚成为 AI 产品经理的朋友会问我，现在工作上好多事儿我都搞不清楚。比如，我给算法团队提需求的时候总要沟通好多次，效果还不好，算法同学肯定也没少埋怨我。再比如，算法同学交付过来的模型，我发现效果不好，但他们说的原因我又听不懂，这项目推进起来感觉越来越难……

对一些已经成为 AI 产品经理的同学，如果你也有类似的疑问，我建议你系统地学一些 AI 产品经理相关的课程。毕竟夯实基础，我们才能走得更远嘛。

那对一些还不是产品经理的同学，如果你也对 AI 产品经理好奇，想要转型的话。我真的建议你尽早抓住 AI 这个破局点，趁着行业还没那么成熟，对 AI 产品经理的要求还不是那么高的时候，尽早进入这个行业。到时候随着 AI 发展，你作为这个行业中的先行者，自然更容易占得先机。

总的来说，尽早为自己储备 AI 产品经理的知识，能帮助我们建立自身价值壁垒，也是我们抓住 AI 行业红利一次不错的机会。

如何成为一名 AI 产品经理？

那么我们该如何成为一名 AI 产品经理，或者更进一步，我们该如何成为一名优秀的产品经理呢？在这个专栏中，我把 AI 产品经理的知识体系梳理成 4 大板块，分别是知己知彼、三大能力、落地实践和认知升级。接下来，我就详细给你讲讲，每个板块我都是怎么设计的。

板块一：知己知彼

想要转型 AI 产品经理，我们只有先搞清楚自己能不能转型，都有哪些方向和领域可以转型，才能确定自己要转去哪个方向，进而去做充足的准备。永远要记住一点：选择对的跑道，比跑得快更为重要。当然，这对初级 AI 产品经理同样适用。

在这个板块中，我会分别从行业、个人、技术，以及过来人这四个视角，帮你全方位了解 AI 产品经理这个岗位，希望能让你少走弯路。

板块二： AI 产品经理的三大能力

清楚了自己转型的方向和应该具备的能力后，就到了夯实基础的时候。掌握基础最快的办法就是把自己带入到对应的角色里，去处理真实的问题。

在一个 AI 产品落地的过程中，产品经理要负责产品开发周期和进度的管控，保证产品按时上线。因为 AI 产品经理和互联网产品经理在本质上的不同，就是会牵扯到算法团队，AI 产品经理需要和算法工程师进行多次专业的需求沟通，所以 AI 产品经理要听得懂他们说的技术词汇、算法实现，对整个算法有自己的判断，知道每个算法能解决什么问题，解决到什么程度，以及有能力对最后训练出的模型好坏进行评估。这样才能推动产品向前发展。

因此，在第二个板块中，我把 AI 产品经理需要掌握的核心能力总结成了三个，分别是 AI 项目管控能力、算法技术能力和模型验收能力。

首先，为了帮助你快速进入 AI 产品经理这个角色，我会结合 AI 产品的建设流程，告诉你怎么主导一个 AI 项目，怎么构建一个 AI 算法模型，以及这个过程中怎么和算法人员进行沟通。

其次，我通过算法在真实案例中应用的方式，告诉你 AI 领域主流算法的逻辑和它们的应用场景。我会站在一个产品经理的角度，给你解释这些复杂的概念，让你掌握它们的优缺点和适用场景，保证你一定听得懂。

最后，我还会带你学习如何检验一个 AI 模型的好坏，如何验收算法工程师的产出，为你梳理一套模型验收的知识体系和监控指标。

这三大能力不仅和互联网经理要求的能力有很大区别，也是 AI 产品经理的核心技能壁垒。因此，这是我们转型 AI 产品经理必备的基础，更是我们从这个岗位脱颖而出的核心竞争力。

板块三：落地实践

掌握了成为 AI 产品经理的理论知识还不够，在实际工作中，我们还是会很难想到用哪些知识点去解决实际问题，或者提出的产品方案太理想化。

所以，在第三个板块中，我会通过几个最常见的案例，比如个性化推荐系统产品、用户复购意向预测产品、信用评分产品，以及智能客服类产品，带你把学过的知识落地，让你知道它们是怎么在一个业务场景发挥作用的。希望这个板块结束之后，你能既懂理论又懂实践。

板块四：认知升级

最后我还希望，通过这个专栏你不只是收获了 AI 行业知识、技术知识，以及成为一个 AI 产品经理的方法，还能收获一份自我提升的指南。

因为在我看来，入门容易，但入门之后的自我提升可不容易。而想要提升自身能力，就要先提升自己的认知能力，只有认知到了，才有提升的可能性。

所以，在最后这个板块里，我会为你讲讲 AI 产品经理的认知升级。这里有我在研发、产品和管理上的多年经验，希望这些经验你能够好好利用起来，借助它们提升自己的认知，让自己的职业道路越走越宽。

学习这个专栏的建议

不过，在正式开始学习这个专栏之前，考虑到很多同学对 AI 领域的理解层次不一样，所以我还为你总结了一套有效学习这门课的方法论。

第一阶段，形成对知识理解的线性思维，对 AI 产品经理课程体系有整体的认知。不管你是刚刚学习 AI 还是已经对 AI 有一定的了解，我都建议你先完整地跟着整个专栏的节奏学习一遍，对 AI 产品经理这个体系有一个系统性的认识。这不仅能帮助你查缺补漏，也能让你在工作中遇到相关问题的时候，快速找到解决办法。

第二阶段，形成对知识理解的结构化思维，在头脑中描绘出自己在 AI 领域的知识体系。在你充分地学习和实践了第一阶段后，你需要从专栏中的每一个单一的知识点中“跳出来”，高屋建瓴地看问题，并逐步建立自己的 AI 知识体系，从知识点的学习到知识网络的补齐。

第三阶段，形成对知识理解的批判性思维，打破固有知识体系，建立 AI 思维的底层逻辑。这个阶段，我希望你可以锻炼自己的批判性思维，既能合理地输入别人的意见，也能输出自己的独立认知，最后形成自己的 AI 底层思维，这样你就能驾驭 AI，真正让它变成你的工具。

最后，我还想说，这个专栏包含了我转型和操盘 AI 产品的全部心得，这是书上和网上都搜索不到的。那我在极客时间把它们分享出来，就是不希望那些我踩过的“坑”、犯过的错，你再走一遍。所以，我希望在专栏更新的过程中，能够经常看到你的留言，不管是提问还是交作业，我都会认真回复。

AI 时代属于产品经理的机会已经来了，如果你想用最低的成本转型到 AI 赛道，提高自己的价值壁垒，拓宽未来的发展道路，就快和我一起学习吧！

01 | 行业视角：产品经理眼中的人工智能

你好，我是海丰，很高兴能在这个专栏和你见面。

随着人工智能的火热，越来越多的产品经理开始关注这个领域，希望借着风口转型成为 AI 产品经理，进而可以拓宽自己的职业道路。确实，这是一条很不错的出路，我本人就是一个转型的深度体验者和倡导者。

对比传统的产品经理，AI 产品经理更加注重对于人工智能行业、场景算法，以及验收评估标准的理解。这节课，我们就来学习这些内容。不过在学习之前，我准备了 3 个问题，来测试一下你对这个领域的了解程度：

你理解人工智能吗？

它的产业发展现状如何？

人工智能产品经理的人才结构是怎样的？

接下来，我将从人工智能产品经理的角度，带你一起解答以上问题，让你对这个领域有一个整体的认知。这是基础，更是必学！

理解人工智能

对于人工智能的理解，网上的文章早已铺天盖地，如果要我概括一下，我认为：如果一个系统可以像人类一样思考和行动，同时这些思考和行动都是理性的，那么这个系统我们就可以认为它是人工智能（Artificial Intelligence，英文缩写为 AI，后面我会直接简称为 AI）。

什么意思呢？举个例子。

比如说，我们在浏览电商网站的时候，经常会发现自己看到的页面展示的商品和其他人不太一样，这是因为电商平台的推荐系统，会根据我们过去的浏览行为和下单情况，来预测我们可能喜欢的产品，再把它们展示出来。

再比如说，我们都使用过类似小爱音箱这样的智能音箱，当我们跟它说：“嘿，小爱同学，明天早上 7 点叫我起床”，它就会为我们设置早上 7 点的闹钟。这是因为在小爱同学背后有一整套的系统，对我们发出的语音进行语义理解，再按照理解到的语义指令执行命令。

从这两个例子中，我们能感受到这些产品不仅可以像人类一样去发现我们的喜好，推荐出我们喜欢的商品（精准推荐），还可以理解我们的语言（语义识别）去执行我们的命令（语音识别）。这些就是人工智能赋予它们的能力，也是人工智能应用越来越受欢迎，越来越多的原因。

但是作为 AI 产品经理，我们需要注意，目前 AI 技术可以解决的问题，一定是在某一个明确的特定业务领域内，且有特定目的的问题，比如是搜索推荐、机器翻译、人脸识别等等。而我们在电影中看到的那些“无所不能”的 AI 机器人，它们属于通用人工智能领域，这离我们还很远。

关于人工智能，你必须要掌握的概念

理解了什么是人工智能和它的边界，我们再来看看人工智能领域的两个重点概念，机器学习和深度学习。这两个关键词时常出现在人工智能相关的新闻中，但还是有很多人不清楚这两者是什么，以及它们和人工智能是什么关系，甚至还有人把它们混为一谈。所以，我希望在正式开始咱们后面的学习之前，先带你扫除这些基础障碍。

我们先来看机器学习（Machine Learning）。机器学习的核心是让机器有能力从数据中发现复杂的规律，并且通过这些规律对未来某些时刻的某些状况进行预测。这怎么理解呢？我们先来看一个简单的例子。

假设，我们要通过机器学习预测未来几天内是否下雨，那我们需要筛选出过去一段时间内比较重要的天气特征数据，比如过去的平均气温、湿度、降水量等等，然后通过机器学习算法从这些历史数据中发现规律。

这个所谓的规律就是算法工程师常说的模型，而发现这个规律的过程就是训练模型的过程。最终通过这个模型加上相应的气温、湿度等特征数据，我们就可以计算出未来几天内下雨的一个概率。

我们可以用一句话来总结机器学习的过程：机器学习就是让机器从过去已知的大量数据中进行学习，进而得到一个无限接近现实的规律，最后通过这个规律对未知数据进行预测。 其中，我们使用的过去的数据就是我们说的样本，而气温、湿度这些属性就是特征，过去某一天是否下雨就是我们建模时用到的标签（结果数据）。

如果在建模过程中，我们能够获得这些标签并使用它们训练模型，就叫做有监督学习（Supervised Learning）。如果没有标签，就叫做无监督学习（Unsupervised Learning）。像上面这种预测是否下雨，预测结果是“是 / 否”这样的问题，就是分类问题，如果是预测具体温度是多少，预测的结果是一个连续值的，就是回归问题。

当然，这只是机器学习中一个很简单的例子，实际分析数据和预测的过程远比我们刚才描述的要复杂，而且实现预测能力的方式也不止一种，我们现阶段只要掌握这些就足够了。

接下来我们看第二个概念，深度学习（Deep Learning）。 深度学习是一种特殊的机器学习，它借鉴了人脑由很多神经元组成的特性，而形成的一个框架或者说是方法论。相对于普通的机器学习，深度学习在海量数据情况下的效果要比机器学习更为出色。

人工智能技术发展时间线

我们从上面的“人工智能技术发展时间线”图中也可以分析出来，深度学习是在互联网 DT 时代（数据处理技术时代，Data Technology）到来之后才逐渐火起来的，所以数据量对深度学习的重要性是非常高的。

虽然深度学习的效果很好，但它也有局限，比如，深度学习对机器性能的要求会更高，算法模型训练时间相对更长等等。所以，我们需要根据实际业务的场景来选择是否应用深度学习的相关算法。

人工智能产业现状

理解了什么是人工智能之后，接着，我们再来看看人工智能的产业现状怎么样，从全局的视角来了解整个行业，这对我们知识体系的建立是非常有帮助的。对于人工智能的产业，我们可以基于产业链的上下游关系，把它分为基础层、技术层和应用层。

我们先来看最下面的基础层，它按照服务的线条被划分成芯片服务、云服务、机器学习平台和数据服务，它们都是我们整个 AI 行业最底层服务提供者。这里面，讯飞的开放平台是我们接触比较多的机器学习平台，阿里云、百度云是做得比较好的云服务提供商。

再上一层的技术层是 AI 技术的提供者，我按照技术类别对它进行了划分。这里面，我们比较熟悉的企业有商汤、依图，它们主要是提供计算机视觉服务，最常见的应用场景就是人脸识别了。

最上面的应用层是 AI 技术对各行业的应用服务，就拿我们最熟悉的抖音来说，它通过 AI 技术不仅能实现短视频内容的个性化分发，把你感兴趣的内容展示出来，还能在拍摄短视频时候，让你变美变瘦，身体各个部位“收放自如”。

除此之外，在整个 AI 产业链中，BAT 提供了全链条的服务，它们既做了最底层的基础服务，如云服务、机器学习平台，也做技术输出，如 BAT 会有自己的计算机视觉、语音识别等能力，同时也有对外的应用场景，所以我把它们放到了一列中。这个产业链上每一层的代表企业非常多，我就不细说了，你可以参考下面的全景图。

上面的全景图告诉了我们，整个产业链的分层和每层的典型公司都有哪些。不过如果想要转到 AI 行业，你还需要多了解一些行业内的成熟应用。下面这张典型应用案例图就能帮到你。

这里，我挑出了 4 个应用 AI 技术比较早，发展也相对成熟的行业，它们分别是金融风控，智能支付、智能安防以及智能客服。我会通过它们来给你讲讲，目前一些成熟的 AI 技术都是怎么应用的，应用它们对这些行业有什么帮助，以及这些行业中比较有代表性的企业和产品分别是什么。

金融风控行业 主要是用机器学习技术把原本依赖人工的风险管理变为了依赖机器算法的方式，通过收集借款人的相关数据（收入、年龄、购物偏好、过往平台借贷情况和还款情况等）输入到机器学习模型中，来预测借款人的还款意愿和还款能力，判断是否对他放款。

AI 技术的应用解决了原有人工信贷审核效率低下、无标准等问题。目前，市场上做金融风控的 AI 企业不只有老牌的百融云创、邦盛科技，还有蚂蚁集团、京东数科、度小满这样的大型互联网公司，还有冰鉴这样新型的创新型公司等等。

而智能支付行业主要是通过人脸识别、指纹识别、声纹识别、虹膜识别等多种生物识别技术，帮助商户提高支付效率。像蚂蚁、京东数科、商汤和云从科技这些我们比较熟悉的企业，都属于智能支付行业。其中，云从科技、旷视科技、商汤科技和依图科技还一起被誉为 CV 界的四小龙。

接着是智能安防行业 。互联网产品经理平时接触这个行业可能比较少，因为目前市场上主要做智能安防的企业有海康威视、大华股份、汉邦高科等，它们主要是通过人脸识别、多特征识别、姿态识别、行为分析、图像分析等相关技术融合业务场景的解决方案，来帮助企业、政府解决防控需求的。像我们都听说过，通过 AI 摄像头自动识别犯罪嫌疑人，通过深度学习技术检测车辆，并且识别出车牌号码等特征，用于停车场收费、交通执法等场景。

最后是智能客服行业。这个行业主要是通过自然语言处理技术、知识图谱，对用户输入的问题进行识别分析，根据知识系统寻找答案，解决原有人工客服效率低下、成本高这样的问题。

就像很多银行现在都采用智能客服，对它们的用户进行理财推荐，我就接到过不少这样的电话。但是一般来说，它们和真人的区别还是很明显的。目前市场上比较成熟的智能客服企业主要是环信、云知声、百度等等。

好了，现在我们已经知道了什么是人工智能，以及整个产业的现状。目前人工智能与各个行业还在不断融合，AI 也会继续向各个行业进行渗透。在我看来，AI 最终不会成为一个行业，而是会像移动互联网一样成为一个基础建设，赋能到整个互联网。

AI 产品经理人才结构

了解了人工智能的发展现状，我们就可以有针对性地看一下这些层级的公司对 AI 产品经理都有哪些要求了。

人工智能商业模式

在人工智能产业中，处于不同层级的企业，根据自身能力和方向的不同，都有自己的一套商业模式，充分了解 AI 公司的商业模式，可以成为我们转型 AI 产品经理的重要参考信息，也是我们进一步整理出 AI 产品经理的人才结构图的依据。

总的来说，商业模式可以分为：数据收集和治理、计算资源服务、AI 技术服务以及产品附加 AI 这四种。下面，我们一一来看。

首先，我们来看位于基础层的两类商业模式，数据收集和治理，以及计算资源服务。

数据收集和治理类型的公司大多拥有自己的数据流量入口，致力于对于数据的收集和加工。比如数据堂，它主要提供数据采集（包括从特定设备，地点采集，采集范围包括图片、文字、视频等）、数据标注（主要是对图像进行标注，如标注人脸、动作等）服务。

而计算资源服务类型的公司，又可以分成两类，一类致力于底层的芯片、传感器的研发服务，就像寒武纪这样的企业，它们作为一个人工智能芯片公司，主要的收入来自云端智能芯片加速卡业务、智能计算集群系统业务、智能处理器 IP 业务。另一类是 AI 计算服务，比如百度的 AI 开放平台，平台除了提供百度自有的 AI 能力之外，也为上下游合作伙伴提供了一个 AI 产品、技术展示与交易平台。

接着，我们再来看位于技术层的 AI 技术服务类公司，它们为自己产品或者上游企业提供底层的 AI 技术服务，服务模式更多的是技术接口对接，比如人脸识别服务的服务模式主要就是 API 接口或者 SDK 部署的方式。

最后是产品附加 AI，即应用层的大部分产品，它们都是通过 AI 技术叠加产品，赋能某个产业的模式。比如滴滴通过 AI 技术应用于自有的打车业务线，包括营销环节的智能发券、发单环节的订单预测、行车中的实时安全检测等等。

AI 产品经理所需技能

通过上面的分析，我们不难发现，不同产业层级和商业模式都需要具有相应能力的 AI 产品经理。那这些产品经理究竟有什么区别呢？接下来，我就结合应用层、技术层和基础层这三个层级企业的特性，来给你讲讲不同层级产品经理所需的技能，同时给你一些具体的转型建议。

首先是基础层。处于基础层的企业主要提供算力和数据服务，这些企业的特点是，偏硬件，偏底层技术，技术人员居多。这就要求 AI 产品经理了解如云计算、芯片、CPU/GPU/FPGA/ASIC 等硬件技术，以及行业数据收集处理等底层技术和框架。所以，原来从事底层硬件、技术平台、基础框架的产品经理，就比较适合转型到基础层了。

而处于技术层的企业，主要的业务是为自己的业务或者上游企业提供相应的技术接口。这些企业的特点是技术能力强，大部分业务都是 ToB 服务。这个时候，AI 产品经理就必须要具备企业所在领域的技术知识，如语音识别（ASR）、语音合成（TTS）、计算机视觉（CV）、自然语言处理（NLP）等通用技术，最好还能了解 TensorFlow、Caffe、SciKit-learn 这样的机器学习框架。

所以，技术层的 AI 产品经理本身必须具备一定的技术基础，最好还能是算法出身的工程师。但不管你属于哪一种，都一定要保有探索的热忱。

最后，我们再来看应用层，这类型公司就是我们日常生活中接触最多的互联网公司，只是其中一些公司走的比较靠前，应用了 AI 技术来赋能自己的内部业务。比如滴滴使用 AI 技术做智能分单、智能补贴；京东数科是用 AI 技术做智能反欺诈，大数据风控。这一层是互联网产品经理转型最多，也是成功率最高的一层。

处于应用层的企业，大多数直接面向 C 端用户，所以它们关注的是如何结合市场特点，来利用 AI 技术创造性地设计出符合市场需求的产品。所以这类型的产品经理不仅要求对所在行业有深刻的认识，同时也要对 AI 技术有一定的了解。能够与算法和研发工程师顺畅沟通与配合，能够判断算法同学交付的产品是否满足业务需求。

总之，这一层的 AI 产品经理岗位，比较适合已经在某个领域具备了行业经验，打算转型做这个领域产品经理的同学。对于这样的同学，这一层的入门门槛比较低，在补充一定的 AI 技术知识后，获得一份 AI 产品经理的 Offer 相对来说会容易很多。

总结

今天，我从一个产品经理的角度，带你从全局了解了人工智能行业。在我看来，虽然人工智能可以让系统像人类一样进行理性的思考和行动，但它目前能够解决的问题还很有限。因此，人工智能未来是有无限潜力的。

对于希望进入 AI 领域的产品经理来说，你只有对整个行业有一个全局的认识，才能结合自身的优势，找到最适合自己的领域和岗位。所以，这节课我们要牢牢掌握 AI 产业链的三个层级特点：

基础层偏硬件，技术更底层，对人的技术能力要求最高；

技术层多为 ToB 服务，对技术要求相对较高；

应用层最接近现在的用户，更多的是利用 AI 技术服务业务，对技术要求相对最低，也是转行最容易的。

总的来说，对于想要转型 AI 产品经理的同学，我想给你 3 条建议：

如果你对硬件有足够的了解，那么可以尝试进入基础层发展；

如果你本身就是一个算法工程师，精通一些算法或开发框架，就可以考虑进入技术层，你将有天然的优势；

如果你和大多数的互联网产品经理一样，在自己所处的行业有足够的经验，但是对于 AI 技术了解还不够，那更适合来应用层发展，发挥自己对于业务的敏感度，发现行业的创新点。

课后讨论

根据你现在的经验和能力，你认为你更适合哪种类型的公司？目前你还需要补充哪些方面的能力？

最后，我希望今天的课程能帮助你结合自己的兴趣、能力项，选择出适合自己的赛道。也欢迎把你对人工智能领域和 AI 产品经理的思考写到留言区，我们一起讨论。

02 | 个人视角：成为AI产品经理，要先搞定这两个问题

你好，我是海丰。今天，我们来聊聊 AI 产品经理的工作职责与能力要求。

假设，你正在参加一个 AI 产品岗的面试，面试官问了你这两个问题，你会怎么回答：

你觉得 AI 产品经理和传统产品经理有什么区别？

在你看来 AI 产品经理的工作职责是什么？

你可别小瞧这两个问题，这实际上是面试官在考察面试者对 AI 产品经理这个岗位的理解程度，以及你到底有没有相关的实战经验，甚至在工作中有没有独立的思考。

因此，这两个问题如果能回答好，我们肯定能给面试官留下一个好的印象。而且，搞清楚这两个问题，也能帮助你在转型时更清楚这个岗位的要求，能够有的放矢地去补足自己的短处，发挥自己的优势。

AI 产品经理和传统产品经理有什么区别？

我们先来看看，AI 产品经理和传统产品经理的区别。从 “AI 产品经理” 这个词来看，它可以分解为“产品经理” + “AI”，AI 产品经理作为产品经理，核心职责和底层能力与传统产品经理是一致的，仍然是通过技术手段实现业务目标，但是它们在面向的对象，使用的技术，以及岗位边界这三个方面却大有不同，不同在哪呢？接下来，我详细给你讲讲。

首先，我们来看面向对象上的不同。传统的产品经理更多活跃在 C 端，他们面向的是用户，比如电商产品经理、策略产品经理、社区产品经理等等。但是 AI 产品经理更多活跃在 B 端，面向的是各大企业，而且 AI 产品更多应用在 B 端的场景下，比如云从科技的人脸识别产品，大多是给到银行，应用于银行的自动柜员机开户等场景。

之所以有这些不同，主要是 C 端场景的产品，前期大部分都需要烧钱获客。但是对当前市场来说，线上流量越来越贵，C 端产品想要有所突破越来越难，倒不如去做 B 端服务，通过给企业服务的方式完成 AI 产品商业化。

其次，是实现产品目标的技术手段不同。传统产品经理对接的是研发工程师，需要通过研发工程师的代码，来完成产品的功能实现，那他们使用的就是研发技术。

而 AI 产品经理对接的是算法工程师和研发工程师，需要对接算法工程师完成具体的模型，再对接研发工程师进行工程开发联调和上线。最终，我们得到的产品形态可能是一个 API 接口，没有所谓的页面。比如，腾讯的人脸识别产品，对外暴露的就是一个 HTTP 接口，接口名称为人脸检测与分析，接口描述是识别上传图像上面的人脸信息，API 地址为 https://api.ai.qq.com/fcgi-bin/face/face_detectface。

基于这种情况，AI 产品经理除了要懂一些基本的研发技术之外，也需要深入学习算法知识，比如工作中常用到哪些算法，以及它们的实现逻辑等等。甚至，由于整个 AI 行业仍处于早期阶段，也就是技术驱动的阶段，因此 AI 产品经理需要了解更多的技术知识。

只有当整个 AI 行业趋于成熟，技术壁垒逐渐打破的时候，AI 产品经理才可以对技术只要做到了解就够用了。至于 AI 相关的技术，以及这些技术你需要掌握到什么程度，我会在后面的课程中和你详细说。

最后，我们再来看看 AI 产品经理在岗位边界上的不同。这个边界可以分为两个方面，一个是岗位要求的边界，一个是和技术人员协作的边界。

我们先来看传统产品经理的岗位要求。传统产品经理的岗位要求非常清晰，一般来说，电商产品经理需要懂得电商业务、供应链、电商后端设计，了解用户裂变、营销活动设计，社区产品经理要有社区、社交产品经验。而且每一家企业相同岗位的 JD （职位描述）差别不会太大。但 AI 产品经理的岗位要求非常模糊，同样是 AI 产品岗位，有的公司会要求你具有行业经验，不要求你懂技术，而有的公司会要求你必须懂技术，甚至要求你能看懂 Python 代码。

为什么 AI 产品经理的岗位要求这么模糊和混乱呢？这主要是因为 AI 产品岗位比较新，很多公司还不能确定这个岗位要做的事情。有些技术导向型的公司就希望产品经理懂技术，甚至是研发转岗过来的，有些偏业务导向的，则希望产品经理有丰富的行业经验。当然，也不排除有些公司对这个岗位自己都没有想法，只是从网站上抄袭 JD。

对于这种情况，我的建议是，你要先确定你的目标与能力项，再去根据 JD 内容挑选合适的岗位，但也不要被 JD 迷惑，觉得有些公司要求技术很复杂，你就要去学习如何做机器学习算法模型。当然，如果你本身就是一个技术极客，有这方面的热忱，那就正好可以去这样的企业试试。

岗位要求的边界说完了，我们再来看看和技术人员协作的边界。这里说的不同主要体现在，传统产品经理和研发协作时候，只需要提供 PRD 文档（产品需求文档），对需求进行讲解，有问题及时提供解答就可以了。但是 AI 产品经理很难产出一个 ROI（投资回报率） 指标明确的 PRD 文档，以及我们和算法同学的沟通也不是一次需求宣讲就能完成的，通常我们需要进行多次的沟通确认，并且在沟通中逐渐清晰对于算法目标范围的设定。

这里有点绕，我来举个例子，我曾经给算法同学提过需求，要求他们做一个细分场景的信用评分模型。这个时候，我没有办法明确说你的模型区分度要达到 30 还是 31。我只能要求，这个模型在我们自己的业务样本下，模型区分度应达到 35 以上，毕竟算法本身同样具有不确定性。

AI 产品经理的工作职责和能力要求是什么？

正是因为 AI 产品经理和传统产品经理之间有这些不同，所以他们在工作职责和能力要求上也会有所不同。AI 产品经理需要知道，你在什么场景下，可以通过什么样的技术来解决问题，解决到什么程度。比如，在智能客服场景，你可以通过自然语言理解技术让机器去回复一些标准的问答，来减轻人工客服的压力，但对于强个性化的用户问题，还是需要人工介入来解决的。

接下来，我就通过 AI 产品上线的过程，来和你详细讲讲 AI 产品经理的工作职责。一般来说，一个 AI 产品上线的流程大致可以分为，需求定义、方案设计、算法预研、模型构建、模型评估、工程开发、测试上线等几个步骤。这其中，产品经理需要主导的节点有定义产品方向、设计产品方案、跟进产品开发和产品验收评估，那我们重点关注这四个步骤。

1. 产品经理对产品方向进行定义

在我们决定做一个 AI 产品的时候，不管是处于基础层还是技术层或者是应用层的 AI 产品经理，首要的职责都应该是去定义一个 AI 产品。这包括，搞清楚这个行业的方向，这个行业通过 AI 技术可以解决的问题，这个 AI 产品具体的应用场景，需要的成本和它能产生的价值。

这就要求 AI 产品经理除了具备互联网产品经理的基础知识之外，还需要了解 AI 技术的边界，以及通过 AI 技术能够解决的问题是什么。

2. 产品经理给出产品的设计方案

完成了产品定义之后，产品经理需要给出产品的设计方案。产品的设计方案会根据产品形态不同而不同，比如硬件和软件结合的 AI 产品，会包括外观结构的设计，机器学习平台的产品需要包括大量的交互设计，模型类的产品（推荐系统、用户画像）更多的是对于模型上线的业务指标的要求。

在这个阶段， AI 产品经理需要了解，现在市场主流算法都有哪些，不同的算法应用场景是什么，算法的技术边界在哪里。

比如，我们要从 0 到 1 做一个推荐系统，并且希望它能尽快上线，但如果模型同学打算用某种创新的深度学习模型去做就不合适了。因为深度学习的模型不仅技术难度高，而且模型训练时间久，需要的算力也更多，还有关键的一点是在推荐系统的 0 到 1 阶段，业务方领导会要求模型具有可解释性，所以创新模型就不如简单地协同过滤，加逻辑回归实现起来方便快捷。

只是对于技术人员来说，他们更希望用新技术去解决问题，如果我们完全不懂技术，用了深度学习模型之后，可能推荐系统上线周期不但增加了不少，而且效果也不一定会比传统的机器学习方式好多少。这个时候，产品经理就需要通过自己掌握的技术知识去把控技术和业务的平衡了。

另外还有一种更常见的情况，产品经理在和算法同学沟通方案的时候，他们会说，“这个模型我打算用 XGBoost 去做”，或者“目前很多数据没有结构化，我们需要先把一些数据结构化并且做归一化处理”等等。

相信很多同学看到这里都会有些懵，什么是 XGBoost，什么又是归一化？如果产品经理不停地去问算法同学这些问题，估计没有几个算法同学会愿意一点点去解释这些基础名词。

所以，对于 AI 产品经理来说，此阶段的能力要求为，基本的技术知识是必须要了解的。这些包括基本的统计学概率论知识，主流算法的基本原理和应用场景，以及这些算法可以帮助我们达成什么样的产品目标。

3. 产品经理跟进产品上线

产品设计完成之后，就到了工程和算法同学分别进行开发的环节了。在这个过程中，你需要承担一些项目经理的职责，去跟进项目的上线进度，协调项目资源。

因此，这个阶段产品经理至少要知道模型的构建过程是怎么样的，否则产品经理怎么能够评估当前进度到哪里了呢？另外，产品经理还需要知道模型构建过程中，每个节点的产出物，以及它的上下游关系。只有这样，产品经理才可以清楚评估项目进度，遇到需要协调资源的时候，也知道产品在这个阶段需要的是什么。

4. 产品评估

产品开发完成之后，产品经理还需要验收产品是否满足业务需求。

在这个阶段，产品经理的能力要求是，需要知道如何去评估一个模型，评估模型的指标都有哪些，具体评估的过程是怎么样的，以及评估结果在什么范围内是合理的。比如，你的算法工程师告诉你，这个模型的区分度是 40，那你至少要知道区分度是怎么计算的，40 是不是一个合理的数字。只有这样，产品经理才算对产品有完整的了解和把控。

总结

今天，我们先从三个方面一起讨论， AI 产品经理和传统产品经理的不同，它们主要是面向的对象、实现的技术手段和岗位的边界。具体的不同你可以看我整理出的表格。

总体来说，不管是处于哪个层级的产品经理，除了互联网产品经理的基础能力之外，还需要掌握的能力是：

了解 AI 技术的边界，知道 AI 能力可以做什么，不能做什么；

懂得基本的统计学、概率论知识，了解市场上主流的算法和原理，知道它们适合的应用场景；

知道模型的构建流程是怎么样的，构建过程中每个节点产出物是什么，以及其中的上下游关系；

要有能力去评估一个模型，知道模型评估的标准、评估的方法，评估结果的合理范围。

除此之外，我还想给你一点建议，如果你希望成为一个 AI 产品经理，除了在工作中积累行业、业务知识，还需要尽快补齐技术部分的知识。这样不管是内部转岗，还是去寻找外部机会，面试官都会认为你是有备而来，这是很大的加分项。

课后讨论

相对技术转型的同学来说，你觉得你的优势和劣势分别在哪？你想要怎么改进？

欢迎把你的困惑写到留言区，我们一起讨论。

03 | 技术视角：AI产品经理需要懂的技术全景图

你好，我是海丰。今天，我想和你聊聊 AI 产品经理需要懂的技术有哪些。

在转型成为 AI 产品经理之前，你一定最关心技术问题。这也是很多同学的疑问，比如：AI 产品经理要不要懂技术？现在市面上 AI 的课程特别多，但都面向算法工程师，内容太复杂，我到底要掌握到哪种程度呢？

这些疑问我现在就能给你一个肯定的回答：AI 产品经理一定要懂技术。这就像一个产品经理要懂研发技术是一样的道理。但是，我们具体要掌握哪些技术，掌握到什么程度，是不是要像技术人员一样去学习市面上那些 AI 课程呢？这就是我们今天要解决的问题。

这节课，我会站在 AI 产品经理的视角，结合一张 AI 技术全景图，来帮你解决学什么技术和学到什么程度的问题。让你能够和算法工程师同频沟通，知道该如何去管控 AI 项目进度，让你最终有能力去牵头主导一个 AI 项目。

总的来说，AI 产品经理需要知道五方面的技术知识，分别是数学统计学相关的基本概念，模型构建的整个流程，常见算法的原理和应用场景，模型验收的具体指标和方法，以及模型相关的技术名词。其中，模型的构建流程、算法的技术知识和模型的验收标准这三项知识非常重要，它们也是 AI 产品经理必备的核心能力，所以我还会在后面的课程中单独来讲。

数学统计学基础概念

首先，我们来看产品经理需要学习的数学统计学知识。你可能会奇怪，作为一个产品经理，为什么还要学数学呢？

因为今天的各种人工智能技术都是建立在数学模型基础之上的，必备的数学统计学知识是理解人工智能的基础，所以作为 AI 产品经理来说，这些基础知识也是必须要学习的。

只不过，对于 AI 产品经理来说，虽然不需要了解数学公式，以及公式背后的逻辑，但我们需要知道数学统计学的基本概念，以及概念的落地应用。所以，我不会给你讲导数和偏导数的公式，也不会讲贝叶斯推导，我只会把我在工作中接触到的，比较多的数学和统计学概念整理出来。了解这些概念，知道它们的作用，对我们来说就足够了。

这些数学和统计学的知识可以分成两大类：一类是线性代数中的基础名词，如标量、向量、张量；另一类是概率统计中的常见分布，如正态分布、伯努利分布。接下来，我们先从线性代数中的基础名词讲起。

线性代数

我们拿起笔，先在本子上画上一个个小圆点，每个这样的点可以代表一个整数、实数或者复数。这样一个单独的数，在线性代数中我们叫它标量（Scalar）。

如果我们把这些标量按一定顺序组成一个序列数，如 {x1 , x2 , x3 ,..., xn}，这样的数列就叫做向量（Vector）。你也可以理解成，我们给一个个单独的数（标量）增加了一个维度，它就变成了一个数组（向量），所以向量可以看做标量的扩展。

x=⎣⎢⎢⎢⎡​x1​x2​⋮xn​​⎦⎥⎥⎥⎤​

又因为每个向量都由若干标量构成，如果我们把向量中所有标量都替换成相同规格的向量，就会得到一个矩阵（Matrix）。同样的，矩阵也可以看作是向量的扩展，是我们给原始的向量增加了一个维度，让它变成了一个二维数组。

⎣⎡​x11​x21​x31​​x12​x22​x32​​x13​x23​x33​​⎦⎤​

到这你是不是有点迷糊了？这样一来，矩阵和标量又有什么关系呢？

比如说，我们可以把矩阵看成一个灰度图像，如果一张灰度图像是由 32*32 个像素点组成，那我们就可以把这个图像看成是一个32*32 的矩阵，里面的每一个像素点就是由灰度值（0 到 255）组成的标量。

再比如说，在我们做用户画像的时候，如果有 N 个用户，每个用户有 M 个特征，利用它们，我们就会得到一个用户画像。它可以看成是一个 N*M 的矩阵，矩阵中的每一个点，都是某一个用户对应的某个特征，是一个具体的数值，也就是标量了。

如果我们将矩阵中的每个标量元素再替换成为向量的话，就会得到一个张量（Tensor）。这个时候，张量就可以看作是矩阵的扩展，是给原始的矩阵增加了一个或多个维度之后得到的。我们也可以把张量理解成是矩阵向任意维度的扩展，它是深度学习框架中的基本概念。

到这里，你可能想问，概念这么多，怎么才能记得住啊？这里我再教你一个小技巧。我们可以把标量看成是零阶张量，向量看成是一阶张量（一维数组），矩阵看成是二阶张量（二维数组），而且任意一张彩色图片都可以表示成一个三阶张量。

概率统计

在概率统计中，我们最需要掌握的就是概率的分布。举个例子，我们在做一个预测用户评分的时候，这个分数可能是购买倾向，也可能是信用评分。按照经验，这个评分结果应该是符合正态分布的。这个时候，如果算法同学的模型预测出来的结果不符合正态分布，我们就必须对这个结果进行质疑，让他们给出合理的解释。

从这个例子中我们知道，概率分布是我们用来评估特征数据和模型结果的武器。 那产品经理怎么才能利用好这个武器呢？首先，我们要掌握常用的概率分布的类型。其次，我们还要知道业务场景下的特征数据和模型结果的分布，以及它们应该符合哪种分布类型。这样，产品经理就可以把概率分布应用于日常的工作中。

因为概率的分布和随机变量的类型相关，随机变量又可以分为离散型随机变量和连续性随机变量两种。为了方便你查看，我把这两种变量对应的概率分布的类型都总结在了下面这张图里。

这其中，最常见的概率分布包括伯努利分布、二项分布、泊松分布和正态分布，这也是我们要重点掌握的。下面，我们一一来讲。

伯努利分布也可以叫做零一分布。如果我们只进行一次实验，并且这个实验只有两个结果，分别记为 0、1，这就符合伯努利分布。比如在电商场景下，我们设计一个抽奖游戏，某个用户有没有中奖，这个结果就应该符合伯努利分布。

如果重复多次伯努利实验，并且让每次实验都相互独立，让结果只有 0、1 这两种。那 n 次伯努利实验中，结果为 0 的次数的离散概率分布就是二项分布。你也可以理解为，抛 n 次硬币，出现正面次数的概率的分布。

泊松分布描述的是单位时间内，随机事件发生的次数。 比如，我们的频道页平均每分钟就有 2000 次访问，那如果让我们计算出下一分钟能够有 4000 次访问的概率，这个结果就是泊松分布。

最后，我们来看正态分布，它也叫高斯分布。正态分布的曲线特点是两头低、中间高，左右对称，所以我们也经常叫它钟形曲线。下图就是一个标准的正态分布图，你看到之后一定会觉得非常熟悉。

在现实生活中，人的很多特质都符合正态分布，比如人的身高、体重、运动量、智力、收入、甚至信用情况等等。

模型构建、算法知识以及模型验收

课程一开始的时候，我就说了，今天对于建模流程、算法知识以及模型验收这三部分内容，只要做到大概的印象就可以，因为这些是后面课程的重点内容。

所以接下来，我会总结出一个知识结构图，给你讲解其中的重要节点，来帮助你形成一个大体的知识框架。这样，当你后面进行学习的时候，再把具体的知识填充到里面，就能形成自己的知识体系树了。

对于模型构建来说，我们一定要知道模型的建模流程都有哪些节点，这些节点都牵扯了哪些角色，每个角色又承担了什么工作，每个节点的产出物是什么，以及每个节点合理的工作周期又应该是多长时间。

一个模型构建的整体流程，它一共包括五个阶段，分别为模型设计、特征工程、模型训练、模型验证，以及模型融合。这五个阶段完成之后，模型就会交付到产品端了。

建模的过程实际上就是应用某个算法技术来实现一个模型的过程，这其中最重要的，就是我们选择的是什么算法。所以，作为 AI 产品经理，你要知道目前的技术现状能解决什么问题，在什么场景下有哪些机器学习算法，以及每种算法适合解决哪类问题。

我也按照常用的算法分类方式，把一些常用算法整理在了脑图里。因为算法是未来你区别于普通产品经理的重要抓手，所以我后面会花一整个章节来为你讲解当前主流的算法。

至于模型验收的工作，我也会单独用一个模块来和你详细讲讲。其中，模型验收涉及的评估手段和指标，评估指标背后的计算逻辑，以及怎么选择合适样本进行测试的方法，你都一定要掌握好。

模型相关技术名词

在我刚开始转做 AI 产品经理的时候，遇到过这么一件事儿，我们的用户年龄预测模型训练时候 的 KS 值（模型中用于区分预测正负样本分隔程度的评价指标）很高，但是 OOT 测试的时候 KS 还不足 10。当我拿着结果去找算法同学沟通的时候，他就说了一句，“可能是过拟合了，我再改改”。

我刚才提到的 KS、OOT 测试和过拟合你都知道是什么意思吗？如果你知道，说明你的技术基础还不错，如果你还不知道也没关系，当时的我就不知道。

就因为不知道什么是过拟合，所以我什么问题都提不出来，只能自己回去翻书，恶补基础。不过，现在我的算法工程师再和我说出现过拟合问题，我就不会轻易放他离开。因为这明显是模型样本选择出了问题，还有模型验证的时候他也没有认真做，不然这个问题根本不应该到我这里才被发现。他们应该在模型验证的时候就发现这个问题，并且处理掉。

因此，了解一些算法相关的技术名词是非常有必要的，这能帮助我们和算法工程师站在一个频率上对话，提高协作效率和项目效果。

过拟合和欠拟合

我们和算法同学聊某个模型表现的时候，他们常常会提到过拟合和欠拟合。它们是什么意思呢？想要理解它们，我们还得先说说偏差和方差是什么。

偏差指的是模型的预测结果和实际的结果的偏离程度。如果偏差比较大，就说明模型的拟合程度比较差，也就是欠拟合（高偏差），说的直白一些就是模型预测不准。造成欠拟合的原因可能是特征少或者模型训练不足。

而方差指的是模型在不同测试样本上表现的稳定程度。假设一个分类模型，在不同样本上测试，得到的 KS 值有时候是 20，有时候是 40，这就说明这个模型方差偏大，模型效果不稳定，在一部分数据上表现好，在另一部分数据上表现差，也就是过拟合（高方差）。造成过拟合的原因可能是特征过多或者训练集不够。

特征清洗、数据变换、训练集、验证集和测试集

除了欠拟合、过拟合之外，我们还经常听到算法工程师提到当前特征数据质量不好，他们需要花时间进行特征清洗。特征数据清洗简单来说，就是对数据进行清洗去掉重复值、干扰数据，以及填充缺失值。一般来说，数据清洗需要反复进行很多次，也会持续很多天，当然具体的工作量也要视数据质量和量级决定。

除此之外，数据有时候还需要进行数据变换，处理成方便模型使用的数据形式。举个例子，我们需要使用用户的身高作为模型特征，但是有的数据是用厘米作单位，有的数据会使用米作单位。这个时候，我们就需要使用归一化，把数据的单位统一成米或者厘米。归一化也是数据变换最主要的手段。

最后，关于模型训练我们还需要知道三个概念，训练集、验证集和测试集。训练集是让机器学习的样本集合，用来拟合模型。验证集是模型训练过程中，用来对模型性能做初步的评估，用于模型参数调优。测试集是最终用来评估模型效果的。

跨时间测试和回溯测试

模型训练结束，我们就要对模型进行测试了。模型测试阶段，我们需要掌握两个关键概念，分别是跨时间测试和回溯测试

跨时间测试也叫 OOT 测试，是测量模型在时间上的稳定性。回溯测试就是用真实的、过去一段时间的数据，构造出一个模拟的环境（回溯环境），让模型在历史的那段环境中运行，得到历史某个时间点的模型结果。回溯测试在量化投资中的应用比较广泛。

总的来说，跨时间测试是在模型上线之前就应该要做的事情，回溯测试是指模型已经存在并且已经上线了，我们想要看模型在历史某个时间点的数据表现怎么样的时候，才会进行的测试。

联合建模与联邦学习

联合建模和联邦学习的概念你可能还比较陌生，它们经常会在金融领域会用到，而且也是未来建模的一个发展方向。

所谓联合建模，就是使用三方公司（如银联、运营商、电商）的数据，在对方的环境下部署一个模型，然后我们通过接口调用这个模型的结果，再把结果融合到我们自己的模型上。通过 这种方式，可以弥补我们自有业务中数据不足的问题。

但是联合建模会有一个弊端，就是当我们使用三方公司的数据建模之后，在调用的时候，必须传入一个主键来获得模型结果，这个主键如果是用户手机号，身份证号等敏感信息，就会有个人信息泄露的风险。

这个时候，联邦学习就有了用武之地。你可以把联邦学习理解成是特殊的联合建模，或者一种分布式的模型部署方式。使用联邦学习之后，我们调用部署在第三方模型的时候，输入的就不是具体的业务数据而是模型参数，这样就不会有个人信息外传的风险了。目前，蚂蚁、腾讯、京东、微众银行，它们各自都有很成熟的联邦学习解决方案了。

总的来说，如果以后你的业务要使用三方数据，就可以考虑做联合建模。如果想要避免个人信息外传的风险，就可以考虑使用联邦学习技术。

总结

今天，我带你了解了 AI 产品经理应该懂的技术，以及这些技术需要掌握到的程度。

对于数学统计学基础，我们只要掌握今天讲的概念定义就可以； 对于模型构建过程、算法知识和模型验收，你一定要深入了解，知道它们具体的内容和原理；对于模型相关的技术名词，你只要理解我今天列举的常用名词就够了，后面在工作中你可以再慢慢积累，形成你自己的知识体系。

最后，我还想再多说几句，有些同学一看到技术知识，就很容易一头扎进去。但是这些名词在转行初期，你只需要做到知其然就可以。因为产品经理的职责是善于把技术作为工具和手段，所以我们学习这些专业名词的目的也是为了更好地沟通和推进工作，更好地完成业务目标，实在没必要把它们的来龙去脉研究透彻。

当然，成功转型后，这些技术知识我们也要进行精进。不过，那个时候，在具体业务的场景下，你就会有更明确的学习方向了。同时，有了算法同学的帮助，你的学习效果也会事半功倍。

我将今天的主要内容总结为了如下所示的思维导图，来帮助你加深理解与记忆。

课后讨论

结合你自己的工作经验，你觉得哪些业务场景属于泊松分布，哪些业务场景属于正态分布呢？

期待在留言区看到你的思考和提问，我们下节课见！

04 | 过来人讲：成为AI产品经理的两条路径

你好，我是刘海丰。

通过前面几节课，你已经知道了 AI 领域的发展现状，AI 产品落地的工作全流程，以及 AI 产品经理的能力模型。这些都是你成为或者说是转型成为一个 AI 产品经理之前，必须要储备的知识。

掌握了这些之后，想要真正成为 AI 产品经理，你还需要一些切实可行的落地路径。我觉得，我们在做出每一个职业转变的决定之后，都必须要制定好相应的实现路径，这不仅能帮助我们明晰每个阶段的目标，还能让我们坚定不移地走向终点。

今天，我就结合自己的转型经验，给你梳理出两条切实可行的转型路径。而且，我会把我踩过的“坑”都总结出来，当你真正去走的时候，就能少走很多弯路啦。

内部转岗：从下到上，由点及面

首先，我们来看这样一种情况。公司突然要上线一个 AI 项目，领导希望你能从产品经理转变成一个 AI 产品经理去推动这个项目。当然，目前这种情况并不多见，但随着越来越多的公司认识到 AI 的重要性，并且建立了算法团队，这种情况就会变得很普遍。我就是在这样的情况下转型成功的，如果你也正面临这种情况，我建议你参考我当时的经历。

我最初是产品和研发的总负责人，做的是传统的互联网业务。当时机缘巧合，我们服务的客户让我们帮他们做一个用于金融风控场景的用户信用评分产品。这种产品，其实底层就是基于大数据和机器学习算法，来对贷款人的还款能力和还款意愿进行预测。我就通过这样一个契机主导了这个 AI 产品，走上了 AI 产品经理之路。

但是由于之前完全没有接触过算法，我在最初接触这个产品的时候，一直都是“懵”的。还好，当时有一个算法团队的负责人协助我来完成相关工作。但是这样一来，我就从一个产研负责人变成了算法配合人。整个产品的交付形式、节奏、上线标准，基本都是由算法负责人决定，我只能做一些执行层面的事情。

当然，为了项目能够顺利上线，短暂去协助算法做支持是可以的，但我不可能一直处于被动的局面中，所以我当时的做法是 “从下到上，由点及面”。那我具体是怎么做的呢？我其实就是从底层知识和细节问题入手，去拓展学习整个知识体系和相关知识点。这里，我就和你分享两个例子。

比如，在项目周会上，大家介绍项目进展的时候，算法同学经常会提到，我们本周做了洗数工作，或者我们在筛选特征。那我就会带着具体的问题去进行补课，像是 “洗数怎么做的， 筛选特征怎么做的，等到有拿不准的问题再去请教算法同学，基本上他们都会倾囊相授。这样一来，我再把这些碎片化的知识梳理出来，慢慢地就形成了一个相对完整的知识体系。

再比如，我知道有个算法叫做 GBDT，也知道有个算法叫做 LR。但我根本不知道它们代表什么意思，都是做什么的，对我来说算法就是个黑盒子，可为了能带领整个 AI 项目团队，我又一定要弄懂这些知识。

所以，我先是向算法同学学习，再加上自己上网查询资料，去了解机器学习算法的几种分类，以及每种分类下的常用算法。其中 LR 是逻辑回归，GBDT 是优化后的决策树，它们都是用于解决分类问题的算法。就这样，我慢慢梳理出来了一棵和算法相关的知识树。

除了学习和算法相关的知识之外，数学、统计学，概率论这些和 AI 相关的名词，我也进行了解和学习。因为在和算法同学沟通需求的时候，他们经常会提到这类名词概念，所以我就将这些名词概念组织整理出来，慢慢向上汇总，形成了一棵和数学相关的知识树。

另外，既然涉足了 AI 领域，我觉得有必要对整个行业有所了解，比如算法同学都关注了哪些行业会议和业界大牛。根据我的经验，这些 AI 技术视野相关的东西，不需要集中学习，随着我们的关注慢慢补充就可以了。

以上，就是我当时如何一点点弥补我在 AI 技术知识上的不足的，并最终转型 AI 产品经理的全部过程。如果你与我类似，都是在工作中遇到了做 AI 产品的机会，我建议你可以参考我的路径，暂时让算法同学去主导项目，同时由点及面地去学习，补充知识和积累经验。

外部求职：从上到下，从面到点

但如果你就是一个刚毕业的学生，想要踏足 AI 行业，或者是一个技术同学，希望成为一个 AI 产品经理，那我建议你采用 “从上到下，从面到点”的学习路径。这句话的意思是，你要先了解全局，从全局中挑出一条线，再抓住这条线的一端，一点点地深入到具体细节的知识点。

这么说还是太抽象了，我给这个路径总结了 4 个步骤，下面我再详细说说。

第一步，对 AI 行业有全局的认识，持续了解 AI 发展。

作为产品经理，我们要站在一定的高度上去看整个行业，了解整个行业的全景，产业链条，商业模式，人才结构，甚至是每个方向的头部公司情况。除了对全局的把控之外，还需要实时去关注行业的变化，技术的更迭，只有站在行业的前沿，我们才有可能抓到新的机会点。

我建议你可以参加一些 AI 产业相关的会议，你可以从类似于 “活动行” 等 App 上面搜索这些会议的信息再报名，也可以找一些 AI 产业相关的公众号，看看能不能从上面发现这些会议信息，再积极报名。

说到公众号，我认为在刚开始决定转型的时候，你可以不用关注那种技术导向非常强的公众号，上来就看非常深的技术文章。因为可能还没有了解到行业新闻，你就已经被一些数学公式或算法模型给打败了。

我推荐你关注类似《AI 前线》这样的公众号，它是面向 AI 爱好者、开发者和产品经理的，它关注的领域比较广泛，涉及国内外的 AI 相关公司、技术的资讯，内容也不算太过于技术化，作为入门 AI 产品经理的信息来源足够了。

除了公众号，我建议你去知乎上看看和 AI 相关的专栏和问题，再买一些入门的书籍。只要你善于发现，好的学习资源是非常多的。

查看这些资料只是我们了解行业的第一步，最重要的是，你一定要对这些信息进行归纳总结，提炼出自己的思考。你可以尝试自己去搭建一个行业的框架，框架中可以包括很多方面，我把它们进行了总结：

行业专有名词、基本术语

行业的整体规模，未来的发展空间

整个行业的生命周期，当前处于哪个阶段

行业的产业链，上下游供应商情况

行业中不同企业的商业模式

行业整体的人才结构分布情况

当前行业中头尾部企业

这样的话，当你去面试 AI 产品这个岗位的时候，因为你之前对整个行业做过充分的总结，就可以很有结构地表达出你对这个行业的看法，你的答案也会比其他竞争者更有高度。这对你提高面试通过率，甚至是面试定级都非常有帮助。

第二步，给自己定方向。

对于整个行业的全景有了基础的认识之后，你除了要持续去跟进这些信息，接下来就需要开始评估自己的兴趣偏好和能力优势，为自己确定方向了。

首先，你要分析自己的兴趣偏好，更倾向于商业化去做 ToB 服务，还是更倾向于底层的技术或技术上层的应用，通过自己的兴趣偏好选出自己心仪的行业和公司。

其次，你也要考虑自身的能力优势，对于自己心仪的公司，你有多大的差距。

如果差距实在太大，比如你喜欢寒武纪这样做 AI 芯片服务的公司，可是自己对 AI 技术完全不懂，也从来没有做过硬件相关的产品。那你就可以考虑曲线救国，尝试先去对技术要求没有那么高的公司试试，让自己踏入这个行业再说，或者，你也可以考虑这家公司对技术要求没有那么高的岗位，之后再寻求技术转岗。

当然，如果你非要一步到位，可能难度比较高，但也不是不可能，你要做好充足的技能储备，有着坚定的信心。

最后，在确定了自己的方向之后，你可以定向分析一下这个细分方向上的几个头部企业，它们的商业模式、上下游企业、可提供的岗位，以及每个岗位的职责要求，再去定向地补足自己的差距。

另外，除了分析头部企业之外，我建议你再看看这个行业中尾部的一两个企业，分析它们为什么会处于行业尾部，是入场时间太晚，还是商业方向不确定，又或者是相关资源不足。这也能够让你对这个细分领域有整体的了解。

第三步，补足技术。

在确定了自己的未来方向之后，你就可以有针对性地去补足技术上的短板了。

如果你倾向于去做机器学习平台的产品经理，就去重点学习模型建模的过程，甚至要自己尝试去使用一些公共的机器学习平台，去创建一个算法模型。比如阿里云的 PAI、百度的 EasyDL，它们都是很优秀的建模平台。

如果你想做大数据风控方向的 AI 产品经理，就需要知道机器学习模型内部逻辑，甚至要了解一下算法的逻辑是怎么样的。

在学习技术知识方面，我建议你可以购买一些入门的课程，可以先从简单的内容学起，再慢慢深入。在选择课程的时候，我建议你避开一些包含大量数学公式的课程，不是因为这些课不好，而是因为它们主要面向数据工程师或者算法工程师，对产品经理来说学起来太困难。

第四步，总结、输出、实践。

总结、输出、实践，这几个词你肯定听过很多遍，但我还是要说，你可别嫌我啰嗦。

学习这件事，去学习只是第一步，更重要的是做总结。但只是总结还不够，我希望你还能借着这些总结去做输出，强迫自己整理出一篇文章，或者给其他人分享。当你可以用浅显的语言把复杂的知识讲解清楚的时候，就说明你对这个知识真正掌握了。

基础知识掌握之后，你就可以开始实践了。我建议你先尝试去面试一些 AI 公司，感受一下具体 AI 企业关注求职者哪些技能，他们都会提出哪些问题，再去迭代自己的技能。这样，去心仪的公司面试成功的几率就会更高。

总结

今天，我和你分享了两条转型 AI 产品经理的路径，这里我们再一起对里面涉及的方法做个总结。

如果你是内部转岗，我建议你采用从下到上，由点及面的学习方式，可以暂时先让算法同学主导整个项目，但是对于工作中任何一个细节问题你都不要放过，想办法去补充相关知识，建立自己的知识体系。

如果你是外部求职，我建议你采用从上到下，从面到点的学习方式。总的来说，就是先了解 AI 行业，再给自己定好方向，然后补足技术，最后做总结多输出，多实践。

这两条路径总结起来很简单，但是里面涉及的每一点，实现起来都不容易。总的来说，我希望你能记住一句话，多总结、多输出，然后用以教促学的方式来迭代自己对 AI 知识的领悟。

课后讨论

目前，对于行业的知识，产品经理的岗位职责以及转型准备上，你还有什么疑问吗？你能根据自己的理解再加上收集的一些信息，去搭建一个行业框架呢？当然，如果你能整理出一个脑图出来，那就再好不过了。

如果你的朋友也正在为不知道怎么转型 AI 产品经理而苦恼，那就快把这节课分享给他吧！如果你不想自己去找学习资源的话，课程的最后，我还整理出了一些我认为值得关注和学习的公众号、图书和视频课程，如果你有兴趣可以参考一下。我们下节课见！

拓展阅读

我把我在转型时关注的一些网站和资料梳理出来了，你可以根据你的情况进行选择。

1. 行业知识

你可以关注《爱分析》这个公众号，它会发布一些类似《智慧医院厂商全景报告》、《2020 爱分析中国人工智能厂商全景报告》、《中国知识图谱应用趋势报告》的行业报告，也会组织一些类似《2020 爱分析金融机构数字化论坛》的线下论坛。

另外，你也可以关注艾瑞咨询这样的网站，上面有一些类似《2020 年中国 AI+ 零售行业发展研究报告》的行业报告。这些信息相对体系化，可以帮你梳理整个行业框架的思路。

除此之外，你也可以关注 《36 氪》这样的新闻网站，用一些及时的碎片化新闻，来实时了解当前行业动态。

2. 技术基础

你可以关注一些技术类的公众号，比如《大数据文摘》、《大数据分析与人工智能》、《机器之心》、《AI 启蒙者》等等。另外，你也可以关注我自己的公众号《成为 AI 产品经理》，我在上面分享了很多关于转型 AI 产品经理的心得。

3. 技术进阶

如果想提高技术能力，我建议你可以学习这两个视频课程：李宏毅的《Machine Learning》和吴恩达的《机器学习》课程。这两门课程的老师讲解细致，内容通俗易懂，也是机器学习的经典课程，非常推荐你学习。

除了一些视频教程之外，你还需要阅读一些技术书籍。我首先推荐的是李航的《统计学习方法》，这是我在最开始接触 AI 时候，我们算法团队负责人推荐给我的，可以作为算法学习的基础。不过，因为它的专业性比较强，非技术出身的产品经理看起来可能有些难度，你可以选择性地学习。

另外一个就是周志华的《机器学习》，也就是我们俗称的西瓜书。这本书覆盖面广，有大量的实例可供参考，对于非技术人员来说比较友好。

05 | 通过一个 AI 产品的落地，掌握产品经理工作全流程

你好，我是海丰。

对于任何一家互联网公司来说，用户流失都是我们必须要关注的一个问题。就拿我们公司的电商平台来说，一个很常见的问题就是，新用户的增长逐年缓慢，同时还伴随着老用户的不断流失。当遇到这种情况的时候，作为产品经理，我们该采取哪些措施，来降低用户的流失率呢？

今天，我就通过我曾经主导过的一个预测用户流失的项目，带你了解一个 AI 产品从筹备到上线的全流程。从中，你可以体会到 AI 产品经理的完整工作流程是什么，每一个环节都有什么角色参与，每个角色需要做什么工作，他们的产出又都是什么。这能让你明白自身能力和岗位之间的差距，也是你自己主导一个 AI 产品的时候，可以用来借鉴和参考的。

不过，我今天讲的上线流程是基于我们公司的业务场景和经验总结出来的，不能保证和所有公司的流程都一致，但无论如何，我们做事的底层逻辑都是一样的。

话不多说，我们正式开始今天的课程吧！

业务背景

我们公司是一个电商平台，有段时间我们发现，每个月老用户流失的数量已经远高于新用户的拉新数量，为了防止这个缺口越来越大，我们决定对可能流失的用户做提前预警，同时采取一些措施来挽留这些用户，实现这个目标的前提就是要开发一套用于预测流失用户的产品。

那具体怎么做呢？我先把我们当时开发这个产品的流程放在下面。接下来，我再分步骤给你详细讲讲，每一步我们都是怎么做的，以及要重点注意什么。

产品定义

当决定实现这个产品之后，首先我们要做的就是定义产品需求，明确做这件事情的背景、价值、以及预期目标都是什么。

在这个环节中，我们会和业务方共同沟通，来决定我们的业务预期目标是什么，期望什么时候上线。这里，我提到的业务方可能是运营同学，也可能是商务同学，这和你是一个 ToC 还是 ToB 的产品经理相关。

在这个预测用户流失的项目中，我的业务方就是运营，我们的期望是通过算法找出高流失可能性的人群，对这些人进行定向发券召回。这个项目的最终目标是，通过对高流失可能性的人群进行干预，让他们和没被干预过的人群相比，流失率降低 5%。

同时，由于我们运营计划是按月为节奏的，所以这个模型可以定义为离线模型，按月更新，每月月初预测一批流失人群。并且，我还期望这个模型的覆盖率能够达到 100%，让它可以对我们业务线所有用户进行预测。这些就是我们对模型的更新周期、离线 / 实时模式、覆盖率等相关要求了，我们需要把它们都记录到一份需求文档中。

技术预研

需求确定之后，产品经理需要和算法同学进行沟通，请算法同学对需求进行预判。具体来说，就是要判断目前积累的数据和沉淀的算法，是否可以达到我们的业务需求。如果现有数据量和数据维度不能满足算法模型的训练要求，那产品经理还需要协助算法同学进行数据获取，也就是后面我们要说的数据准备工作。

当然，即使数据达到算法的需求，产品经理也还是需要协助算法同学做数据准备，因为垂直业务线的产品经理更了解本领域的数据。

另外，在这个环节中，你可能还需要根据算法的预估，对需求的内容进行调整。比如，我们原定覆盖率为 100%，但是和算法同学沟通后发现，有部分刚刚注册的新用户是没有任何数据的。对于这部分人，算法无法正常打分，而且新用户也不在流失用户干预范围内，所以，我们后面会根据目前新老用户比例得到新的覆盖率指标，再把它放到需求中去。

数据准备

然后，我们就进入数据准备的环节了。这个环节，我们需要根据模型预研的结果以及公司的实际情况，帮助算法同学准备数据。

原因我们刚才也说了，就是因为产品经理基于对业务的理解，能判断哪些数据集更具备代表性。而算法同学，只能根据现有的数据去分析这些数据对模型是否有用，因为有些业务数据算法同学是想不到，所以自然不会去申请相关数据权限，也就不会分析这部分数据存在的特征。

比如说，我们在过去的用户调研中发现，用户一旦有过客诉并且没有解决，那么大概率会流失。如果出现了客诉，用户问题得到了很好地解决，反而可能成为高粘性的客户。这时候，我们就会把客诉数据提供给算法同学，请他们去申请数据表权限，评估数据是否可用。反之，如果我们没有把这些信息同步给算法同学，那么很可能我们就缺失了一个重要的特征。

在数据准备的部分，由于数据的不同，我们的获取方式也会有很大的差别。总的来说，数据可以分为三类，分别是内部业务数据、跨部门集团内数据以及外部采购的数据。接下来，我就分别说说这些数据怎么获取。

1. 获取内部业务数据

内部数据是指部门内的业务数据，如我们的订单数据、访问日志，这些都可以直接从数仓中获取。当然还有一些情况是，我们想要的数据目前没有，你可以提需求让工程研发同学留存相关数据，比如，之前有些用户的行为数据没有留存，那我们就需要增加埋点将这些数据留存下来。

2. 获取跨部门集团内数据

跨部门集团内数据指的是其他部门的业务数据，或者是统一的中台数据，这些数据需要我们根据公司数据管理规范按流程提取。在提取数据的时候，我们需要注意结合业务情况去判断该提取哪些数据。

3. 获取外采数据

最后是外采数据的获取。在公司自己的数据不足以满足建模要求时候，我们可以考虑购买外部公司数据，或者直接去其他拥有数据的公司进行联合建模。

这个时候 ，我们就需要知道市场上不同的公司都能够提供什么。比如极光、友盟提供的是开发者服务，所以它们可以提供一些和 App 相关的用户画像等数据服务，再比如运营商可以提供和手机通话、上网流量、话费等相关数据等等。

直接采购外部数据非常方便，但我们一定要注意，出于对数据安全和消费者隐私保护的考虑，我们和第三方公司的所有合作都需要经过公司法务的审核，避免采购到不合规的数据产品，对自己的业务和公司造成不好的影响。比如说，在用户流失预测模型这个项目中，我们可以去调研自己的用户近期是否下载了竞品的 App，或者经常使用竞品 App，这都可以作为用户可能流失的一个特征。

当然，在数据准备的环节中，我希望你不仅能根据算法的要求，做一些数据准备的协助工作，还能够根据自己的经验积累，给到算法同学一些帮助，提供一些你认为可能会帮助到模型提升的特征。

具体到预测用户流失的产品上，我们可以根据经验提出用户可能流失的常见情况，比如我们可以参考客诉表，看看有哪些用户在客诉之后，问题没有解决或者解决得还不满意，那这些用户我们大概率就流失了，或者我们也可以分析用户的评价数据 ，如果用户评价中负面信息比较多，那他们也可能会流失等等。

模型的构建、宣讲及验收

完成数据准备之后，就到了模型构建的环节。这个环节会涉及整个模型的构建流程，包括模型设计、特征工程、模型训练、模型验证、模型融合。

即便你不需要进行模型构建的实际工作，你也需要知道这个流程是怎么进行的，这方便你了解算法同学的工作，以便评估整个项目的进度。这就好比互联网产品经理不需要写代码，但也要知道研发的开发流程是怎么样的。

不过，今天我们不会重点来讲具体的过程，我先卖个关子，你今天先记住这几个关键节点的名称，下节课我们再详细来讲。

模型构建完成之后，你需要组织算法同学对模型进行宣讲，让他们为你讲明白这个产品选择的算法是什么，为什么选择这个算法，都使用了哪些特征，模型的建模样本、测试样本都是什么，以及这个模型的测试结果是怎么样的。

对于流失预测模型来说，我需要知道它的主要特征是什么，选择了哪些样本进行建模，尤其是测试结果是否能够满足业务需求。当看到流失预测模型的测试结果的时候，我们发现模型召回率、KS 值都达到了标准，但是模型覆盖度只有 70%，比预期低了不少。但是，由于我们业务侧也只需要找到一部分流失用户进行挽留操作，所以，暂时不能覆盖全量人群我们也是可以接受的。像这样的问题，都是你在模型宣讲环节需要去注意并且去评估的。

在模型宣讲之后，你还需要对模型进行评估验收，从产品经理的角度去评判模型是否满足上线的标准。那在这个流失用户预测的项目上，我们就需要重点关注模型的准确率，是否模型预测的用户在一定周期后，确实发生了流失。如果模型准确率较低，将一些优惠券错配到了没有流失意愿的用户身上，就会造成营销预算的浪费。

模型宣讲环节的具体内容，以及模型宣讲后，我们对模型进行评估验收的具体指标都有哪些，我会在模型验收的章节和你细说，这里你先不用着急，你只要知道有模型宣讲和模型评估验收这两个环节，以及它们的整体流程，让自己对 AI 产品经理的工作流程有一个整体的理解就可以了。

工程开发及产品上线运营

模型通过了验收之后，我们就可以进入工程开发的环节了。其实在实际工作中，工程开发工作通常会和算法模型构建同步进行。毕竟，算法同学和工程同学分属两个团队，只要模型的输入输出确定之后，双方约定好 API 就满足了工程同学开发的条件了。

工程开发完成之后，就可以进行工程测试验收了。这和传统的互联网产品上线流程区别不大，也就是测试同学进行测试，发现 BUG 后提交给工程同学进行修复，再当测试同学测试通过之后，产品经理验收，或者叫做产品上线前走查，这里我就不再多说了。

另外，在工程上线之后，为了评估 AI 产品整体的效果，我们可以通过对上线后的系统做 AB 测试对比传统方案，进而量化 AI 产品的效果提升。这时候，我们需要关注在产品定义阶段对于产品的指标和目标期望。

相比于一般的互联网产品经理，AI 产品经理在产品上线之后，还需要持续观测数据的表现（模型效果）。因为 AI 模型效果表现会随着时间而缓慢衰减，你需要去监控模型表现，出现衰减后需要分析发生衰减的原因，判断是否需要模型进行迭代。

小结

一个 AI 产品构建的整个流程是从产品定义，到技术预研、数据准备、模型构建，再到模型验收和工程开发上线。其中，有三个节点是我们需要重要关注的，因为这三个节点和互联网产品开发流程完全不同，它们分别是产品定义、数据准备和模型构建。

在产品定义的阶段，我们需要搞清楚三个问题，这个产品背后的需求是什么，是否需要 AI 技术支持，以及通过 AI 能力可以达到什么样的业务目标。这需要我们和业务方深入沟通，拆解他们的真实需求。除此之外，我们还要根据自己对 AI 技术的理解，去判断这个项目的可行性，制定相应的目标。

因为数据和特征决定了机器学习的上限，而模型和算法只是逼近这个上限而已，所以数据特征是否全面，数据量是否足够对于算法同学来说是非常重要的。在数据准备阶段，我们不仅需要帮助算法同学获取更多高质量的数据，来提升模型的整体效果，也可以从业务的角度，给出算法同学一些建议，比如哪些特征可能有帮助等等。

数据准备好，就可以进行模型的构建以及评估验收了。模型的构建我们可能没有什么可以介入的地方，但模型的评估验收是一个非常重要的节点，因为模型是一个偏黑盒的工作，它的输出可能只有一个指标值或者分数。

但是，很多产品经理会认为：模型好坏是算法工程师的职责范围，反正自己也不太懂算法，只要算法交付了，对方说达到模型指标就可以了。如果你也这么想，那么你可能最后就变成一个协调性或者执行层的产品经理了，最后整个项目就变成算法主导了，所以我们一定要重视模型评估。

课后讨论

你觉得，AI 产品经理的工作流程和你现在的工作流程最大的不同是什么？为什么会产生这些不同呢？

期待在留言区看到你对工作流程的思考与复盘，我们下节课见！

06 | AI 模型的构建过程是怎样的？（上）

你好，我是海丰。

上节课，我们说 AI 产品经理一定要知道算法模型构建的过程，但这并不意味着，AI 产品经理要参与研发，而是说我们要基于对需求和业务的理解，配合算法同学进行数据集的准备、模型训练、参数调优等等，及时跟进模型的目标优化，针对突发问题做出调整和决策。

当然，了解模型构建这个环节还有另一个好处，那就是当模型构建的进展出现问题，需要延期或者其他资源支持的时候，我们就能按照自己的理解，把算法构建过程中的技术原理以及出现的问题，用非技术语言传达给公司领导和客户，这更容易获得他们的支持和认可。

为了让你更清晰地了解到模型构建环节中算法同学的具体工作，我会结合上节课用户流失预测的例子，用两节课的时间为你讲解一个 AI 模型构建的过程。模型构建主要包括 5 个阶段，分别为模型设计、特征工程、模型训练、模型验证、模型融合。今天，我们先讲前 2 个阶段，下节课，我们再讲其他 3 个。

模型构建整体流程

模型设计

在模型设计环节，产品经理要考虑的问题就是，在当前业务下，这个模型该不该做，我们有没有能力做这个模型，目标变量应该怎么设置、数据源应该有哪些、数据样本如何获取，是随机抽取还是分层抽样。

不过，对于算法工程师来说，不管你要做的是用户流失预测，还是用户信用评分模型，算法选型上都没有什么不同，都是解决分类问题，通过算法和数据去训练一个模型，然后根据输入得到一个预测结果。

那到底哪里有不同呢？就是模型构建的特征以及模型的目标变量不一样。比如，对于用户流失预测模型，输入是用户登录时间、用户账龄等特征，输出是用户流失的可能性；对于用户信用评分模型，输入是用户年龄、花呗额度等特征，输出则是用户逾期概率。

所以，在模型设计阶段最重要的就是定义模型目标变量（即什么样的用户是流失的用户，什么样的用户是逾期的用户），以及抽取数据样本。

在用户流失预测的例子中，对模型的目标变量定义实际上就是定义什么用户是流失的用户。不同业务场景以及短期业务目标下这个定义都会不一样。最开始，我们这个业务考核的是日活，所以流失用户的定义就是近 30 天没有登录的用户。后来用户量级稳定了，公司开始考虑盈利问题，我们的流失用户定义就变成了近 30 天没有成功下单的用户。

要记住，不同的目标变量，决定了这个模型应用的场景，以及能达到的业务预期。

接着，我们再来说说数据样本的抽取。模型是根据我们选择的样本来进行训练的，所以样本的选取决定了模型的最终效果。换句话说，样本是用来做模型的基础。在选取样本的时候，你需要根据模型的目标、业务的实际场景来选择合适的样本。

比如在用户流失预测项目上，如果你选择样本的时候，只选择了今年 6 月份的数据，但是由于受到 618 大促的影响，人们购物行为会比平时多很多，这就会导致此阶段的样本不能很好地表达用户的正常行为。

所以在样本选取上，你必须要考虑季节性和周期性的影响。另外，我们还要考虑时间跨度的问题。一般情况下，我建议你选择近期的数据，并结合跨时间样本的抽取，来降低抽样的样本不能描述总体的这种风险。

总的来说，因为不同的应用场景下模型设计的时间完全不同，所以这个阶段具体的开发时间也很难量化。

特征工程

模型设计完我们就有了目标变量和样本，之后就到了建立特征工程的阶段。我们可以把整个模型的构建理解为：从样本数据中提取可以很好描述数据的特征，再利用它们建立出对未知数据有优秀预测能力的模型。

所以，在模型的构建过程中，特征工程是一个非常重要的部分。而且，对于算法工程师们来说，特征工程的相关工作最具性价比。特征挑选得好，不仅可以直接提高模型的性能，还会降低模型的实现复杂度。

这首先是因为，无论特征和数据过多或过少，都会影响模型的拟合效果，出现过拟合或欠拟合的情况。其次，当选择了优质的特征之后，即使你的模型参数不是最优的，也能得到不错的模型性能，你也就不需要花费大量时间去寻找最优参数了，从而降低了模型实现的复杂度。

说了这么多，其实核心就是一句话：数据和特征决定了机器学习的上限，而模型和算法只是逼近这个上限而已。因此，算法工程师们花费在特征工程建立上面的时间，基本上占整个模型构建的 60%。

那什么是特征工程？对一个模型来说，因为它的输入一定是数量化的信息，也就是用向量、矩阵或者张量的形式表示的信息。所以，当我们想要利用一些字符串或者其他类型的数据时，我们也一定要把它们先转换成数量化的信息。像这种把物体表示成一个向量或矩阵的过程，就叫做特征工程（Feature Engineering）。

那什么是建立特征工程呢？比较常见的，我们可以通过一个人的年龄、学历、工资、信用卡个数等等一系列特征，来表示这个人的信用状况，这就是建立了这个人信用状况的特征工程。同时，我们可以通过这些特征来判断这个人的信用好坏。

更具体点来说，建立特征工程的流程是，先做数据清洗，再做特征提取，之后是特征筛选，最后是生成训练 / 测试集。

接下来，我就按照这 4 个步骤，来给你讲讲特征工程的建立。在这个环节，我们要重点关注算法同学处理特征的手段，以及解决常见问题的方法。

1. 数据清洗

这里我要补充一点，在建立特征工程的开始阶段，算法工程师为了更好地理解数据，通常会通过数据可视化（Data Visualization）的方式直观地查看到数据的特性，比如数据的分布是否满足线性的？数据中是否包含异常值？特征是否符合高斯分布等等。然后，才会对数据进行处理，也就是数据清洗，来解决这些数据可能存在的数据缺失、有异常值、数据不均衡、量纲不一致等问题。

其中，数据缺失在数据清洗阶段是最常见的问题。比如说，我们在做用户流失预测模型的时候，需要用到客诉数据。客诉数据有电话和网页两个来源，但是电话客诉数据，并没有记录用户的客诉解决时长，也就是说数据缺失了。当算法同学在处理电话客诉问题解决时长数据的时候，他们就需要对其他用户客诉的数据取平均值，来填充这部分数据。

因此，在遇到数据缺失问题时，算法工程师可以通过删除缺失值或者补充缺失值的手段来解决它。至于数据异常的问题，可以选择的方法就是对数据修正或者直接丢弃，当然如果你的目标就是发现异常情况，那就需要保留异常值并且标注。

对于数据不均衡的问题，因为数据偏差可能导致后面训练的模型过拟合或者欠拟合，所以处理数据偏差问题也是数据清洗阶段需要考虑的。

一般来说，我们需要的都是比较均衡的样本数据，也就是量级差别不大的样本数据。在预测流失用户的项目里面，绝大部分用户都是正常用户，只有极少数用户会是流失用户。这个时候，我们就可以选择是丢弃比较多的数据还是补充比较少的数据了。

最后，针对量纲不一致的问题，也就是同一种数据的单位不同，比如金额这个数据，有的是以万元为单位，有的是以元为单位，我们一般是通过归一化让它们的数据单位统一。

2. 特征提取

在清洗好数据之后，算法工程师就需要对数据进行特征的提取，一般提取出的特征会有 4 类常见的形式，分别是数值型特征数据、标签或者描述类数据、非结构化数据、网络关系型数据。接下来，我们来看看它们的提取方法。

首先是数值型特征数据。

数据一般包含大量的数值特征。比如，在用户流失预测问题中，它的属性就包括了用户近一年的消费金额、好友人数、在京东浏览页面的次数等信息，这些就是数值型特征数据。

这类特征可以直接从数仓中获取，操作起来非常简单，为了能更多地提取特征。一般来说，会首先提取主体特征，再提取其他维度特征。比如，在京东浏览页面的次数，这就是业务属性相关的主体变量特征，而页面的停留时长，浏览次数排名等数据就是一些度量维度的特征。除此之外，一系列聚合函数也可以去描述特征，比如总次数、平均次数，当前次数比上过去的平均次数等等。

其次是标签或描述类数据。

这类数据的特点是包含的类别相关性比较低，并且不具备大小关系。比如一个用户有房、有车、有子女，那我们就可以对这三个属性分别打标签，再把每个标签作为一个独立的特征。

这类特征的提取方法也非常简单，一般就是将这三个类别转化为特征，让每个特征值用 0、1 来表示，如有房 [0, 1]、有车 [0, 1] 等等。

接着，我们来看非结构化数据（处理文本特征）。

非结构化数据一般存在于 UGC（User Generated Content，用户生成内容）内容数据中。比如我们的用户流失预测模型用到了用户评论内容，而用户评论都是属于非结构化的文本类数据。

这类数据比较繁杂，提取的特征的手段比前两类数据复杂一些。在用户流失预测模型中，我们就是先清洗出用户评论数据，再通过自然语言处理技术，来分析评论是否包含负面信息和情绪，最后再把它作为用户流失的一种维度特征。

另外，在挖掘用户评论的过程中，如果遇到“这个酒店有亲子房，我家孩子很喜欢” 这样的评论，我们还能挖掘出当前用户可能是亲子用户，这也可以作为画像标签。

总的来说，提取非结构化特征的一般做法就是，对文本数据做清洗和挖掘，挖掘出在一定程度上反映用户属性的特征。

最后，我们来看网络关系型数据。

网络关系型数据和前三类数据差别非常大，前三类数据描述的都是个人，而网络关系型数据描述的是这个人和周围人的关系。比如说，在京东购物时，你和一个人在同一收货地址上，如果这个收货地址是家庭地址，那你们很可能就是家人。如果在同一单位地址上，那你们很可能就是同事，这代表着一个关系的连接。

提取这类特征其实就是，根据复杂网络的关系去挖掘任意两人关系之间的强弱，像是家庭关系、同学关系、好友关系等等。具体来说，算法工程师可以利用通讯录、收货地址、LBS 位置信息、商品的分享和助力活动等等的数据，挖掘出一个社交关系网络，这个网络中的信息就能作为我们特征提取的参考了。不过，这是一个很专业的领域，我们现阶段只需要知道一般的提取思路就可以了。

3. 特征选择

在数据特征提取完成之后，就进入特征选择的过程。特征选择简单来说，就是排除掉不重要的特征，留下重要特征，说起来好像很容易，算法工程师具体是怎么做的呢？

一般来说，算法工程师会对希望入模的特征设置对应的覆盖度、IV 等指标，这是特征选择的第一步。然后，再依据这些指标和按照经验定下来的阈值对特征进行筛选。最后，还要看特征的稳定性，将不稳定的特征去掉。

比如说，我们在预测流失用户项目中，筛选出了账龄、最近一周登录次数、投诉次数和浏览时长这几个特征，我把它们对应的覆盖度、IV 值、稳定性都统计在了下面的表格中。

在对这些特征进行筛选的时候，我们首先去掉覆盖度过低的投诉次数，因为这个特征覆盖的人群很少，从经验上来讲，如果特征覆盖度小于 50% 的话，我们就不会使用这个特征了。然后去掉 IV 值过低的登录次数，IV 值指的是信息贡献度，表示了特征对这个模型有多少贡献，那简单来说，就是这个特征有多重要。在用户流失项目中，如果 IV 小于 0.001 的话，我们就不会使用这个特征了。最后去掉稳定性过低的浏览时长，剩下的就是我们可以入模型的特征变量了。

4. 训练 / 测试集

好了，特征选择完了，我们就进入了最后的，生成训练和测试集的阶段。这一步也是模型正式开始训练前需要做的，简单来说，就是算法同学需要把数据分成训练集和测试集，他们会使用训练集来进行模型训练，会使用测试集验证模型效果。至此，算法同学就完成了建立模型的特征工程的工作，然后就会进入后续的模型训练阶段。

小结

这节课，我们主要讲了模型构建中前两个环节，分别是模型设计和特征工程的建立。

作为产品经理，我们一定要重视模型设计阶段，因为我们的 PRD 实际就决定了模型目标变量的定义和数据样本的抽取，它们是模型构建的基础，也是模型设计环节最需要注意的。

建立特征工程这个环节的工作，因为基本可以占到 AI 模型开发时间的 60%，所以它的核心步骤也是我们要知道和了解的。这其中最重要的就是数据清洗和特征提取，因为数据和特征的质量决定了模型最后的效果表现。

为了方便你及时回顾，我把这两个环节的核心步骤以及它们对应的具体工作内容总结在了下面的表格里，你可以看一看。

最后，我还想再啰嗦几句，在机器学习模型训练过程中，由于技术的复杂性和模型效果的不确定性，经常会出现很多计划外的工作和问题。

因此，在 AI 模型构建的过程中，产品经理经常需要给老板和客户解释各种质疑。有时，你需要和算法同学站在一起，说服老板理解问题和投入更多资源，以及当某些预测模型的精准度不是特别高的时候，你还要和客户进行技巧性的沟通，为产品优化争取更多的时间。而这些，都离不开你对 AI 模型构建过程的足够了解。 所以，这两节课虽然看起来简单，但你一定要认真学。

课后讨论

在用户流失预测模型中，如果我们对流失用户的定义是近 30 天内没有下单的用户，那你认为用户样本我们需要考虑哪些特殊因素？

欢迎将你的思考和疑问写在留言区，我们下节课见！

07 | AI模型的构建过程是怎样的（下）

你好，我是海丰。

上节课，我们讲了一个模型构建的前 2 个环节，模型设计和特征工程。今天，我们继续来讲模型构建的其他 3 个环节，说说模型训练、模型验证和模型融合中，算法工程师的具体工作内容，以及 AI 产品经理需要掌握的重点。

模型训练

模型训练是通过不断训练、验证和调优，让模型达到最优的一个过程。那怎么理解这个模型最优呢？下面，我拿用户流失预测模型这个例子来给你讲讲。

这里，我想先给你讲一个概念，它叫做决策边界，你可以把它简单理解为我们每天生活当中的各种决策。比如，当华为 Mate 降价到 5000 元的时候我就打算购买，那这种情况下我的决策边界就是 5000 元，因为大于 5000 元的时候我不会购买，只有小于 5000 元时我会选择购买。

那放到预测用户流失这个案例中，我们模型训练的目标就是，在已知的用户中用分类算法找到一个决策边界，然后再用决策边界把未知新用户快速划分成流失用户或者是非流失用户。

不同算法的决策边界也不一样，比如线性回归和逻辑回归这样的线性算法，它们的决策边界也是线性的，长得像线条或者平面，而对于决策树和随机森林这样的非线性算法，它们的决策边界也是非线性是一条曲线。因此，决策边界是判断一个算法是线性还是非线性最重要的标准。

上图就是三种算法的决策边界。决策边界的形式无非就是直线和曲线两种，并且这些曲线的复杂度（曲线的平滑程度）和算法训练出来的模型能力息息相关。一般来说决策边界曲线越陡峭，模型在训练集上的准确率越高，但陡峭的决策边界可能会让模型对未知数据的预测结果不稳定。

这就类似于我们投资股票，低收益低风险，高收益高风险，所以我们一般都会平衡风险和收益，选择出最合适的平衡点。

对于模型训练来说，这个风险和收益的平衡点，就是拟合能力与泛化能力的平衡点。拟合能力代表模型在已知数据上表现得好坏，泛化能力代表模型在未知数据上表现得好坏。它们之间的平衡点，就是我们通过不断地训练和验证找到的模型参数的最优解，因此，这个最优解绘制出来的决策边界就具有最好的拟合和泛化能力。这是模型训练中“最优”的意思，也是模型训练的核心目标，我们一定要记住。

具体到我们这个流失用户预测的例子上，模型训练的目的就是找到一个平衡点，让模型绘制出的决策边界，能够最大地区分流失用户和非流失用户，也就是预测流失用户的准确率最高，并且还兼顾了模型的稳定性。

一般情况下，算法工程师会通过交叉验证（Cross Validation）的方式，找到模型参数的最优解。

模型验证

刚才我们说了，模型训练的目标是找到拟合能力和泛化能力的平衡点，让拟合和泛化能力同时达到最优。那这该怎么做呢？

如果算法工程师想让拟合能力足够好，就需要构建一个复杂的模型对训练集进行训练，可越复杂的模型就会越依赖训练集的信息，就很可能让模型在训练集上的效果足够好，在测试集上表现比较差，产生过拟合的情况，最终导致模型泛化能力差。

这个时候，如果算法工程师想要提高模型的泛化能力，就要降低模型复杂度，减少对现有样本的依赖，但如果过分地减少对训练样本的依赖，最终也可能导致模型出现欠拟合的情况。

因此，算法工程师需要花费大量的时间去寻找这个平衡点，而且很多时候我们认为的最优，未必是真正的最优。这个时候，模型验证就起到了关键性的作用。

模型验证主要是对待验证数据上的表现效果进行验证，一般是通过模型的性能指标和稳定性指标来评估。下面，我一一来解释一下。

首先是模型性能。模型性能可以理解为模型预测的效果，你可以简单理解为“预测结果准不准”，它的评估方式可以分为两大类：分类模型评估和回归模型评估 。

分类模型解决的是将一个人或者物体进行分类，例如在风控场景下，区分用户是不是“好人”，或者在图像识别场景下，识别某张图片是不是包含人脸。对于分类模型的性能评估，我们会用到包括召回率、F1、KS、AUC 这些评估指标。而回归模型解决的是预测连续值的问题，如预测房产或者股票的价格，所以我们会用到方差和 MSE 这些指标对回归模型评估。

对于产品经理来说，我们除了要知道可以对模型性能进行评估的指标都有什么，还要知道这些指标值到底在什么范围是合理的。虽然，不同业务的合理值范围不一样，我们要根据自己的业务场景来确定指标预期，但我们至少要知道什么情况是不合理的。

比如说，如果算法同学跟我说，AUC 是 0.5，我想都不想就知道，这个模型可能上不了线了，因为 AUC = 0.5 说明这个模型预测的结果没有分辨能力，准确率太差，这和瞎猜得到的结果几乎没啥区别，那这样的指标值就是不合理的。

其次是模型的稳定性，你可以简单理解为模型性能（也就是模型的效果）可以持续多久。我们可以使用 PSI 指标来判断模型的稳定性，如果一个模型的 PSI > 0.2，那它的稳定性就太差了，这就说明算法同学的工作交付不达标。

总的来说，模型的验证除了是算法工程师必须要做的事情之外，也是产品经理要重点关注的。就好像研发同学需要单元测试，测试同学需要冒烟测试，产品经理需要产品验收一样。这节课，我们先熟悉它在整个模型构建中所扮演的角色，之后，我也会单独拿出一模块的时间来和你详细讲一讲，模型评估的核心指标都有什么，以及它们的计算逻辑、合理的值都是什么。掌握了这些，你就可以清楚知道算法同学交付的模型到底是好是坏，模型到底能不能上线，上线后算法同学是不是该对模型进行迭代了。

模型融合

前面我们讲的 4 个环节都是针对一个模型来说的，但在实际工作中，为了解决很多具体的细节问题，算法工程师经常需要构建多个模型才获得最佳效果。这个时候，就要涉及多个模型集成的问题了。那模型集成或者说集成学习究竟是怎么一回事儿呢？听我慢慢给你讲。

我们先来看一个生活中的例子，如果你打算买一辆车，你会直接找一家 4S 店，然后让汽车销售员推销一下，就直接决定购买了吗？大概率不会，你会先去各头部汽车咨询网站看看其他车主的评价，或者咨询一下同事或朋友的意见，甚至会自己整理一堆汽车各维度的专业对比资料，再经过几次讨价还价，才会最终做出购买的决定。

模型融合就是采用的这个思路，同时训练多个模型，再通过模型集成的方式把这些模型合并在一起，从而提升模型的准确率。简单来说，就是用多个模型的组合来改善整体的表现。

模型融合有许多方法，我们知道一些常用的就可以了，比如对于回归模型的融合，最简单的方式是采用算数平均或加权平均的方法来融合；对于分类模型来说，利用投票的方法来融合最简单，就是把票数最多的模型预测的类别作为结果。另外，还有 Blending 和 Stacking，以及 Bagging 和 Boosting 这些比较复杂的模型融合方法。

除了要注意模型融合的方法，我们还要注意算法模型的选择，不同行业选择的算法模型一定不一样。比如，互联网数据和银行金融机构数据就不一样，因为银行数据大部分都是强相关性的金融性数据，所以它可能会更多考虑机器学习算法，而互联网的数据特征基本都是高维稀疏，会较多考虑深度学习算法。

并且，由于不同行业对于算法模型的风险状况也有不同的考虑，所以对模型的选择也会有不同的限制标准，比如银行、金融行业会监管模型的特征和解释性，因此，会选择可解释性很强的算法模型，如逻辑回归。

除此之外，我们还要考虑算法模型选择的成本。比如说，产品经理可能认为通过 Boosting 或 Bagging 的方式集成模型的效果，一定比单一的算法模型效果要好。

但是在实际中，算法工程师常常会为了提成模型 AUC 的一个点，让特征的规模增大很多，导致模型部署上线的成本翻倍，这就非常不划算了。因此，成本是算法工程师在选择算法模型时会去考虑的事情，也是需要产品经理去理解算法同学工作的地方。

模型部署

一个模型训练完成并通过评估后，算法工程师就要考虑怎么把它部署到线上，并应用到业务场景中。虽然模型部署不属于模型构建中的环节，但它却是 AI 产品上线中必不可少的一环，所以我也要在这里和你讲一下。

一般情况下，因为算法团队和工程团队是分开的两个组织架构，所以算法模型基本也是部署成独立的服务，然后暴露一个 HTTP API 给工程团队进行调用，这样可以解耦相互之间的工作依赖，简单的机器学习模型一般通过 Flask 来实现模型的部署，深度学习模型一般会选 TensorFlow Serving 来实现模型部署。

但是，具体的交互方式也还要看模型应用的业务场景，比如业务需求就是要对 UGC 内容进行分类，如果业务场景是要实时预测用户 UGC 的类别，那我们的分类模型就需要部署成在线的 Web 服务并提供实时响应的 API 接口；如果我们只是需要对一批已有的 UGC 数据进行分类，然后使用分类后的结果，那我们的模型通过离线任务的方式运行，每日定时处理增量的 UGC 数据就可以了 。

小结

通过第 6 和第 7 课的学习，我们一起梳理了整个模型构建的流程。

模型设计是模型构建的第一个环节，这个环节需要做模型样本的选取和模型目标变量的设置，模型样本和目标变量的选择决定了模型应用的场景。

特征工程是所有环节中最乏味和耗时的。因为，实际生产中的数据会存在各种各样的问题，如数据缺失、异常、分布不均、量纲不统一等等，这些问题都需要在特征工程中解决的。 但是这种耗时绝对值得，一个好的特征工程直接影响算法模型最终的效果。

模型训练就是一个通过不断训练数据，验证效果和调优参数的一个过程，而模型验证和它是一个不断循环迭代的过程，目标都是寻找模型泛化能力和模型效果的平衡点。所以模型训练我们要和模型验证一块来看。

更具体点，在我们的例子中，模型训练的目标就是为了预测用户是否为流失用户，模型训练就是在已知用户数据中通过算法找到一个决策边界，然后在这条决策边界上，模型的拟合和泛化能力都能达到最好，也就是说，在训练集和测试集上对流失用户预测准确率都很高。

而模型验证主要是对待测数据上的表现效果进行验证，一般是通过模型的性能指标和稳定性指标来进行评估。

模型融合环节主要是通过多个模型的组合来改善整体的表现。模型融合有许多方法，简单的有加权平均和投票法，复杂的有 Bagging 和 Bosting。作为产品经理，我们要知道，模型融合虽然可以提升模型的准确率，但也需要均衡开发成本来综合考虑。

模型部署关注的是模型的部署上线和提供服务的方式，这里一般只需要事先约定好算法与工程的交互方式即可。

最后，我还想给你一个小建议，如果你是偏基础层或者技术层的产品经理，需要对模型构建的过程了解得更加清楚，你可以在一些开放的机器学习平台（比如阿里的机器学习平台 PAI）上，尝试自己搭建一个简单的模型。对于应用层的产品经理，你只需要了解大概流程就可以了，把学习的重点放到如何去评估模型效果上。

课后讨论

在整个模型构建的过程中，你认为最重要的阶段是哪个？为什么？

欢迎在留言区写下你的思考和疑惑，我们下节课见！

08 | 算法全景图：AI产品经理必须要懂的算法有哪些？

你好，我是海丰。

从今天开始，我们正式进入算法技术能力篇的学习。在正式开始学习之前，我想先给你讲一个我亲身经历过的小故事。

我最开始做 AI 项目的时候，碰到过一个预测员工离职可能性的产品需求。当时，因为我对算法技术不熟悉，所以我只告诉算法工程师，我们要做一个预测员工离职的模型。因此，算法同学按照自己的理解，把它做成了一个预测员工可能离职的排序，而不是离职的概率。

很显然，这个模型和业务方的原始诉求是有出入的。但是，当我去说服算法工程师修改模型的时候，却被他说“你自己先搞清楚算法能做什么、不能做什么，再来和我谈”。后来我才知道，他的模型是按照回归的方式做的，得到的结果是未来预计离职的天数，最后自然是按照天数来做排序。

这件事也让我下定决定去学习算法技术，不说要学得多么精通，至少要知道常用算法的实现逻辑和应用场景，这也是我在算法技术能力篇要给你讲的。这样一来，当你和算法同学协作的时候，能够减少很多沟通成本，知道如何给算法工程师提需求，能和他们同频沟通，就算是要对模型结果进行争执，也能更有底气。

机器学习分类

这节课，我会先带你从宏观上了解目前机器学习的三大类应用场景，分别是分类问题、回归问题、聚类问题，以及怎么用相关算法来处理这些问题，最后帮你梳理一张 AI 产品经理需要掌握的算法技术全景图。这样，我们后面再去学习具体的算法，就能有一个更清晰的学习路径了。

这里，我先把分类、聚类和回归问题的定义总结在了下面的表格里，你可以先看看，对它们有个整体印象。

有了印象之后，我们再结合具体的例子，来讲讲这些场景问题是怎么用相关算法解决的。

处理分类问题的算法

在实际工作中，我们遇到最多的问题就是分类问题，分类问题经常出现在分类判断、标签预测、行为预测这些场景中。

比如说，你现在是一个电商产品经理，有商城全部用户的历史行为数据，以及用户 A、B、C、D 的性别数据，希望预测商城其他用户的性别，可能是用户 E。

这就是一个很经典的分类问题，这个问题的预测结果就是男性或者女性。像这种判断一个事情的结果是“男 / 女”、“是 / 否”、“1/0”的问题就是二分类问题。

不过，如果我把已知条件变换一下：你现在有商城全部用户的历史行为数据，以及用户 A、B、C、D 的婚姻状况数据，希望预测商城其他用户的婚姻状况。这个时候，预测的结果就是未婚、已婚或者是离异了，像这种预测结果是多种情况的，就是多分类问题。

那分类问题怎么解决呢？我们再回到刚才这个例子中。结合上面的表格，我们可以看到，已知性别的用户会呈现出来一种规律，就是女性浏览美妆品类次数远高于浏览数码类页面次数，而男性会呈现出相反的趋势。

我们可以把性别和浏览页面次数呈现到一个图里，然后将用户浏览美妆品类页面，数码品类页面次数录入。这个时候，你会发现用户 E 和用户 A、C 离得很近，从数学的角度来看，距离越近就越相似，所以我们大概率认为 E 的性别应该和 A、C 一样，是女性。这就是分类问题的解决过程。

在机器学习的场景中，分类算法解决分类问题也是利用相似的原理，可用的算法非常多，常见的有逻辑回归、朴素贝叶斯、决策树、随机森林、K 近邻、支持向量机，以及神经网络等等。

总的来说，使用分类算法解决问题，我们必须要有已知的训练数据，才能对未知数据进行预测。当已知信息缺失的时候，我们又该怎么办呢？这个时候，我们要么考虑通过人工打标来处理数据，要么考虑使用聚类算法。这就是我接下来要讲的聚类问题的处理逻辑了。

处理聚类问题的算法

在机器学习中，我们经常需要给一些数据量很大，用户属性很多的用户数据进行分组，但往往很难下手。

我还是代入一个例子来给你讲讲，假设，你现在是一个客服系统负责人，为了减轻人工客服的压力，想把一部分常见的问题交给机器人来回复。解决这件事情的前提，就是我们要对用户咨询的商品问题先进行分组，找到用户最关心的那些问题。

这种需要根据用户的特点或行为数据，对用户进行分组，让组内数据尽可能相似的的问题，就属于聚类问题，用一个词概括它的特点就是 “物以类聚”。常见的聚类算法有层次聚类、原型聚类（K-means）、密度聚类（DBSCAN）。

那聚类问题该怎么解决呢？我们接着刚才的例子来说，假设我们现在有 5 条如下的咨询：

小爱同学和小爱音响有什么区别 ？

小爱同学和小爱音响都是小米的吗 ？

小米的蓝牙耳机怎么连接 ？

华为路由器和小米路由器哪个可以在校园网内使用 ？

一定要小米路由器才能用吗 ？

如果我们把每句话都看成单独的小组，这一共就是 5 个小组，那我们的目标就是把相似的问题合并成一个小组。最简单的办法，就是找出每个小组中的名词，把“各句中包含的名词一致的数量”看作“相似度”。这样一来，相同名词数量最多的两个句子就是最相似的。

按照这个思路，我把这 5 个句子中含有的名词都整理到了下面的表中，并用 “O” 进行了标记。

这样，我们就能算出每一个句子和其他 4 句之间的相似度了。

“句子 1”和“句子 2、3、4、5”的相似度分别是 2、0、0、0。

“句子 2”和“句子 3、4、5”的相似度是 1、0、0。

“句子 3”和“句子 4、5”的相似度是 0、0。

“句子 4”和“句子 5”的相似度是 1。

这样，我们也就能得出：最相似的小组是相似度为 2 的“句子 1”和“句子 2”，我们把这两个句子合并之后，5 个小组就变成了 4 个小组：

“小组 1”：“句子 1”和“句子 2”

“小组 2”：“句子 3”

“小组 3”：“句子 4”

“小组 4”：“句子 5”

然后，我们再按照上面同样的方式把新生成的各小组进行聚类，就又会得到两个相似度为 1 的小组：

“小组 5”：“句子 1” 、“句子 2”和“句子 3”

“小组 6”：“句子 4”和“句子 5”

就这样，当我们把所有相似的句子聚类到一起，就完成了聚类的过程。其实，聚类算法的原理很简单，就是根据样本之间的距离把距离相近的聚在一起。刚才，我是通过句子中的名词是否相同来衡量距离的，那在实际应用场景里，衡量样本之间距离关系的方法会更复杂，可能会用语义相似度、情感相似度等等。

同时，这个聚类的过程可以表示成带有层次的树形结构图，这就是层次聚类算法的原理也是它名字的由来。这种聚类方式可以是“自底向上”的聚合策略，也可以是“自顶向下”的分拆策略 。

层次聚类

总之，聚类算法解决问题的核心思想就是“物以类聚，人以群分”，所以，聚类分析较为重要的一个应用就是用户画像。

我们刚才说了，分类问题和聚类问题的差异在于分类问题需要根据已知的数据去学习，然后为新的数据进行预测，而聚类分析直接在已有数据中发现联系。但它们还存在着一个共同点，那就是它们都输出的是 “0” 或 “1” 这种离散型的标签。

离散型的标签指的就是非连续的一个个单独的标签。比如说，一个人的年收入可能是从几万到几千万这样的连续性值，但是如果我们将年收入的具体数值转化成低收入、中等收入、高收入、超高收入这些档，每一个档就是一个离散型的标签。

但有时候，我们在项目中确实需要预测一个具体的连续性数值，比如酒店的价格或股票的价格。遇到这类问题我们该怎么办呢？这个时候，我们就可以通过解决回归问题的算法来实现了。

处理回归问题的算法

在实际工作中，我们也经常会遇到回归问题，比如需要预测某个商品未来的销量，预测某只股票未来的价格等等。

下面我就通过一个预测销量调整库存的例子，来讲讲回归算法中线性回归的解题过程。

有这样的一个场景，你是一个电商产品经理，你们公司每件商品的库存都是通过预测未来产品的销量来动态调整的。这个功能的实现方式是，先根据商城 App 分析出用户的商品搜索次数，然后将每个商品的搜索次数和销量做数据分析，画出一个横轴为搜索次数，纵轴为销量的二维散点图。

我们以搜索小米路由器举例，从上图我们可以看到，相对密集的搜索次数都在 1000 次以下，当搜索次数超过 1000 次以后，散点变得稀疏起来。这样一来，我们就能根据数据拟合出一条回归直线。

这条回归直线上，因为销量和搜索次数成正比，所以它们都可以用一元回归方程来表示。如果我们假设影响销量的因素只有搜索次数这一个特征，那么在有了新产品和它的搜索次数之后，我们根据一元回归方程，就可以预测出新产品的销量了。

这个时候有的同学可能想说，“用户搜索次数虽然会影响销量，但我认为用户评价和库存也会影响销量啊”。接下来，我们就一起来验证一下这个假设。我们将库存、用户评价作为影响销量的两个因素，去分析它们之间的关系。

如上图所示，当库存小于 40% 的时候，用户评价和销量都很低，当库存大于 80% 的时候，用户评价和销量呈线性增长。我们发现，用户评价和库存共同影响了产品销量，只有当库存大于 80% 且用户评价高于 0.6 的时候，产品才有较好的销量。因此，这三者之间的关系可以用二元回归方程进行量化。

当然，实际情况是像服务态度、物流时间、折扣力度、广告宣传、购物体验这些因素，它们也会或多或少地影响销量。我们可以把这些因素也就是 n 个特征，都总结到同一个回归方程中，用多元回归方程表示，具体的公式如下：

 销量 =a0​+a1​∗ 搜索次数 +a2​∗ 用户评价 +a3​∗ 库存 +a4​∗ 折扣力度 +⋯an​∗ 广告宣传 

通过这样的方式，我们就可以轻易地预测每种产品的未来销售，进而可以动态地规划库存和物流。当然，回归算法能做的还有很多，比如预测不同促销组合产生的盈利进而确定促销活动，预测广告的投入量进而估算盈利额等等。

对于产品经理来说，我们需要清楚的知道线性回归的原理，熟悉回归算法能解决的情况，比如它适合用来预测价格、销量，这类结果是连续值的问题。

总结

今天，我结合三大类问题，给你讲了三大类常见算法和它们的应用场景。为了方便你的记忆，我把重点内容整理成了一张知识脑图，你可以去文稿中看一看，这里我就不重复了。

这里，我还想结合这三类算法，再给你举几个常见的应用场景，因为知道什么场景下使用什么算法来解决是我们最需要掌握的。

如果你希望知道你的用户会不会购买某个商品，你的用户在你们平台借款之后会不会不还钱，或者你想知道你的用户会不会购买你们平台的会员卡，这些就属于分类问题了，你们的算法工程师可能会选择逻辑回归，决策树来实现你的需求。

如果你希望知道你们平台某个商品未来的价格，预测你们小区未来某个时间点的房价，或者预测一下你的用户收入情况是多少，你们的算法工程师可能会选择使用回归算法来解决这些回归问题。

如果你想做一个用户画像体系，对用户进行分组打标签，这就属于聚类分析的领域了，你们算法工程师可以选择层次聚类，原型聚类等算法来实现你的需求。

当然，算法分类的方式不止一种，我们也可以按照建模时候有没有标签，把它们分成有监督、无监督和半监督算法。我之所以选择根据应用场景来分类，是因为你作为一个产品经理，应该关注的是，如何通过技术（算法）来解决业务场景中遇到的问题。

课后讨论

如果我们要做一个预测用户未来能不能复购的模型，你觉得这属于什么问题，哪种算法可以解决呢？

期待在留言区看到你的设计和思考，我们下节课见！

09 | K近邻算法：机器学习入门必学算法

你好，我是海丰。

今天，我们正式进入算法的学习，来学习 K 近邻算法（K-Nearest Neighbor），简称 KNN 算法。它是一种用来解决分类问题的算法，简单来说，就是用来预测用户是男是女，或者是否喜欢某件商品。分类算法有很多，只不过，不同算法的实现机制不同，我们今天要讲的 KNN 算法是基于距离计算的方式来解决分类问题的。

下面，我就借助生活中常见的例子，给你讲清楚 KNN 算法的原理、优缺点，以及应用场景。

如何理解 KNN 算法

我们的生活中总是充斥着各种各样的小抉择，这些抉择虽然对我们的影响不大，但总会让我们有些苦恼。比如，手机买什么牌子、买什么型号？午饭吃什么？周末陪女朋友去哪儿玩？你每次遇到这类问题的时候，都会怎么解决呢？

先别着急回答，我们先来做一个小测试题。如果现在就让你给女朋友选礼物，你会怎么做？我希望你能在 5 秒内，从下面 3 个选项中选一个：

随便选一个就行了

问问周围兄弟们都送了什么礼物

做一份详细的报告，根据女朋友的情况量身定制礼物挑选方案

好了，我想你有很大可能会选择第 2 个选项。因为选 1，就意味着你会承担更高的风险，选到一个非常不靠谱的礼物，还很有可能踩雷，而选 3 意味着你会花费大量的时间和成本去做准备，一般人估计也没有这么大的耐心。

事实上也是这样，如果你周围最好的几个朋友都送了女朋友口红，只有少数几个送了香水，那你选择送口红给女友更不容易踩雷，因此，你做出相似决定的概率也会更大。简而言之就是，你周围的环境将影响你的决定。

你选购礼物的逻辑其实就是 KNN 算法的实现思路了。通俗一点来说，KNN 的原理就是，对于一个犹豫不决的选择，我们先参考周围最近的一些已经做出的选择，然后再做出相似的决定，你也可以记成：“近朱者赤，近墨者黑”。

如果用数学去描述 KNN 的原理，就是对于一个待测的样本点，我们去参考周围最近的已知样本点的分类，如果周围最近的 K 个样本点属于第一类，我们就可以把这个待测样本点归于第一类。

这个概念中提到了一个词“最近”，那我们该如何定义样本间距离的远近呢？通常来讲，我们会通过数学公式计算两个样本点之间的距离，最常见的一个计算方法就是欧式距离（Euclidean Space）。最后再做一个简单的统计，找到距离待测样本点最近的 K 个样本点中，哪些类别最多。当然除了欧式距离，还有很多距离计算的方式，如曼哈顿距离、余弦距离等等。

以上就是运用 KNN 进行分类决策的基本逻辑了。

应用场景：预测候选人能不能拿到 Offer

知道了 KNN 算法的基本原理，接下来，我再通过一个预测候选者是否符合公司标准的例子，来说一说 KNN 算法的应用场景。

我之前参加过一个算法马拉松竞赛，这个竞赛的题目就是为公司的人事部门开发一套减少招聘成本的 AI 产品。它要求参赛者在已知公司历史候选者姓名、工作年限、每月收，以及最终是否拿到公司 Offer 的情况下，通过一个算法模型来预测一个新的候选者是否能通过公司的招聘考核，最终拿到 Offer。

上面左侧的图表图就是公司历史候选者的数据采样，我们将数据可视化制作出了二维平面图（如上图右）。其中，X 轴代表候选者的工作年限，Y 轴代表候选者目前的月收入，我们对拿到 Offer 的人用红色进行了标记，对没拿到的用蓝色进行了标记。

有了这些基础信息之后，我们接下来要解决的问题就是，怎么评估一个新候选者成功拿到 Offer 的概率。我们以上图中的千秋同学为例，他的薪资目前是 12.8 K，有 2.4 年的工作经验。

在对样本进行了评估之后，我们发现样本特征相对单一，并且数据量也不多，所以我们决定使用 KNN 算法来解决这个问题。具体的实现思路也很简单，就是给定一个人，再去寻找和他的相似度比较大的那些人，看看他们都是什么属性。

比如说，在这份数据中，我在千秋同学的附近，选出距离他最近的 3 个人，分别是潇然同学、斯南同学和莎佳同学。这三人中，潇然和斯南同学都拿到了 Offer，莎佳同学没拿到 Offer。这样一来，我们就可以直接预测出千秋同学是可以拿到 Offer 的，因为距离最近的三个人当中，拿到 Offer 的人数大于没有拿到 Offer 的人数，或者说“少数服从多数”。

当然，我知道你看到这个结论之后，肯定有非常多的疑问，别着急，听我接着说。首先，我为什么选择跟预测样本距离最近的 3 个样本呢 ？其实，这里的 3 就是 K 值（即，周围最近的 K 个样本点），你也可以选择 4 个或者 5 个或者其他的数字，但要注意的是 K 值的选取会影响到模型的预测效果。

当 K 取 1 的时候，就表示我们只评估与待测样本最近的一个样本的值是什么分类就行了，如距离千秋同学最近的是莎佳，她最终没有拿到 Offer ，所以，我们就可以预测千秋同学也拿不到 Offer。

当 K 取 9 的时候，就表示我们需要评估与样本集个数一样的样本点。可想而知，最终的结果就和整体的样本分布一样了，哪个分类的样本多，预测结果就是哪个分类，模型也就不起作用了。

总的来说，当 K 越小的时候，模型就越容易过拟合，因为预测结果与最近一个样本点强相关。而 K 越大的时候，就越容易欠拟合，因为预测结果要考虑所有样本的情况，就相当于没有预测。所以，对于 K 的取值，一种有效的办法就是从 1 开始不断地尝试，并对比准确率，然后选取效果最好的那个 K 值。

刚才这个例子，其实就是 KNN 一个最常见的应用场景：做分类。除此之外，KNN 还有一个比较常见的应用场景就是做推荐。

比如，在京东图书中，我们已知用户 A 和用户 B 的历史购买记录：用户 A 购买了《三体》《太空漫步》《流浪地球》；用户 B 购买了《原则》《影响力》《金字塔原理》。这个时候，如果京东图书要给一个购买了《三体》和《流浪地球》的新用户 C 进行图书推荐，它的推荐系统就可以通过计算出用户 C 和用户 A 的相似喜好，给用户 C 推荐其他的科幻小说。

到此，我们已经把 KNN 算法的原理和应用场景都讲完了，下面我们再来看看它的优缺点。

KNN 算法优缺点

虽然产品经理不需要写代码，但只有掌握了算法的优缺点，我们才能更好地评估算法适不适合当前业务需求，并且落地业务场景能达到什么样的效果。

我们先来说 KNN 算法的优点。

KNN 算法最大的优点就是简单易懂，实现起来非常容易，简单到都不需要进行训练了，只要把样本数据整理好，就可以直接预测新数据了。

除此之外，KNN 在处理边界不规则数据的分类问题时要比线性分类器的效果好。 线性分类器可以理解成画一条直线对数据进行分类，不规则的数据则很难找到一条线来分割开所有样本点数据。而 KNN 的预测方式是以未知样本点作为中心点，然后画一个圈，使得圈里有 K 个数据，这就完全不用考虑数据的边界问题。

但是，KNN 的缺点也非常明显，首先是它只适合小数据集，因为 KNN 是基于距离的分类算法，如果数据量特别大的时候，就需要计算待测样本和每一个已有样本之间的距离，那样计算量是非常大的。对于大数据集，一般会选型 KNN 的优化算法，如 kd-tree 来实现。

其次，KNN 算法对数据容错性偏低。因为 KNN 对于数据样本的质量依赖度很高，如果训练数据集中存在错误的样本数据，并且又刚好在待测样本的旁边，这样就会直接导致预测的数据不准确。

也正是因为 KNN 对于数据样本的依赖度很高，如果数据分布不均衡，同样会影响 KNN 的预测效果。比如，有的类别数据量特别多，那么基于 KNN 的预测效果就会很差，因为特别多的数据就会占有绝对的投票优势。针对这种情况改进的方法就是，对待测样本周围 K 个近邻数据增加权重，距离越近，权重越大。

总结

KNN 算法是机器学习领域中的入门级算法，作为产品经理，我们要掌握它的核心原理、应用场景以及优缺点。

KNN 核心原理你可以理解为“近朱者赤近墨者黑”，即基于距离的一个简单分类算法。在数据量不多，特征都相对单一的业务场景下（如我们课程中的例子）很适合选择 KNN 算法。因为构建起来不复杂，所以当团队中缺少算法同学的情况下，产品经理就可以提出建设性的建议，根据场景特点来选型 KNN 算法。这样，工程研发同学也可以通过学习完成算法的实现，最终实现业务需求。

KNN 的优点很明显，简单易实现，可以快速解决多分类问题，并且相对于线性分类算法用一条直线来分割数据的方式来说，KNN 对于边界不规则的数据预测效果会更好。

对于 KNN 缺点，你要记住，KNN 对于数据的容错性很低。比如，当待测样本周围的 K 个数据样本中存在错误样本的时候，就会对预测结果有很大的影响。

另外，KNN 一般适用于样本数较少的数据集。因为它在处理数据量比较大的样本时会非常耗时，所以，在实际工业中，我们一般会选用 Kd-tree 来进行预测。

课后讨论

在你现有的业务场景需求中，有适合应用 KNN 算法来实现的吗？

欢迎在留言区分享你的观点，如果你的朋友也正在学习 KNN 算法，不妨也把这节课转发给他，我们下节课见！

10 | 线性回归：教你预测，投放多少广告带来的收益最大

你好，我是海丰。

上节课，我们讲了分类问题中最基础的 KNN 算法。这节课，我们来讲回归问题中最经典的线性回归（Linear Regression）算法。

我会先结合地铁排队的常见例子，带你理解线性回归算法的原理，再利用它去实现投放广告的收益预测，给你讲清楚它的应用场景。

如何理解线性回归算法？

如果你每天上班坐地铁，肯定碰上过早高峰排队，尤其是在疫情期间，地铁协管员会要求所有人站好队，并且前后间距大约 1 米。尽管队伍中的人没有刻意站成一条直线，但是从队伍外面看过来，它依然是一条直线。

某一天，你突然特别着急地跑到地铁站，因为你起来晚了，赶不上这班地铁就要迟到了，所以你很想一跃而起插入到队伍前面去，但是按照要求，你只能排在队伍的最后面，再和前一个人保持差 1 米的距离。

同样地，其他新来的人要上地铁，也一定要排在队尾，再和前一个人间隔 1 米。这个操作看似很平常，不知道你有没有想过这背后的科学依据呢？

其实，只要你按照我们刚才说的排好了队，就说明你已经成功在你的潜意识里构建了一个模型，去寻找你自己的站位。这个模型就是线性回归的模型，你的站位就是这个模型的解，是一个具体的数值。这个模型中，所有人的站位都分布在一条直线的周围，因此，后来的人也都会自觉地站在这条直线的周围，让它依然是一条直线。

这就是线性回归这个模型背后的逻辑思路，也就是根据已有的数据去寻找一条直线，让它尽可能地接近这些数据，再用这条直线预测新数据的可能结果，这个结果是一个具体的数值。

那这条直线怎么找呢？我们就需要知道线性回归的原理了。

线性回归算法的原理

刚才，我们一直提到“直线”，那你还记得直线的数学公式吗？我们今天会一直用到它，所以我先带你来复习一下。

在这个式子中，我们可以通过一组合适的 A 和 B ，去描述一组对应的事物 X 和 Y 之间的对应关系，然后再用得到的分布来描述未知事物的可能解，这就是线性回归用来做预测的“套路”。

回到刚才排队的例子，如果我们把队伍中每个人的顺序和对应的站位想象成已知信息 X 和 Y，那么我们一定可以找到一组合适的 A 和 B 来描述这条直线，让尽可能多地人站在这条直线上面或者离这条直线非常近。这个时候，我们其实已经找到了这条直线的分布。

最后，我们再用这个已知的分布，其实也就是 A 和 B 的对应关系，代入到新人的顺序信息，就可以求出这个新人应该站在什么位置了。

线性回归算法非常常用，它的原理我们一定要记住，所以我再来讲一个例子来帮助你理解。比如说，我们现在已知一部分人的身高和体重信息，想要通过身高来预测一些新人的体重信息，我们该怎么做呢？

因为大部分人的身高和体重是成正比的，也就是说身高越高，体重越大。所以，我们可以假设体重为 Y，身高为 X，然后通过已知数据找到一组合适的 A 和 B，再把求得的 A 和 B 以及这位新朋友的身高信息 X 代入到公式当中，我们就可以求得这个新朋友的体重了。

刚才我们得到的其实都是一元回归方程，因为影响结果 Y 的其实只有一个影响因素 X，那如果有多个影响因素我们该怎么办呢？就比如在预测银行贷款的例子中，贷款人的工资和年龄都会影响贷款额度。这个时候，我们就要构建二元回归方程了，它的分布也不再是一条直线，而是一个较为复杂的平面了，公式是 Y=A1X1+A2X2+B。同理，还有多元回归方程。

线性回归算法的原理我们讲完了，但有的同学可能会问，我们怎么保证所有线性分布的数据都落到一条直线上，更准确点来说，就是怎么让每次生成的直线到所有点的距离最小呢？这个时候，我们就需要引入损失函数，来对每次生成的直线进行评估。

如何计算最优解？

在数学中，我们会定义一个距离公式来计算线性回归的预测值和真实值之间的差异，放在我们例子中，就是计算地铁上所有排队人的站位与理想直线站位的误差到底有多大。当然如果每个人站的位置都很好，那所有人的位置距离这条直线的误差之和就会很低，反之就会很大。

这个公式在机器学习中就被称作损失函数，也叫代价函数。损失函数就可以用来评价模型的预测值和真实值之间不一样的程度，损失函数值越小，模型性能越好。而平方残差和（RSS,Residual Sum of Squares）是一种最常见的损失函数，它可以用来计算每一个样本点的结果值和当前函数值之间的平方差，差值越小，回归模型做得就越好。差值的具体计算方式，我们只要了解就可以了，我把相应的图片放在了下面，你可以看一看。

线性回归算法的应用场景

到这里，我们已经明白线性回归算法到底是怎么操作的了。为了把它更好地应用到实际问题中，我再结合一个预测广告的例子，来给你讲讲这个算法到底能用来解决什么问题。

假如，你是京东手机部门的产品经理，现在部门要推出一款明星产品：“京造手机”。领导为了让产品卖得更好，就到处去投放广告，让大家都知道这个产品，激发大家购买的欲望。因为一般来说，广告投放得越多，钱花得越多，知道的人越多，产品卖得越多。

那根据历史累计的广告投放经费和销售额，我们可以画出一张关系图，图上每个点对应的 X 轴代表广告费，Y 轴代表销售额。结合这张图我们可看出，有些坐标点的收益相对较高，有些坐标点的收益相对较低，大概率它们是符合线性关系的。

已知线性回归方程是 Y = AX + B，我们将已有数据代入到这个方程中，然后求得出一组 A 和 B 的最优解，最终拟合出一条直线，使得图中每个点到直线的距离最短，也就是我上面说的损失函数最小。这样，我们就能通过这个最优化的 A 和 B 的值，进行估算广告经费和销售额的关系了。

虽然它对于每一个单点来说都不是那么精确，但有了这条线，你只需要设定一个广告费的数额，就一定能计算出一个销售额。这样一来，当你在开部门周会的时候，就可以跟领导汇报：“只要我们投入多少的广告费用，GMV 就能达到我们这个月的指标”。

除此之外，线性回归可以应用在产品采购和生产线的许多阶段。比如，我们经常需要预测某个商品未来的销量，预测库存等等。总之，我们作为产品经理，要善于挖掘各种需求，利用这些算法技术来提高销量。

线性回归算法的优缺点

因为线性回归算法很简单，数学原理很清晰，所以它的运算效率很高。又因为我们最终得到的是一个公式函数，所以根据计算出的公式系统，我们就可以很明确地知道每个变量被影响的大小，所以它具有很强的可解释性。这一点有助于产品经理理解影响模型效果的因素的变化，也有助于我们通过非技术性的语言想领导进行汇报。

但也正是因为线性回归的算法太过于简单，所以预测的精确度相对较低，不相关的特征会对模型的效果好坏有很大的影响，而且在数据量较小的情况下，很容易出现过拟合的问题。因此，在实际工业中，我们会更多地应用非线性回归的方式，比如决策树回归、KNN 回归、随机森林回归等，然后通过模型融合得到更为精准的结果。但它们的原理基础都来源于线性回归模型，所以我们一定要掌握好线性回归。

除此之外，线性回归的也有个很明显的缺点，就是不具备求解一个非线性分布的能力。也就是说，如果你的数据不是简单地分布在一条直线周围，那么你用线性回归求解的分布也会误差很大，从而对未知测试数据的评估结果也不准确。对于这个问题，我们会在接下来的课程中介绍更多的方法，你可以先自己想想。

总结

线性回归算法也是机器学习领域中的入门算法，主要用来预测具体的连续性数值。今天，我带你总结了它的核心原理、应用场景以及优缺点。

首先，线性回归的核心原理，就是根据原有数据通过线性回归方程 Y = AX + B，把已有数据代入到这个方程里，求出一组 A 和 B 的最优解，最终拟合出一条直线，然后通过每个数据到直线的距离最短，也就是损失函数最小。这样一来，我们就能通过这个最优化的 A 和 B 的值，估算出新的数据 X 和 Y 的关系，进行数据的预测。

其次，线性回归也可以应用到很多预测具体数值的场景中，比如预测身高、预测销售额、预测房价、预测库存等等，但前提是这些场景中的数据是符合线性分布的。

最后，线性回归的优点可以总结为三点，简单易实现，运算效率高，可解释性很强。缺点主要有一点，就是预测的准确度比较低。因此，我们在实际工作中，会更多地应用非线性回归的方式。

课后讨论

假设，你们公司正在向市场推出一种新产品，但还没确定以什么价格进行销售，你能利用今天学习的线性回归，设计出一个实现方案吗？

如果你已经有思路了，可以直接在留言区写下你的答案，如果还是没思路，你可以参考我下面给出的提示：

预先选择几个价格点，分别对测试客户做市场调研，得到销售额与用户的反馈；

使用线性回归推断价格和销售额之间的关系，从而确定销售产品的最佳价格点。

实践方案设计好后，你觉得在具体的落地实践上还有什么需要考虑的吗？欢迎在评论区分享你的观点，如果你的朋友正在为预测类问题而苦恼，也欢迎你把这节课分享给他。我们下节课见！

11 | 逻辑回归：如何预测用户是否会购买商品？

你好，我是海丰。

上节课，我们讲了线性回归算法。这节课，我们要讲一个和线性回归在名字上很相近的算法，它叫逻辑回归（LR，Logistic Regression）。虽然名字很相近，但是它们却有着本质上的差异。因为，逻辑回归是一种分类算法，解决的是分类问题，或者说，逻辑回归就是用来预测某个事情是“是或者否”这样的概率。

那为什么会有这样的差异，它们的区别到底是什么，逻辑回归可以解决什么样的分类问题呢？我们今天就通过一个预测用户购买商品的例子来好好聊一聊。

如何理解逻辑回归算法？

假设，最近你们公司组织了一场创新技术大赛，你作为 AI 产品经理，兴致勃勃地报了名。大赛的题目是预测公司附近的房价在未来某一天是涨还是跌，现有数据是公司附近每天的人口数量、房屋面积，以及房屋价格。

仔细分析已知数据之间的关系，我们发现，房屋价格会受到公司附近的人口数量和房屋面积这两个因素影响，它们之间关系大概率会是线性的。如果用我们上节课学过的线性回归算法来解决，这就是个二元线性回归问题，也就是通过每天已知的人口数量和房屋面积来预测房屋的价格。

这个时候，线性回归方程是：房价 = A1*人口数量 + A2*房屋面积 + B。

不过，当有两个变量的时候，问题就会更复杂，所以为了方便你理解，我们把这个模型简化一下，先只把“人口数量”这个影响房价的重要特征留下。这样一来，我们根据线性回归算法就能画出一个房价随人口数量变化的图形，它的公式是：房价 = 人口数量 * A + B。

到这儿，整个解决的过程都很顺利。我们通过线性回归对已知的信息，即房价和人口数量的关系进行了评估，然后通过这个关系对未来某天的人口数量做进一步分析，得到未来某天的房价是涨还是跌。

但这个时候问题来了，一旦这些数据中有几天的房屋价格信息被登记错了，而我们又把这些错误的数据录入到线性回归方程中（如上图所示），拟合出来的直线就会产生很大的偏移，这会让整个地区的房屋价格分布远远偏离原有的正常范围。这个时候我们该怎么办呢？

逻辑回归算法的原理

当线性回归的预测结果，由于受到个别极端数值的影响而不准的时候，我们就可以用逻辑回归来解决。

在数学中，我们通常会采取一些平滑函数，去减小这些极端值对于整体分布的影响，让整体的分布更加集中。所谓的平滑函数，你可以理解为是把线性回归预测到的具体的值，通过一个函数转化成为 0~1 的一个概率值，如下图所示。

比如，最常见的平滑函数就是 sigmod 函数，通过这个函数的映射，我们可以把某些极端值产生的影响变得非常微小，尽可能地降低它们造成误判的结果，而且，这个函数的输出是在 0~1 之间，也就是说逻辑回归的结果会输出一个事件的概率。对应到我们刚才的例子中，就是当 sigmod 函数的输出大于 0.5 的时候，我们预测房价就会涨，小于 0.5 的时候，我们预测房价就会跌。

说了这么多，这里我再带你总结一下预测房价的流程。我们首先做一个线性回归，此时预测出来的结果值 Y 可以是一个任意连续值，然后我们再在这个结果 Y 基础上调用一个函数 sigmod，把一个评估结果顺利转化成了一个事件的概率。这就是逻辑回归在机器学习中的应用思路了。

总的来说，因为线性回归的结果可以是任意大小的连续型数值，所以这类回归模型可以被更广泛地应用在预测价格等任务上。而逻辑回归模型的输出只能在 0 到 1 之间，也就是表达一个事件会发生的概率，所以被广泛地应用在分类问题上。

如何计算逻辑回归的最优解？

到这儿，我们就把逻辑回归的原理讲完了。不过，我还想再和你聊聊逻辑回归最优解的问题。上节课，我们在计算线性回归最优解的时候，需要找到所有样本点相对于整体分布的距离当作损失函数的评估目标，也就是让线性回归的预测值和真实值之间的差异越小越好。

在逻辑回归里，我们一般会采用交叉熵函数的输出结果作为损失函数的评估目标，根据它来更新逻辑回归中的参数，再通过这些参数让整体的分布更加准确。

损失函数有很多种，像是我们这两节课说的平方损失函数，交叉熵损失函数，还有绝对值损失函数等等。实际工作中，我们需要根据不同的算法来选择特定的损失函数。

交叉熵损失函数一般是用来度量实际输出与期望输出之间的距离，交叉熵的值越小，两个概率分布就越接近，拟合得就更好。在我们的例子中，同样可以采用这个逻辑去分析样本真实分布和实际输出分布之间的误差。

逻辑回归算法是如何应用的？

最后，我们再来说说逻辑回归算法可以解决的问题。比如说：

判断用户的性别

预测用户是否点击指定商品

预测用户是否购买指定商品

这些问题除了是项目的目标以外，本身也可以帮我们更好地了解用户、服务用户。

那逻辑回归是怎么解决分类问题的呢？因为逻辑回归属于有监督学习的分类算法，所以在使用它之前，我们必须要先收集一批已标注好的数据作为训练集，比如说用户的基本信息、浏览日志，购买日志等等。

下面，我们就以预测用户对商品的购买偏好为例，看看使用逻辑回归是怎么实现的。其实我们可以将这个问题转换为是预测用户在未来某个时间段是否会点击某个商品，比如苹果手机。当我们把用户会点击标记为 1，不会点击标记为 0，这就变成了一个二分类问题。

整个过程可以理解成是，我们要利用历史点击过苹果手机的用户的行为日志，通过逻辑回归算法训练出一个模型，当输入一个新用户的浏览行为的时候，这个模型就能输出这个新用户点击苹果手机的概率。

这其实就是模型设计，我们在第 6 课讲过，模型设计最重要的工作是定义模型的目标变量和抽取数据样本。那针对刚才这个场景，模型的目标变量就是用户点击了苹果手机商品页面，数据样本就是历史产生过点击行为的用户浏览日志。这里，我们会用到的特征包括用户在京东的浏览，购买的历史信息。

然后，我们提取指定的时间跨度的特征数据，比如 30 天内的，用来生成的训练集数据，经过人工过滤，我们最终得到了 30 天内，浏览过苹果手机页面的用户特征和标签数据。

如果用户在给定的时间内购买了指定商品，就作为正例，没有购买，则作为负例。然后通过逻辑回归算法对每个指定的商品训练一个二分类模型，将训练好的模型保存下来，就可以用于预测用户在某个商品上的购买概率了，这种预测结果很适合用到推荐等场景中。

总的来说，逻辑回归模型作为基础的分类模型，它可以告诉你一个事件发生的概率，也就是帮你判断一个事件的可能结果。所以除了预测商品点击和购买率之外，我们还可以通过逻辑回归模型进行股票市场的分析判断，对股票形势进行预测。此外，逻辑回归模型也广泛应用在智能领域中，比如我们手机中指纹解锁、面部识别、智能医疗等等。

逻辑回归算法的优缺点

因为逻辑回归在线性回归基础上，加了一个 sigmod 平滑函数，把一个预测连续值转化成了一个概率值，所以，逻辑回归也继承了线性回归算法的全部优点，也就是运算效率高、可解释性强等等优点。不仅如此，逻辑回归因为采取了平滑函数，所以它还减小了极端值对于整体分布的影响，让整体的分布更加集中。

也正是因为逻辑回归模型简单高效，易于实现，所以它一般也会用来为后续模型优化提供一个不错的 baseline，就比如，我们在排序这样的服务中也使用了逻辑回归模型。

不过，既然继承了线性回归的优点，逻辑回归同样也存在和线性回归类似的缺点。作为分类模型，它是根据事物的线性分布转化为概率作为判断，也就是说如果一个事物不是简单的线性分布，那么它的结果也不会很理想。

总结

逻辑回归算法是机器学习领域中经典的分类算法，作为产品经理，我们要掌握它的核心原理、应用场景以及优缺点。

逻辑回归的核心原理就是在线性回归模型基础上，把原有预测的连续值转化成一个事件的概率，用来解决分类问题。在实际应用中，逻辑回归也可以在线性回归的基础上做进一步预测。

比如说，线性回归可以用来预测身高、销售额、房价、库存是多少，逻辑回归就可以预测身高是高了还是矮了，预测销售额提升了还是降低了，预测房价涨了还是跌了，预测库存够用还是不够用等等。

总之，逻辑回归一般用来预测广告点击率、商品点击率、商品推荐、股价预测、产品销量预测等等。

最后，逻辑回归优点可以总结为 4 点，简单易实现，运算效率高，可解释性很强，模型分布更集中，它的缺点是对于非线性分布的预测结果不会很理想。

重要知识总结完了之后，我还想说一个额外的问题，我们知道逻辑回归算法和 KNN 算法都是分类算法，也都可以解决分类问题，那你知道它们之间的区别吗？你可以先自己想想，为了方便你理解，我把它们之间的对比表格放在了下面，你可以看一看。

课后讨论

假设，我们现在有某个网站 1000 个用户的行为数据，以及这些行为数据对应标注的用户性别，你能通过逻辑回归，利用这些行为数据实现对用户性别进行预测的功能吗？特征和标签的示例参考如下：

期待在留言区看到你的思考和设计方案，我们下节课见！

12 | 朴素贝叶斯：让AI告诉你，航班延误险该不该买？

你好，我是海丰。

今天，我们接着来讲一个基础的分类算法，朴素贝叶斯（NBM，Naive Bayesian Model），也可以简称 NB 算法。

你可能想说，贝叶斯我听过，什么叫朴素贝叶斯呢？其实，朴素贝叶斯就是我们在贝叶斯原理的基础上，预先假定了特征与特征之间的相互独立。那特征之间的相互独立是什么意思呢？简单来说，一个人的性别是女性和她是中国国籍这两项特征就是相互独立的，因为她的国籍不会影响到她的性别。那特征之间不相互独立也很好理解了，像是一个人的身高会影响他衣服的尺码，所以身高和衣服的尺码就不是相互独立的。

那特征与特征之间相互独立的好处是什么呢？朴素贝叶斯算法怎么解决分类问题呢？我们又该怎么使用它呢？今天，我们就通过一个预测购买航班延误险的例子，来给你详细讲一讲。

如何理解 朴素贝叶斯 算法？

有的同学可能对贝叶斯算法还不是非常熟悉，或者忘得差不多了，所以在讲朴素贝叶斯算法之前，我们先来说说贝叶斯算法以及相关的基础概念。

1. 贝叶斯的原理

贝叶斯是由一名英国数学家提出来的，贝叶斯就是这个数学家的名字。那它是干什么的呢？

比如说，我们拿到一个长得很大的西瓜，拍一拍它会有咚咚咚的声音，而且这个西瓜的价格还特别贵，那我们就觉得它应该挺甜。虽然这个西瓜不一定是甜的，但是这些经验可以帮助我们在一定概率下找到甜西瓜。

这就是贝叶斯的原理：当不知道这个事物实际情况的时候，我们可以根据一些相关的条件来判断这个事物的本质。与贝叶斯相关的基础概念有 3 个，分别是条件概率、先验概率、后验概率。

条件概率就是事件 B 在另一个事件 A 已经发生条件下的概率，记作 P(B|A)。在统计学中，也称之为似然函数。比如说，北京下雨后，发生道路堵车的概率。

先验概率是事件 A 或 事件 B 是根据经验来判断发生的概率，记作 P(A)、P(B)。比如说，今天我面试了某厂的员工，根据过去的经验这个公司来的员工都很优秀，所以我判断这个人大概率也很优秀。

后验概率是我们已经看到某个事情发生了，再判断这个事情发生原因的概率，即在事件已经发生后，推测原因。比如 P(A|B) 是已知 B 发生后 A 的条件概率，也叫做 A 的后验概率。比如说，我们知道一个西瓜很甜，这个西瓜很甜的原因可能是土壤好，光照充分等等。这个时候，一个西瓜很甜是因为它的土壤非常好的概率，就是后验概率。

实际上，贝叶斯的原理就是根据先验概率和条件概率估算得到后验概率。

2. 朴素贝叶斯的原理

朴素贝叶斯就是在贝叶斯的原理上，加了一个前提假设：所有的条件对结果都是独立发生作用的。这该怎么理解呢？

我们先来看朴素贝叶斯的公式：

P(A∣B)=P(B)P(B∣A)P(A)​

你可能会说，看到公式我就头大。别着急，我们这就来快速理解一下这个公式。我们假设，公式里的 A 代表堵车，B 代表北京下雨，P 代表概率，所以我们可以得到这几个概率：

P(A)：堵车的概率，也就是事件 A 发生的概率；

P(B)：下雨的概率，也就是事件 B 发生的概率；

P(B|A)：在堵车的情况下，北京下雨的概率，也就是在 A 的情况下，发生 B 的概率；

P(A|B)：在北京下雨的情况下，堵车的概率，也就是在 B 的情况下，发生 A 的概率。

那朴素贝叶斯公式就可以理解成是在北京下雨的情况下，求堵车的概率。根据过往的统计结果，我们可以得到 P(A)=60%，P(B)=30%，P(B|A)=40%，根据公式：P(A|B)=P(B|A) P(A)/P(B) = 40% * 60% / 30% = 80%。也就是说，在北京下雨的情况下，有 80% 的可能性会堵车。

因此，在实际的应用中，朴素贝叶斯更适用于文本分类、情感分析、垃圾邮件分类这类场景，毕竟这些数据的相互独立性更高。另外，朴素贝叶斯还会和协同过滤一起，使用到推荐系统中。当然，在实际工作中，贝叶斯的应用会更加复杂。接下来，我就以售卖机票的场景下，是否增加延误险的需求为例，来给你讲讲它的应用。

朴素贝叶斯的应用案例

之前，国内的 OTA 行业（Online Travel Agency，在线旅行行业）基本都接入了延误险。业内的做法是在售卖机票的时候，直接搭售延误险，但这样的产品设计对于用户体验来说是有损害的，用户往往在不知情的情况下，购买了本不需要的产品。

这个时候，我们就可以通过预测航班是否可能延误，给用户提一个航班延误概率的提示，让用户自己做主是否有购买延误险。从平台角度来说，这既丰富了平台的产品，又提高了总体 GMV，从用户角度来说，这既不需要面对不存在的延误险和机票的捆绑销售，又有了更多的选择和参考。

那我们该怎么去判断航班是否可能延误呢？我们可以用朴素贝叶斯快速构建一个模型进行预测。具体的做法是这样的：我们已经知道，决定航班是否延误最主要的因素就是起飞地和降落地的天气情况。假设这些原因之间完全没有影响，那么我们可以去收集过去的飞行数据，计算出每一个条件，比如天气和飞机延误之间的关系。

假设，我们的用户正在浏览北京飞往深圳的航线，他坐飞机的时间段内，起飞地北京的天气是雪天，降落地深圳是雨天。

上面这些条件，我们给它们都分配一个代号。其中，北京的天气是雪天是 AI，深圳的天气是雨天是 A2，飞机延误的概率是 B1，不延误的概率是 B2。这样一来，我们就可以统计飞机延误和不延误情况下，北京是雪天和深圳是雨天的概率了。那么上面那些概率就可以变换为：

飞机延误的情况下，北京天气是雪天 = P(A1|B1) = 20%

飞机延误的情况下，深圳天气是雨天 = P(A2|B1) = 40%

飞机不延误的情况下，北京天气是雪天 = P(A1|B2) = 10%

飞机不延误的情况下，深圳天气是雨天 = P(A2|B2) = 10%

根据历史数据，我们可以得到总体延误的概率为 P(B1) = 30%，不延误的概率是 P(B2)= 70%。这个时候，根据我们之前讲的贝叶斯公式，就可以得到北京雪天同时深圳雨天的时候，飞机延误和不延误的概率了，具体公式如下所示。

飞机发生延误的概率是：P(B1|A1A2) = P(A1A2|B1) * P(B1) / P(A1A2)

飞机不发生延误的概率是：P(B2|A1A2) = P(A1A2|B2) * P(B2) / P(A1A2)

虽然这两个公式中的分母 P(A1A2) 我们不知道是多少，但我们直接比较分子就可以知道延误概率和不延误概率哪个更大。把具体的数值套入到公式中，我们就能得到发生延误的概率是 24%，不发生延误的概率是 7%，计算公式如下：

P(A1|B1) * P(A2|B1)*P(B1)/P(A1)*P(A2) = 20% * 40% * 30% = 24%

P(A1|B2) * P(A2|B2)*P(B2)/P(A1)*P(A2) = 10% * 10% * 70% = 7%

这样一来，当用户在浏览这个航线的时候，我们就可以提示用户，“该航线大概率会延误，请您按需购买延误险”。

朴素贝叶斯的优缺点

朴素贝叶斯的优点主要有两个，首先是算法的逻辑简单，因为它的核心就是贝叶斯公式，所以它实现的过程是不需要训练的，算法计算的时候对资源也占用比较小。

因此，当公司没有算法工程师的情况下，如果你想做一些相对简单并且条件比较独立的事件预测时，你完全可以对研发工程师提出这样的要求：由你来提供相应的条件，研发工程师通过公式来帮你预测结果。

这个时候，你不只是一个需求提出方，还是一个解决方案架构师，能够推动一个需求从 0 到 1 的落地，同时还不需要公司提供额外的资源，这就是你价值的体现。

但是由于朴素贝叶斯有一个假设前提，就是各个条件之间相互独立，互不影响。这让它的使用非常有局限性，只有在条件比较少，并且相互独立的时候，朴素贝叶斯的效果才会比较好。可是，现实世界中这种情况往往不存在，所以在面对条件个数比较多，或者条件之间有一些相关性的时候，朴素贝叶斯得到的效果就会差很多。

总结

今天，我带你一起学习了第三个分类算法，朴素贝叶斯。作为产品经理，我们首先要记住，这个算法的核心来自于贝叶斯公式，算法的前提假设是，算法中各个条件相互独立、互不影响。

同时，为了帮助你加深理解，我也把它的原理和基础概念总结在了下面的表格里。

接着，我们要重点掌握朴素贝叶斯的应用场景，我从两个方面帮你做了总结。

从算法适合的场景上来说，朴素贝叶斯比较适合用于垃圾邮件分类，用户情感预测这些和文本处理相关的场景，这些场景中，算法依赖的条件相互之间比较独立，所以适合用朴素贝叶斯算法来做。

从算法开发成本上来说，朴素贝叶斯适合项目周期比较紧张，算力资源不太充足的情况，因为朴素贝叶斯模型相对简单，构建过程不会太复杂，占用时间相对比较短，并且由于其相对简单的特点，对于算力的要求也不会太高。

课后讨论

假设，我们业务方 HR 团队希望你分析每一个员工的离职概率，你觉得用朴素贝叶斯合不合适？为什么？

欢迎在留言区写下你的思考和疑惑，也欢迎你把这节课分享给你的朋友，我们下节课见！

13 | 决策树与随机森林：如何预测用户会不会违约？

你好，我是海丰。

今天，我们要讲决策树与随机森林。决策树是一种基础的分类和回归算法，随机森林是由多棵决策树集成在一起的集成学习算法，它们都非常常用。

这节课，我就通过决策树预测用户会不会违约的例子，来给你讲讲决策树和随机森林的原理和应用。

如何理解决策树？

很多人都有过租房子的经历，那你是怎么决定要不要租一个房子的呢？你可以先想一想，我先把我的做法说一下，我会先判断房子的位置，再看价格，最后看装修。

更具体点来说，我只会选择离公司近的房子，比如说 5 公里以内的或者通勤时间在 40 分钟以内的。其次，如果价格便宜，不管装修得好不好我都租，如果价格贵那我就要看装修情况，装修好就租，装修不好就不租。

这就是一棵典型的决策树：对于租房子这个问题，我根据距离、价格、装修这几个条件 ，对一个房子进行了判断，最后得到一个解决结果，就是这个房子我是租或者不租。下图就是这棵决策树的示意图。

我们可以看到，决策树（Decision Tree）就是一种树形结构的算法，上面的节点代表算法的某一个特征（如距离、价格），节点上可能存在多个分支，每一个分支代表的是这个特征的不同种类（如距离远、距离近），最后的叶子节点代表最终的决策结果（如租、不租）。

决策树的生成

知道了决策树的形式和原理，我们再来看看决策树的生成过程，它是决策树的核心。不过，对于产品经理来说，更重要的还是掌握决策树的原理、形式、优缺点。那我把它的详细过程写在下面，就是让你在工作中遇到类似问题的时候，能直接回来补充必要的知识，所以今天我们先对整体过程有个大致了解就可以了。

决策树生成的过程包括三个部分，分别是特征选择、决策树生成、决策树剪枝。下面，我们还是拿上面租房子的例子，来说一说这个决策树生成的过程。假设现在有如下条件的一个房子，根据我上面定下的规则，你觉得这个房子我会不会租呢？

我们先看距离，因为这个房子距离公司远，所以根据上面的决策树，我们就能直接得出结论：不租。但是，假设我们的决策树不是用距离作为根节点，而是用价格作为根节点的话，结果会不会不一样呢？

这个时候，决策棵树可能会变成下面的样子：

你会发现，我们的决策树一下子变“大”了，判断这个房子的过程就变成了，先看价格，再看装修，最后看距离。我们发现，即使决策树的结构发生了变化，可我们还是会得到之前的结论：不租，所以，决策树的构造只会影响到算法的复杂度和计算的时间，而不会影响决策的结果。

因此，在实际工作中，我们就需要优化决策树的结构，让它的效率更高，但这具体该怎么做呢？

信息熵

我们一般会在特征选择和决策树的生成阶段，通过信息熵来决定哪些特征重要以及它们应该放到哪个节点上，因为信息熵是用来衡量一个节点内信息的不确定性的。一个系统中信息熵越大，这个系统的不确定性就越大，样本就越多样，你也可以理解成是样本的纯度越低，信息熵越小，系统的不确定性就越小，样本越趋于一致，那样本的纯度就越高。

我们肯定是希望决策树在每次划分的时候，每个条件分支都能够最大化地去划分这些样本，让每个节点的信息熵更低，样本一致性更高。所以，决策树会计算每一个特征划分后样本的“纯度”，纯度越高的特征越接近根节点。这样一来，决策树的复杂度和计算时间肯定就会越少，也就不会出现我们刚才说的那种“很大”的决策树。这就是实际工作中我们构造决策树的思路了。

实际上，决策树的算法有很多，最典型的三种分别是 ID3（Iterative Dichotomiser 3，迭代二叉树 3 代）、C4.5 和 CART（Classification and Regression Trees，分类与回归树）。ID3 是最初代的决策树算法，它使用的计算指标是信息增益；C4.5 是在 ID3 基础上改进后的算法，它使用的计算指标是信息增益率；CART 分类与回归树，做分类问题时使用的是 Gini 系数（Gini Coefficient，基尼系数），做回归问题的时候使用的是偏差值。

作为产品经理，我们简单了解这三种算法的特点就可以了，我在下面对它们进行了总结，你可以参考一下。

剪枝操作

最后，因为决策树很容易出现过拟合情况，所以我们还会引入剪枝操作这个环节。剪枝就是我们对一棵树进行简化，减少它的复杂程度，提高模型的泛化能力。剪枝的原理很好理解，主要就是判断把某个节点去掉之后，模型的准确度会不会降低了，如果没有降低，就可以减掉这个节点。

剪枝的操作还分为预剪枝和后剪枝，它们的区别是剪枝发生的阶段不同。预剪枝在决策树生成时候同步进行。而后剪枝是决策树生成之后，再对决策树的叶子节点开始一步一步地向根方向剪枝。

决策树的应用案例：预测用户违约

决策树的生成讲完了，我们重点来看看决策树的应用。在金融风控场景下，我们经常需要判断用户的违约风险。

最早的风控模型都是使用逻辑回归来做的，因为它相对简单而且可解释性强。但逻辑回归属于线性模型，不能很好处理非线性特征，所以决策树算法也慢慢用于违约风险的预测。接下来，我们就来看看决策树是怎么预测违约风险的。

决策树预测用户违约的核心思想是：先获取部分用户的历史数据，历史数据中包括过去的信贷数据和还款结果；然后将贷款客户不断进行分类，直到某个节点的样本用户都是同一个类型为止；最后，再对决策树进行剪枝，简化树的复杂度。

假设我们得到的用户历史数据如下所示。对于这个表格，我再补充解释一下，过去的信贷数据应该包括申请数据、金融产品相关数据等等。年龄，是否有房这些都属于申请数据，是包括在信贷数据里的。

还款结果指的是什么时候还款，还了多少，但是做模型设计，定义模型目标变量的时候，我们不可能直接用还款数据，所以我们定义是否逾期作为目标值，也就是 Y 值。1 代表逾期，0 代表不逾期。

因为目前决策树算法中，使用比较多的是 CART 算法，所以我们也选择它进行模型构建，而特征选择阶段会使用 Gini 系数。 CART 算法选择 Gini 系数，是因为信息熵模型使用了大量的对数计算导致效率很低，而 Gini 系统可以避免这个问题，从而提升计算效率。

从上面的历史数据中，我们可以提取出三个特征，分别是性别、年龄和是否有房。接下来，我们就分别计算一下这三个特征的 Gini 系数。

首先，性别特征的 Gini 系数直接根据公式计算就可以了，我们假设它就是 0.412。

我们重点来看第二个特征：年龄。年龄是一个连续的值，我们的历史数据中一共有 4 种数值，每两个相邻值之间都可以是一个特征分类的点（比如说，年龄 22 和年龄 24 的分类点就是 23），所以对于年龄这个特征，我们一共有 3 种不同的分类方式。因为分类方式比较多，相对应的，Gini 的计算方式就会比较复杂，我们需要分别计算 3 种不同分类方式时的 Gini 系数，选出 Gini 最小的分类方式，把它作为年龄的分类。

假设年龄在 37 的时候 Gini 系数最小，等于 0.511，那么年龄这个特征的条件分支就是小于 37 和大于 37。

相同的，我们可以再计算是否有房的 Gini 系数。假设这个特征的 Gini 系数为 0.113，最后，根据 Gini 排序我们就能得到如下的决策树结构。

但是，这个决策树还不是最终的结构，因为有些节点我们是可以去掉的。比如说，我们发现有房产这个条件下面的所有节点，去掉和不去掉的时候模型准确性没有变化，那我们就可以把有房产下面的所有节点裁剪掉，从而得到新的决策树。

这就是剪枝操作，在我们实际工作中通常采取后剪枝的操作，从叶子节点逐步向上判断哪些节点是可以去掉的，剪枝后的决策树如下所示。

以上就是决策树创建的过程，因为没有进行实际计算，实际结果可能有偏差，你只要理解这个过程就可以了。

决策树的优缺点

通过上面的学习我们可以发现，决策树的优点和缺点都很明显。由于具有树形结构所以决策树的可解释性强，直观好理解，而且我们还可以从结果向上去追溯原因。采用决策树，我们可以很方便地和领导、业务方、甲方去解释我们的模型是什么，以及有哪些因素影响了模型的结果。

不过，决策树的缺点也非常明显。当数据量大，数据维度（样本具有的特征或者属性，如价格、位置）很多的时候，决策树会变得非常复杂，训练时间会很久。

另外，决策树还有一个很明显的缺点就是，需要算法同学手工设置决策树的深度（决策树要分多少层），如果设置了不合适的参数，就很可能造成欠拟合或者过拟合的情况。比如说，深度太浅就意味着你的叶子节点分得不干净，很容易造成欠拟合的情况，深度太深也会导致决策树训练时间太久，复杂度太高，很容易造成过拟合的情况。

随机森林：集体的力量

在实际工作中，我们既可以只使用一棵决策树来解决问题，也可以使用多棵决策树来共同解决问题，也就是随机森林。

随机森林（Random Forest）指的是由多棵决策树组成，随机指的是每一个决策树的样本是随机从数据集中采样得到的。假设， 模型由三个决策树 A、B、C 组成，我们给每棵决策树都随机抽取样本进行训练，由于这三棵树的训练样本不一样，因此它们最后得到的决策结果有可能不同。最后，我们再把这三棵树得到的结果做一个综合，就能得到最终的决策结果了。

随机森林的原理很好理解，那我们再来说说它的优缺点。因为这个算法是随机从数据集中进行采样的，所以模型的随机性很强，不容易产生过拟合的情况，但正因为样本是随机的，所以模型对于样本数据的异常值也不太敏感。

其次，因为算法采样的时候，是从整个数据集中抽取其中一部分进行采样，而且随机森林是由多棵树组合而成的，所以模型中的每一棵决策树都可以并行训练和计算，这样一来，在面向大数据量的情况下，随机森林的运行效率更高。

也正是因为这样，随机森林在训练时候需要的计算成本会更高，而且，就算它们整合之后会比之前单一模型表现好，但在面对复杂样本的时候，它们仍然没有办法很好区分，所以模型上限很低。

随机森林属于集成学习中的一种。集成学习（Ensemble Learning）可以理解为，不是通过某一个单独的机器学习算法解决问题，而是通过多个机器学习算法结合使用来完成最终的算法，最终达到 1+1>2 的效果。核心原理你可以记成是我们常说的“三个臭皮匠赛过一个诸葛亮”。

集成学习的内部由很多弱监督模型组成， 某一个弱监督模型只在某一个方向上表现比较好，当我们把这些算法合而为一的时候，就会得到一个各方面都会表现较好的模型。集成学习的算法有很多，随机森林是其中比较有代表性的一种。我在下面整理了一个集成学习的思维导图，你可以了解一下。

总结

今天，我们讲了决策树、随机森林的原理、应用和优缺点。理解决策树是理解随机森林和集成学习的基础，不过，作为产品经理，我们的重点不在于理解决策树的生成过程，只是借着它的生成加深对决策树原理和应用的理解。

总的来说，关于决策树和随机森林，我希望你重点记住这 5 点：

决策树就是一种树形结构的算法，它很直观，可视化很强，但也容易过拟合；

决策树特征选择是生成决策树的基础，不同的算法对应了不同的特征选择方式；

集成学习是多个机器学习算法的结合；

随机森林是集成学习中的一种，由多棵决策树组成；

随机森林的原理你可以记成：三个臭皮匠赛过一个诸葛亮，它的特点你可以记成：模型起点高、天花板低。

除此之外，关于决策树和随机森林的应用场景我还想再强调一下。决策树和随机森林模型的可解释度都很高，这就意味着我们可以轻松地把模型的计算逻辑介绍清楚。

实际上，这一点对于咨询、金融、医疗领域的公司来说非常重要，因为你的客户往往不懂你的模型内部在做什么，但如果你的模型结构清晰，你就能在最短的时间内介绍出模型的优势。而且，因为随机森林这样的集成学习算法融合了多个模型的优点，所以对于解决分类问题来说，决策树和随机森林是当今的机器学习算法的首选，就比如你可能听过的 GBDT、XGBoost 就是决策树的升级版。

课后讨论

因为产品经理不需要实际进行模型的构建，所以我不会让你去构建一棵决策树，我想请你来梳理一下，你所在的团队中有哪些项目是基于决策树、随机森林或者是升级算法解决的呢？

欢迎在留言区分享你的经验，我们下节课见！

14 | 支持向量机：怎么预测股票市场的涨与跌？

你好，我是海丰。

不知道你有没有听过一个小故事，一个学渣和一个学霸考了同一张试卷，学渣考了 98 分，是因为他只能考 98 分，学霸考 100 分，是因为卷子只有 100 分。用这个故事中的学霸来形容我们今天要讲的这个算法一点也不过分，这个算法可以说是机器学习分类算法的天花板了。

它就是用来解决分类问题的支持向量机（Support Vector Machine，SVM）算法，简称 SVM 算法。在深度学习模型“横行天下”的今天， SVM 因为相比于深度神经网络更为轻量级，也有极好的性能，所以在工业界，它一般会作为模型效果的基准线。

这节课，我们就来聊一聊 SVM 的原理、应用和优缺点。

如何理解 SVM 算法？

我们先来做一道题：假如，桌子上放了两种颜色的球，你要用一根木棍把它们分开，你会怎么做呢？

如上图所示，我用了两种方式把它们分开了。这两种分类方式看起来差别不大，因为它们应用在这些数据集上的效果都一样，都可以完美分开两种颜色的球。

好， 现在我们加大难度，在这个基础上加上两个红色的样本点。如下图中的两个红色球，它们一个距离图中左下方的橙色球更近，另一个距离右上方的蓝色球更近。

如果我们还是用刚才的分类算法，这一回的效果就完全不同了。为什么这么说呢？在第 11 讲我们学过， KNN 算法通常是用距离公式（如欧式距离）去衡量两个样本之间的相似度，距离越近表示它们越相似。根据这个原理，我们就能得到一个结论：靠近橙色球的样本大概率属于橙色球，靠近蓝色球的样本大概率属于蓝色球。这样一来，做对这道题的就只有右边的分类算法。

那为什么只有它做对了这道题呢？我们可以看到，相比于第一个分类算法，第二个分类算法在完美区分所有样本点的同时，还在努力保证边界样本点到这个分类算法的决策边界的距离尽可能远，这就意味着两个分类样本之间的距离会被放大。根据距离公式，距离远表示相异，所以这两个分类样本的区分度会更高。

这个分类方法立于不败之地的原因，用一句话总结就是：在保证了分类正确性的同时，还尽可能让两个样本的类别更容易区分。简单来说就是，不仅做对了，还保证了质量。

SVM 算法的原理

我刚才说的划分橙色和蓝色小球的方法就是 SVM 的算法思路：当样本数据是线性可分（用一条直线可以将样本数据分开）的时候，找到距离两类样本间隔最大的一条线，或者说是两类样本数据之间的中轴线。因为有无数条线可以区分两个分类，只有它们之间的中轴线距离所有样本点的距离最远。

其中，距离这条直线最近的几个样本点（如上面例子中的几个橙色和蓝色小球），就叫做支持向量（Support Vector），这几个点到这条线的距离称为间隔。

那为什么一定要找到间隔最大的这条直线呢？它除了能让分类样本的区分度最高，还有一个好处，就是当新数据发生波动的时候，就算超过了原有数据样本点的最近边界，分类结果仍然不会受到影响。因此，寻找最大间隔的过程也是 SVM 算法最优化参数的过程。

如何处理非线性可分？

但是，我们也知道现实情况中，很多数据是线性不可分的，就比如橙色和蓝色的球均匀地混合在了一起。这个时候，我们找不到一条直线可以把两种小球很好地分类。在这种情况下，SVM 又是怎么解决的呢？

SVM 的解决办法就是将二维平面映射到三维空间，我们可以想象成是把二维平面中的直线通过在三维空间上的投影构造出一个平面。这个平面把原有的空间分割成为了两部分，让两种颜色的小球样本在高维空间中线性可分。当然，我们也可以在平面的基础上延伸，比如映射到一个超过三维的空间，这就构造出了一个超平面。这种数学思路是 SVM 算法最优秀的地方，也是 SVM 和其他线性算法最大的区别。

总之，线性分类算法都可以叫线性分类器，它在二维空间中是直线，在三维空间是平面，在三维以上的空间维度是超平面。

在讲 SVM 解决办法的时候，我们还有一个问题没有解决：SVM 是怎么把分类器从二维平面映射到高维空间的呢？其实就是通过“核函数”来实现的，核函数的作用简单来说就是把低维空间映射到高维空间，常见的核函数有线性核函数、高斯核函数等等。因此， SVM 就是通过核函数将样本从原始空间映射到一个更高维的特质空间中，让样本数据在新的空间中线性可分。

总的来说，SVM 是一个有监督的二分类器，目标是找到一个超平面，让两类数据距离这个超平面最远，从而对新的数据分类更准确。

应用场景：预测股票市场的涨与跌？

假设，我们现在需要预测股票市场的涨和跌。因为，SVM 通过核函数能够方便地处理高维数据，而且，它通过少量的支持向量就可以进行决策，预测效率非常高，所以，我们决定通过 SVM 算法找到一套解决方案。

同时，我们希望这个方案还能应用在一些典型的个股股票的预测场景中，能够根据股票的若干特征样本数据，把待预测的目标结果划分成“涨”和“跌”两种，从而实现预测股票涨跌的效果。

首先，我们对模型进行设计，第一步是设定模型的目标变量。

因为要预测的是股票涨跌，所以我们首先想到的就是预测未来一些天的股票价格是增长还是下降，但是，除非这个结果具有非常高的正确率，否则这种预测对于实际投资就没有太大的指导意义。

但是，如果我们能够描绘出未来一些天股票价格的走势或者说是股票价格曲线的大致形状，就算它预测出的股票价格与实际股票价格有一定的出入，这对股票投资来说也会有很大的指导意义。因此，我们的目标变量就是未来一些天个股的“涨”和”跌”走势。

然后就是确定数据样本。我们会从历史个股在市场交易环节的数据表现中进行抽取，并且确定算法选型为 SVM 支持向量机。

在模型设计完成之后，我们就要建立特征工程了。模型里所用到的输入特征数据是由股票基础指标计算得出，这些指标分别是前收盘价、开盘价、最高价、最低价、均价、成交量、成交额、涨跌、涨跌幅、换手率、收盘价。我们会根据这些指标构造出 8 个特征向量，这些指标一般和股价具有较强的相关性，特征向量如下：

在构建完特征工程后，就进入模型训练的环节了。在这个阶段，算法工程师会选择核函数进行训练，如果是线性数据，就选线性核函数的 SVM 分类器，否则就选高斯核函数的 SVM 分类器。在预测股票涨跌的例子中，算法工程师就会选择高斯核函数的 SVM 分类器，然后对训练好的模型用测试集进行评估。

最后，我们把计算得出的结果绘制成股票的价格曲线，通过对比真实与预测行情的走势，以可视化的方式直观地检验模型预测结果是否达到效果。

SVM 算法优缺点

SVM 算法作为机器学习领域非常强大的算法，SVM 算法作为机器学习领域中非常强大的算法，首当其冲的优点就是，它不仅适用于线性问题，还适用于非线性问题。因此，SVM 对高维数据集和低维数据集都有不错的表现，它可以在数据特征很少的情况下生成非常复杂的决策边界。当然，在特征数量足够多的情况下效果更好，原因是数据集的复杂度只取决于支持向量而不是数据集的维度。

并且，相比于 KNN、决策树这些局部最优解的算法来说，SVM 可以求得一个全局的最优解。

但是，SVM 的缺点就是训练所需要的资源很大。由于运算量与存储量都很高，SVM 训练会非常消耗时间和内存。因此支持向量机比较适合小的样本量，比如几千条数据，当样本量太大的时候，训练资源开销就会过大。而且，SVM 无法直接解决多分类问题，只能通过多个二分类支持向量机的组合来解决。

总结

今天，我借助预测股票涨跌的例子给你讲了 SVM 支持向量机的核心原理、应用场景以及优缺点。

对于 SVM 的原理，你可以分两方面来理解，我还是用小球举例：

当小球数据是线性可分的时候，SVM 的思路就是要找到距离两种小球间隔最大的那条线；

当小球数据是线性不可分的时候，SVM 的做法就是通过核函数把小球映射到高维空间中，构造出一个超平面，让小球样本在高维空间中线性可分。

在深度学习模型还没有火起来之前，SVM 算法可以说是分类算法的天花板了，尤其在文本分类场景下效果表现非常好，比如情感分析、短文本分类等等。那么，即使在深度学习模型应用这么广泛的今天，无论我们选择哪个深度学习算法，它的效果也一定要以 SVM 算法的效果为基准线。

关于 SVM 的优缺点，我们要知道，SVM 可以解决线性问题，又可以解决非线性问题，同时，它可以求出一个全局最优解。但是，SVM 训练资源开销比较大，所以适合应用在小样本量的数据分类中，而且它只能通过多个二分类的组合，来间接解决多分类问题。

课后讨论

结合我们学过的知识，对于 SVM 和 LR 来说，你觉得哪些情况下适合选用 SVM，哪些情况下适合选用 LR？为什么？

欢迎在留言区分享你的观点和疑惑，也欢迎你把这节课分享给你的朋友，我们下节课见!

15 | K-means 聚类算法：如何挖掘高价值用户？

你好，我是海丰。

在前面的课程中，我们学习了分类算法：K 近邻、逻辑回归、朴素贝叶斯、决策树，以及支持向量机，也学习了回归算法：线性回归。它们有一个共同点，都是有监督学习算法，也就是都需要提前准备样本数据（包含特征和标签，即特征和分类）。

但有的情况下，我们事先并不能知道数据的类别标签，比如在第 8 讲智能客服的例子中，因为事先并不知道用户的咨询问题属于什么类别，所以我们通过层次聚类算法把相似度比较高的用户咨询问题进行了聚类分组，然后把分析出的常见高频问题交由机器人回复，从而减轻人工客服的压力。

聚类算法是无监督学习算法中最常用的一种，无监督就是事先并不需要知道数据的类别标签，而只是根据数据特征去学习，找到相似数据的特征，然后把已知的数据集划分成不同的类别。

不过，因为第 8 讲中的层次聚类算法在实际工业中的应用并不多。所以今天，我们就来讲一种应用最广泛的聚类算法，它就是 K 均值（ K-means ）算法。

如何理解 K-means 算法？

每次大学开学的时候都会迎来一批新生，他们总会根据自己的兴趣爱好，自发地加入校园一个个小社团中。比如，喜欢音乐的同学会加入音乐社，喜欢动漫的同学会加入动漫社，而喜欢健身的同学会加入健身社等等。

于是，这些来自天南地北从来不认识的人，追随着同样的兴趣爱好走到了一起，相互认识。这就是我们常说的，人以群分，物以类聚。

K-means 算法的原理

如果把这个故事的主角换成机器学习中的数据样本，我们是不是就可以快速给它们进行分类了呢？比如，当几个样本非常相似的时候，我们就把它们归为一类，再用这几个样本的中心位置表示这个类别，以方便其他相似样本的加入。

每当这个类别中有了新的相似样本加入的时候，我们要做的就是更新这个类别的中心位置，以方便这个新样本去适应这个类别。

这其实就是 K-means 算法的思路：对于 n 个样本点来说，根据距离公式（如欧式距离）去计算它们的远近，距离越近越相似。按照这样的规则，我们把它们划分到 K 个类别中，让每个类别中的样本点都是最相似的。

为了方便理解，我们引入了聚类的概念，聚类就是相似度很高的样本点的集合，我们刚才说的 K 个类别就等于 K 个聚类。同时，为了准确描述聚类的位置信息，我们还需要定义这个聚类的坐标位置，就是聚类中心，也就是质心（Centroid），来方便其他待测样本点去评估它距离哪个聚类更近，每个质心的坐标就是这个聚类的所有样本点的中心点，也就是均值。

K-means 算法解决聚类问题的过程

K-means 算法是怎么解决聚类问题的呢？为了帮助你理解，我们来举个具体点的例子。假设我们现在要给 9 个样本进行聚类，它们有两个特征维度，分布在一个二维平面上，如下图所示。

第一步，我们先随机在这个空间中选取三个点，也就是质心。

第二步，我们用欧式距离计算所有点到这三个点的距离，每个点都选择距离最近的质心作为的中心点。这样一来，我们就可以把数据分成三个组。

第三步，在划分好的每一个组内，我们计算每一个数据到质心的距离，取均值，用这个均值作为下一轮迭代的中心点。

最后，我们不断重复第二步和第三步进行迭代，直到所有的点已经无法再更新到其他分类，也就是聚类中心不会再改变的时候，算法结束。

K 值如何确定

K-means 的算法原理我们就解释完了，但还有一个问题没有解决，那就是我们怎么知道数据需要分成几个类别，也就是怎么确定 K 值呢？

K 值的确定，一般来说要取决于个人的经验和感觉，没有一个统一的标准。所以，要确定 K 值是一项比较费时费力的事情，最差的办法是去循环尝试每一个 K 值。然后，在不同的 K 值情况下，通过每一个待测样本点到质心的距离之和，来计算平均距离。

比如，在刚才这个例子中，当 K=1 的时候，这个距离和肯定最大，平均距离也最大；当 K=9 的时候，每个点也是自己的质心，这个时候距离和是 0，平均距离也是 0。随着 K 值的变化，我们最终会找到一个点，让平均距离变化放缓，这个时候我们就基本可以确定 K 值了。

应用案例：K-means 算法对用户分层

接下来，我们再借助电商平台分类用户的例子，说说 K-means 算法的应用。电商平台的运营工作经常需要对用户进行分层，针对不同层次的用户采取不同的运营策略，这个过程也叫做精细化运营。

就我知道的情况来说，运营同学经常会按照自己的经验，比如按照用户的下单次数，或者按照用户的消费金额，通过制定的一些分类规则给用户进行分层，如下表格，我们就可以得到三种不同价值的用户。

这种划分的方法简单来看是没有大问题的，但是并不科学。为什么这么说呢？这主要有两方面原因。

一方面，只用单一的“下单次数”来衡量用户的价值度并不合理，因为用户下单的品类价格不同，很可能会出现的情况是，用户 A 多次下单的金额给平台带来的累计 GMV（网站的成交金额） ，还不如用户 B 的一次下单带来的多。因此，只通过“下单次数”来衡量用户价值就不合理。因为一般来说，我们会结合下单次数、消费金额、活跃程度等等很多的指标进行综合分析。

另一方面，就算我们可以用单一的“下单次数”进行划分用户，但是不同人划分的标准不一样，“下单次数”的阈值需要根据数据分析求出来，直接用 10 和 50 就不合理。

这两方面原因，就会导致我们分析出来的用户对平台的贡献度差别特别大。因此，我们需要用一种科学的、通用的划分方法去做用户分群。

RFM 作为用户价值划分的经典模型，就可以解决这种分群的问题，RFM 是客户分析及衡量客户价值的重要模型之一。其中 ，R 表示最近一次消费（Recency），F 表示消费频率（Frequency），M 表示消费金额（Monetary）。

我们可以将每个维度分为高低两种情况，如 R 的高低、F 的高低，以及 M 的高低，构建出一个三维的坐标系。

这样一来，我们就把客户分为了 23，也就是 8 个群体，具体的分类如下：

然后，我们通过用户历史数据（如订单数据、浏览日志），统计出每个用户的 RFM 数据：

USERPIN：用户唯一 ID；

R：最后一次消费日期距现在的时间，例如最后消费时间到现在距离 5 天，则 R 就是 5；

F：消费频率，例如待统计的一段时间内用户消费了 20 次，则 F 就是 20；

M：消费金额，例如待统计的一段时间内用户累计消费了 1000 元钱，则 M 就是 1000；

这样，我们就有了 8000 个样本数据，每个样本数据包含三个特征，分别为 R、F，M，然后根据前面 RFM 分为 8 个用户群体，则意味着 K 值为 8。

最后，我们将数据代入到 K-means 算法，K-means 将按照本节课讲解的计算逻辑进行计算，最终将 8000 个样本数据聚类成 8 个用户群体。这个时候，运营同学就可以根据新生成的 RFM 用户分群进行针对性的营销策略了。

好了，这就是 K-means 算法对用户进行聚类的全部过程了。除了对用户聚类，K-means 算法可以应用场景还有很多，常见的有文本聚类、售前辅助、风险监测等等。下面，我们一一来说。

文本聚类：根据文档内容或主题对文档进行聚类。有些 APP 或小程序做的事儿，就是从网络中爬取文章，然后通过 K-means 算法对文本进行聚类，结构化后最终展示给自己的用户。

售前辅助：根据用户的通话、短信和在线留言等信息，结合用户个人资料，帮助公司在售前对客户做更多的预测。

风险监测：在金融风控场景中，在没有先验知识的情况下，通过无监督方法对用户行为做异常检测。

K-means 聚类算法的优缺点

在优点方面，K-means 算法原理简单，程序容易实现，运算效率高，并且可解释性强，能够处理绝大多数聚类问题。而且，因为它属于无监督算法，所以不需要利用样本的标注信息就可以训练，这意味着它不需要像监督学习一样过分追溯样本的标注质量。

在缺点方面，K-means 由于不能利用样本的标注信息，所以这类模型的准确度比不上监督类算法。而且，K-means 算法受噪声影响较大，如果存在一些噪声数据，会影响均值的计算，进而引起聚类的效果偏差。

总结

K-means 算法是机器学习领域中处理无监督学习最流行、经典的聚类分析方法之一。它是典型的基于距离的聚类算法，采用距离作为相似性的评价指标，待测样本点距离聚类中心的距离越近，它的相似度就越大。

今天，我先讲了 K-means 算法的原理。我们要重点理解它的应用思路，我把它们总结成四步：

第一步，随机选取任意 K 个数据点作为初始质心；

第二步，分别计算数据集中每一个数据点与每一个质心的距离，数据点距离哪个质心最近，就属于哪个聚类；

第三步，在每一个聚类内，分别计算每个数据点到质心的距离，取均值作为下一轮迭代的质心；

第四步，如果新质心和老质心之间的距离不再变化或小于某一个阈值，计算结束。

K-means 最经典的应用场景就是文本聚类，也就是根据文档内容或主题对文档进行聚类，再有就是对用户进行分类，它们是 K-means 最常用的两个场景。

然后，我还给你讲了 K-means 算法的优缺点。关于优点你记住 3 点就够了，分别是简单易实现，运算效率高，可解释性很强。缺点也是 3 点，分别是不稳定，容易受到噪声影响，并且不如有监督学习算法准确。

那重要知识总结完之后，我还想带你对 K-means 算法和 KNN 做一个区分。很多同学容易把它们弄混，因为它们的类别信息都会受到当前样本周围的环境的影响，但 K-means 和 KNN 有着本质的区别，我在下面对它们进行了对比，你可以去看看，希望能帮助你加深理解。

课后讨论

我想请你想一想，在你的业务场景中，有哪些需求可以通过聚类分析的方式来实现。为什么？

欢迎在留言区分享你的故事，我们下节课见！

16 | 深度学习：当今最火的机器学习技术，你一定要知道

你好，我是海丰。

深度学习（Deep Learning）是一种特殊的机器学习，是借鉴了人脑由很多神经元组成的特性而形成的一个框架。相对于普通的机器学习，深度学习在海量数据情况下的效果要比机器学习更为出色。

并且，自从 2016 年 Alpha Go 打败了李世石之后，深度学习就正式确立了在机器学习领域中的霸主地位。可以说，目前所有应用了人工智能的行业，基本都用到了深度学习模型。因此，产品经理也必须要了解深度学习的基础知识。

这节课，我们就来学习这个当今最火的机器学习技术，以及它的应用场景和算法效果。

如何理解深度学习？

因为深度学习可以简单理解为多层的神经网络模型，所以想要理解深度学习，我们就要先理解神经网络。接下来，我就通过一个例子来讲讲什么是神经网络。

什么是神经网络？

假如，你现在就职于一家很“民主”的公司，每年年终总结的时候，公司会让每一名员工写下自己对公司的意见，并且收集起来。为了节约行政成本，这些意见都会由当前层级的领导整合后，提交给他的上一级领导。

比如说，每个“部门组长”收集所有“部门员工”的意见，整合后统一提交给所有“部门经理”。每个“部门经理”收集所有“部门组长”的意见，整合后统一提交给所有“事业群经理”。就这样层层汇总传递，最后由事业群经理汇总提交给总经理，下图就是这个公司收集员工意见的流程图。

这个例子其实完全可以通过机器学习模型来描述。我们可以把每个“员工”的意见，想象成机器学习中的“特征”，把每一层“领导”对收集上来的意见的整合，想象成当前层级的“输出”，最后把“总经理”收到的结果想象成模型的“最终输出”。这样一来，就形成了一个多层级的机器学习模型，也就是我们说的神经网络。

具体来说，我们可以把这个神经网络用三层结构来表示，分别为输入层、隐藏层，以及输出层。其中，隐藏层对我们来说是黑盒，隐藏层中的每上一个隐藏层的输出都是下一个隐藏层的输入，每一层都是在表达一种中间特征，目的是将特征做非线性高阶变换。

在这个神经网络的结构中，不同层级之间的联系是非常紧密的，因为每个连接层之间的节点（领导），都会和上下两个层级中的所有节点（领导）进行沟通。我们也把这种结构叫做全连接神经网络模型。

神经网络模型的组成

上图这样由“圆圈”和“连接线”组成的图就是神经网络结构图，我们可以通过一个数学公式来表达：A(n+1)=δn(WnAn+bn)。

理解公式是理解神经网络组成的关键，接下来我就给你详细讲讲这些参数都是什么。

首先，图中的一个个“圆圈”就是 Neuron（神经元），表示当前层级下计算节点的输出，也就是 A(n+1)，我们可以把它想象成某个层级的领导对收集上来的意见整合后的结果。

而“连接线”就是 Weights（网络权重），表示不同层级之间的连接，用 Wn 表示。我们可以把它想象成不同员工意见的权重，比如核心员工的意见份量就重一些，绩效差的员工份量就轻一些。

同时，因为每个人所在公司位置不同，所以对于意见的反馈结果也会不同。比如，有些“部门经理”在收到员工的意见后，决定直接放大负面反馈的意见，而有些“部门经理”则决定谨慎处理，减少负面意见反馈的声音。在机器学习中，我们会把这些带有主观偏见的处理，叫做神经网络模型中的 bias 偏移，用 bn 表示。

说到这，不知道你意识到一个问题没有，如果只是把“员工”意见反馈给“总经理”，那中间几层的“领导”就没有存在意义了，因为“员工”完全可以直接跳过所有“领导”把意见传递给最终的“总经理”。

因此，神经网络模型还设计了一个对下层意见解读和调整的操作。一般来说，我们会采用增加激活函数对每一层整体的输出做改进，把每层的结果做非线性的变化，去更好地拟合数据分布，或者说来更好地展示给上层的“领导”。常见的激活函数有 ReLU、tanh、Sigmoid 等等，我们用 δn() 表示。

深度学习模型训练目标

理解了神经网络的基本知识之后，深度学习模型的训练目标就很好理解了。

前面的学习让我们知道，监督类机器学习模型的目标就是在给定一个任务的情况下，找到最优化的参数，使得 Loss 损失值最小，其中 Loss 损失值就是预测结果和真实结果之间的误差。

神经网络作为一个有监督机器学习模型，自然也不会例外，它的目标就是在给定一个任务的情况下，找到最优的 Weights 和 bias，使得 Loss 最低。

由于最开始的参数都是随机设置的，因此获得的结果肯定与真实的结果差距比较大。那么，为了训练神经网络中的参数，神经网络模型会采用反向传播，把 Loss 误差从最后逐层向前传递，使当前层知道自己在哪里，然后再更新当前层的 Weights 权重和 bias 偏移，进而减小最后的误差。这部分数学推导比较复杂，产品经理只要了解就可以了。

深度学习的应用案例：图像识别是如何实现的？

近几年，神经网络在图像处理和自然语言处理方面都有非常大的成果。所以，我们也借助一个图像识别的案例，来讲讲深度学习的应用。

如今，图像识别这项技术已经发展得很成熟，卷积神经网络（Convolutional Neural Networks，CNN）又是其中的主流技术，像 Facebook、Google、Amazon 等公司都在利用 CNN 进行图像识别的工作。

CNN 是如何实现图像识别的？

下面，我们就来学习一下，CNN 实现图像识别的具体过程。

因为 CNN 是深度学习的算法之一，所以它同样包含输入层、隐藏层，以及输出层这三大部分，更具体点来说，CNN 的整个组成部分可以分为，数据输入、特征提取、全连接以及输出层四个部分。其中，特征提取、全连接对应神经网络的隐藏层，数据输入和输出层对应神经网络的输入层和输出层。同样的，我也把它和神经网络的对应关系梳理出来了，如下图所示。

接下来，我就结合下面的示意图，给你详细讲讲它对图像的处理过程。

CNN 实现图像处理的第一步，就是把图像数据输入到 CNN 网络模型中。我们在第 3 讲中讲到，任意一张彩色图片都可以表示成一个三阶张量，即三维数组。

其实所有彩色图像都是由红、绿、蓝（RGB）叠加而成的，比如一个 12px * 12px 的图像可以用 3 个 12 * 12 的矩阵来表示，如果是白色的图像就可以表示成 GRB(255, 255, 255)。 那么， CNN 网络模型的数据输入就是将彩色图像分解为 R、G、B 这 3 个通道，其中每个通道的值都在 0 到 255 之间。

数据输入之后，就到了特征提取的阶段了。在讲具体操作之前，我想你肯定会有一个疑问：为什么 CNN 就适合于图像类的任务，全连接神经网络为什么不可以呢？

这是因为，CNN 能够在众多深度学习算法中，以最短时间提取图像的特征。普通的神经网络对输入层与隐藏层会采用全连接的方式进行特征提取，所以在处理较大图像的时候，处理速度就会因为计算量巨大而变得十分缓慢。这个时候，计算能力就会成为最大的瓶颈。如果换成现在互联网上动不动就出现的高清大图，全连接神经网络就更行不通了。

举个例子，人在识别图像的时候，图像越清晰越好，但是这一点对于机器来说却很难，因为机器在识别图像的时候，往往需要将图像转换成像素值，再输入到模型中进行学习，而越清晰的图片意味着需要处理的像素越多，会带来更多的计算压力。

为了解决这个问题，CNN 就通过过滤无关信息，来提高识别效率。比如下面的这张图片，背景对于图像识别来说其实没有帮助的，反而増加了很多干扰信息。

那么，如何有效地过滤掉干扰信息，并且识别图像中的主体信息呢？做法就是不断模糊化一张图片，最后只剩下狗的轮廓，而背景信息这类无关项就会越来越不可见。

对于 CNN 网络模型来说，“模糊化图像”的这个操作就是通过 CNN 的卷积和池化来实现的。

我们先来看卷积运算。CNN 的每一个隐含单元（即，前文中的各中间层“领导”）只连接输入单元（即上一层输入）的一部分，这样就能让模型中不同输出对应不同的局部特征。对应到图像中，就是可以提取图像的不同局部特征，从而实现既减少了输入值，又提取到了图像的最主要的内容。

在完成各层的卷积运算后，深度学习模型还需要进行非线性的变换，非线性的变换是通过增加激活函数来实现的，通过激活函数将“线性回归”拟合的直线编程曲线，这样可以拟合各种复杂的问题，这里激活函数选型的是 ReLU 函数。非线性变换的内容我们在“逻辑回归”那节课也讲过，你也可以去回顾一下。

池化的目的也是提取特征，减少向下一阶段传递的数据量，池化过程的本质是“丢弃”，即只保留图像主体特征，过滤掉无关信息的数据特征。

CNN 的所有卷积和池化操作都是在提取特征，直到全连接层才进入真正的训练学习阶段，做最后的分类计算。在 CNN 中，全连接层一般是用的是 Softmax 函数来进行分类，这部分我们简单了解就行了。

深度学习的优缺点

接下来，我再结合深度学习的优缺点，来说说它的适用场景。

首先，深度学习的可解释性非常差，因为它的内部计算复杂，对我们来说是一个黑盒，我们只需要输入数据，由它来告诉我们结果，至于为什么会这样，它不做任何解释。所以在很多对解释性要求比较高的场景，比如信用评级、金融风控等情况下，深度学习没办法使用。

其次是训练深度学习模型非常消耗资源，所以想利用深度学习网络进行实际工作，我们就必须要提前准备好相应的计算资源，如硬件设备。

最后，因为深度学习模型复杂，对数据依赖很强，所以它比我们之前讲的传统机器学习网络更难理解和学习。因此，在实际工作中，训练深度学习模型也需要配置专业的人才。

总之，深度学习具有可解释性弱，模型训练慢，对数据依赖很强，模型复杂这四个缺点。尽管深度学习的应用有着非常苛刻的条件，但是相对于它的模型性能来说，这些成本的付出还是值得的。深度学习自身的神经网络结构，让它每层的 Activation 激活函数都可以做非常复杂的非线性变化，这也意味着你的模型可以拟合任意复杂的数据分布，所以，它比我们之前讲过的所有算法的性能都要好。

总结

今天，我们围绕深度学习，讲解了它的原理结构、优缺点和应用场景。

深度学习是机器学习的一种，它源于神经网络模型的研究，由输入层、隐藏层，以及输出层组成，在计算机视觉、语音识别、自然语言处理等领域应用最为广泛。

在目前的机器学习领域中，它可以说是性能最好的网络模型了。但同时，它也具有可解释弱，模型训练慢，对大数据有依赖，模型复杂度高的缺点，这让它的应用场景受到了局限。

因此，在目前工业中，深度学习常用来处理计算机视觉、人脸识别、语音识别、机器翻译、自然语言处理、推荐系统等等。

最后，我还想补充一点，除了我们今天讲的 CNN，深度学习还有很多其他的模型，比如 LSTM、RNN、Seq2Seq、Gen，以及很多开源的深度学习框架，比如 TensorFlow、PyTorch 等等。这些都为算法工程师构建和使用神经网络创造了极大的便利，并且在实际的工作中，他们通常也会选择这些框架来进行模型的构建和训练。作为产品经理，如果你掌握了我们今天讲的内容，你也可以结合自己的业务，多去了解一下这些内容。

课后讨论

最后，我还想请你介绍一下，你曾经在工作中遇到过的深度学习模型案例，以及当时为什么要基于深度学习来做？

欢迎在留言区给分享你的故事，也欢迎你把这节课分享给你的朋友，我们下节课见！

期中周测试题 ，你做对了吗？

你好，我是海丰。今天，我来公布一下主观题的答案。

我们先来回顾一下题目：

假如，你现在是一家电商平台的产品经理，负责点评系统的产品设计，现在有一个需求是要通过计算将海量评论中的垃圾评论（如，打广告的情况）过滤出来，你会怎么思考和设计产品？

我们知道，用户评论数据都是非结构信息，所以我们首先要做的就是将非结构化数据转化成结构化的。在文本分析中，我们可以使用“词向量”来表示文本中的数据。

举个例子，如果用户评论中出现某些特定词，比如“尊敬的”“您好”“促销”等等，它们很有可能属于垃圾评论。那我们就可以用这些词来构成“词向量”，具体怎么做呢？下面，我分三步来讲。

第一步：对评论进行分词。

分词是文本分析的首要工作，“基于字符串匹配”是最简单的分词方法。举个例子，现在有一句短语叫做“北京亚朵酒店”，以及我们事先积累的词库。

首先，我们可以提出短语的第一个字符串“北”，然后将短语中从“北”字开头的后续的内容与词库中收录的词语进行匹配。当匹配到了词库中的词语“北京”后，就可以停止匹配了，“京”字也就作为终止字符。这样，我们就从“北京亚朵酒店”中提出来了第一个词语“北京”。

接着，我们就可以把“北京”这个词从原始短语中删除，从“亚”字重新开始匹配。

根据字符串匹配的方式，在已知业务常见词语的基础之上，我们是可以将评论中的所有词汇都切分出来的，切分的结果如上图所示。

当然，我这里使用“基于字符串匹配”的分词方式讲解是为了让你更容易理解，在实际工作中，我们通常会采用“正逆向最大匹配”的分词算法，以及如果有更为复杂的短语，如“武汉市长江大桥”，就要结合概率来进行分词了。

第二步：构建训练集和测试集。

解决了分词问题后，垃圾评论分类产品的构建的工作就已经完成一半儿了。接下来，就是构建训练集和测试集了。

首先，我们需要两组评论，一组用于训练，一组用于测试。目前，历史评论的样本数据我们有了，样本数据的标签（正常评论、垃圾评论）我们也有了，那么，只需要确定特征以后，就可以带入分类算法进行训练了。

那么特征是什么呢？其实就是把分词后的每个“词语”在样本中的词频（出现的次数）。

比如说，下面是 5 个评论统计得到的词频统计表。其中“0”表示某个词语在评论中没有出现。“1”则表示某个词语在评论中出现了。

第三步：计算概率。

根据刚才得到的表格，我们能够计算出“尊敬的”“你好”这些词语在垃圾评论和正常评论中出现的概率，我把它们总结在了下面的表格里。这个时候，当“顾客”出现在新评论中的，我们就认为它是垃圾评论的概率是 0.2。

这样一来，当有了新的评论出现的时候，我们首先对它进行分词，根据概率公式 数学公式: p=∑i=18​ci​pi​ 计算新评论属于垃圾评论的概率。

比如，对于一个含有“尊敬的”、“促销”、“朋友”、“约会”、“顾客”的评论来说。

属于垃圾评论的概率是：

数学公式: 0.67=1×0.2+0×0.13+0×0.13+1×0.2+0×0.13+1×0.07+1×0+1×0.2

属于正常评论的概率是：

数学公式: 0.8=1×0+0×0+0×0+1×0.2+0×0+1×0.4+1×0.2+1×0

由于 0.8 大于 0.67，所以新评论属于正常评论。

好了，主观题的解题思路就是这样了。那么，期中周马上就要结束了，希望你能尽快巩固好我们所学的内容。我们下节课见！

期中答疑 | AI产品经理热门问题答疑合集

你好，我是海丰。

到今天为止，我们的课程已经更新过半了。我非常开心看到很多同学一直在坚持留言，认真回答课后问题。不过，我也发现，不少同学已经慢慢掉队了，有的人是想要拿出大块的时间来学习，有的人是遇到问题之后没有解决，进度就停下了，总之是积累了很多的课程没有学习。

从今天开始，我们就进入期中周了。首先，我会整理出一些关注度比较高的课后问题，在这里进行统一的解答，其次，我还准备了一道问答题，通过解决它，希望能帮助你对前半程学过的知识进行梳理，查缺补漏。

我先给你准备一份学习指南：首先，关注度比较高的问题我分成了三类，分别是关于产品岗位、关于技术边界，以及关于项目流程的问题。你可以结合我下面的分类，直接去找对应的问题答案。如果你还有其他的疑问，也可以在留言区提问，我都会尽力解答。然后，你可以集中精力去做我留下的问答题，问答题的解决思路我会在周五进行更新，记得准时来看。

话不多说，直接进入今天的答疑吧！

关于产品岗位

问题 1：如何快速建立对一个行业的结构认知？

想要快速对一个行业有整体的宏观认知，可以先从这个行业的产业链入手，了解这个产业中一个完整的价值创造过程是怎样的，行业里有哪些头尾部公司。获取这些产业认知内容的途径，我总结了一下，一般有 3 种方式：

通过咨询公司报告，如 艾瑞咨询、易观智库、艾媒网 等咨询公司的行业报告了解行业资讯和动态；

通过行业发展报告，如 中国报告大厅、中国产业研究院 等相关行业发展或投资调研报告；

行业上市公司财报，找行业内的上市公司，通过财报信息能全面的了解，行业的用户、商业、供应链、业务发展等信息。

问题 2：为什么 AI 产品经理多分布在 B 端企业？

每个行业都会有“产品岗位”，所以产品经理必然是覆盖全行业的。但为了区分产品经理就职的主流方向，大部分 AI 产品经理活跃在 B 端，原因在于过去几年 AI 在 B 端的产业，更容易商业化。

不过，岗位需求也是随着行业发展而动态变化的，所以最近一两年，我们也能看到 AI 产品经理在 ToC 和 ToB 中的岗位逐渐多了起来，例如推荐系统产品经理，虽然岗位 Title 没有提到 AI，但是岗位能力就是一个 AI 产品经理的要求。

随着 AI 技术在各行业的不断落地，我认为，ToC 的 AI 产品经理势必会成为未来几年后的岗位主流。

问题 3：没有 AI 项目环境，产品经理如何转型？

这个问题我发现还是很普遍的，所以我把它单独拿出来说，我认为可以通过三个步骤来学习。

第一步，夯实基础。 我建议你先完整地跟着课程节奏学习一遍，重点掌握 AI 产品经理的三大能力，掌握课程中算法和评估相关的知识点。

第二步，以教促学。 在你了解了课程中的内容后，要试着用自己的话把这些内容讲出来，让别人听懂，而这离不开“从学习到分享再到学习”的一个迭代过程。

第三步，落地实践。 如果所在团队中没有算法同学，那你可以试着在工作中提一些和 AI 相关小需求，这些需求是可以通过相对简单容易的传统机器学习算法来解决的，比如 KNN、Naive Bayes，这是为了确保工程研发同学可以通过学习实现。

这样一来，通过研发同学的“踩坑”经历，你可以总结出他们在落地算法过程中对复杂问题的解决和效果反馈，再把它们补充到你的知识技能树中，积累经验。总之，我们要善于利用身边的资源，赋能于自己的业务，来帮助自己提升。

问题 4：算法工程师如何转型 AI 产品经理？

对于想要转型产品经理的算法同学，我有 2 点建议。

首先，需要理解产品经理和技术人员的区别。产品经理需要的是知识的广度，需要打通上下游与横向部门，而技术人员更多的是要在技术领域深挖。

其次，需要突破技术思维的限制。比如，需要意识到，很多时候产品经理做一个产品更重要的是对业务有价值，而不是要追求技术的创新，或者技术的某些提升。就像有时候一个模型 KS 是 30 还是 40 对于业务没有明显的提升，我们就用去提升这些指标。

总之，产品经理决定做一个事情的出发点，是通过技术来实现业务价值，有时候技术如何做反而不重要。

在实际操作上，我建议这类同学可以多和产品经理沟通，看看他们是怎么做的，他们的思考路径是什么，当他们给你提需求的时候，他们考虑的问题都有哪些，来发现自己和产品经理之间的区别，让自己习惯按照产品的思维去思考。

问题 5：测试工程师如何转型 AI 产品经理？

对于这个问题，我有些犹豫，我比较推荐测试工程师在测试领域深造，然后将技能发展到 AI 测试领域，这样你作为一个测试工程师会有得天独厚的优势。

作为一名 AI 测试工程师，需要掌握的知识有机器学习基础知识、Python 编程、大数据基础、模型测试。当然，如果还是想转型 AI 产品经理，那么我也建议你参考上一个问题“算法工程师如何转型 AI 产品经理”，很多的准备工作都是相通的。

关于技术边界

问题 6：AI 产品经理需要什么样的数学基础？

数学基础是很多转型产品经理都关注的问题。我认为，一个相对完整的数学基础知识体系包括：线性代数、概率论、数理统计、运筹学（最优化方法）、信息论。

但这并不是说，产品经理需要从头开始啃数学基础知识，而是你需要有两方面的认知。

一方面，我们要清晰产品经理对于数学基础的掌握边界。与算法和研发相比，产品经理不需要建模，所以有数学基础不需要你究其原理，如数理统计中的统计推断方法，或运筹学中的最优化方法，你的价值在于利用技术服务业务而不是精通技术。

另一方面，对于想快速入门 AI 领域的产品经理来说，一定要本着知识的落地应用为学习原则，例如作为产品经理来说为什么要学习概率分布，你要知道它在工作中的作用是什么，其中一点是为了和算法同学同频沟通，另一个很重要原因是为了验收产品。

因此，在转型初期，我们大可以以目的为导向只掌握和工作相关的数学知识，等后面工作稳定下来了，再适当去拓展自己的技术边界。

问题 7：什么是数据特征、样本，以及标签？

我们先来看它们具体的定义，你可以结合下面的表格一块来理解：

标签：标签就是预测的结果，比如表格中的性别：“男”、“女”；

特征：特征就是一系列的信息，可以作为人或事物特点的标识，用来描述标签；

样本：样本是数据实例、特征的集合。样本可以带标签，也可以不带标签。带标签的样本用于模型的训练，不带标签的样本用于模型的预测。

问题 8：什么是特征归一化？

对特征进行归一化处理，是为了消除数据特征之间的量纲影响，让不同指标之间具有可比性。例如，分析一个人的身高和体重对健康的影响，如果使用米（m）和千克（kg）作为单位，那么身高特征会在 1.5 ~ 2.0m 的数据范围内，体重特征会在 50 ~ 100kg 的范围内，分析出来的结果显然会倾向于数值差别比较大的体重特征。

所以，为了得到更为准确的结果，我们需要对它们进行特征归一化处理，让每个指标处于同一数值量级。常用方法主要有两种：

线性函数归一化：归一化后特征值 = (原值 - 特征最小值) / (特征最大值 - 特征最小值)，在此方法的基础上，所有的特征值都会落在 [0, 1] 的区间里；

标准差正态分布：归一化后特征值 = 特征平均值 / 特征标准差，使用此方法，转换后的特征有负有正，而且它们的均值为 0。

关于项目流程

问题 9：AI 产品 PRD 文档与传统产品 PRD 的不同

AI 产品 PRD 文档与传统产品 PRD 的不同主要有以下三方面的不同：

第一，模型输出。

即算法目标，你要解决的是一个分类问题还是一个回归问题（输出是一个概率还是一个连续值）。

如果是一个概率值，并且是用在分类场景中的，你还要确定是否需要进行二次加工，比如在做高潜用户预测，模型输出的是一个概率值，但这个概率值在业务场景无法使用，所以还需要映射成具体的用户等级。

第二，数据接入。

是否有数据依赖，注明已接入的数据，包括数据类型（Hive / MQ），数据量大小，更新频率，Hive 表名及格式。

第三，验收标准。

除了如 KS、AUC 等强模型指标的确定。另外还要以目标为导向编写 PRD 的验收标准，不要拘泥形式。

举个例子，在推荐系统的排序环节中，产品经理要以目标为导向将模型的评估指标写到 PRD 中。如果产品是以提高 CTR（点击率） 为目标，就可以使用 CTR 作为衡量排序模型的指标。但在电商场景中，还存在 CVR、GMV、UV 等多个核心指标，所以并不是一个 CTR 指标就能决定的。这个时候，产品经理就要根据业务目标来优化排序模型的验收标准，如果公司追求的是 GMV，只单纯提升 CTR ，在一定程度上只能代表着用户体验的提升。

但算法工程师对这些点的考虑就会相对比较少，因为他们只对模型负责，不对产品负责。因此，这正是产品经理体现个人 PRD 的价值的好时机。

问答题

假如，你现在是一家电商平台的产品经理，负责点评系统的产品设计，现在有一个需求是要通过计算将海量评论中的垃圾评论（如，打广告的情况）过滤出来，你会怎么思考和设计产品呢？

好了，以上就是我们这次期中答疑的全部内容。我也希望这是一次我们共同交流和讨论的时间，你可以在这节课后把你的疑问分享给我，我会尽力帮助你扫清疑问，好让你赶上进度，顺利进入下一段征程！

17 | 模型评估：从一个失控的项目看优秀的产品经理如何评估AI模型？

你好，我是海丰。今天，我们正式进入模型评估能力篇的学习。

在开始今天的课程之前，我想请你先想一想，你在工作中推进 AI 相关产品需求的时候，是不是经常会遇到这样的问题。

在算法模型上线阶段，你拿不准到底要不要验收算法同学交付的模型，就算你想要验收，你也不知道该怎么去评估模型的好坏，只能算法同学说什么就是什么，甚至对算法同学说的名词都没有概念，非常被动。

针对这个问题，这节课，我想和你分享一个我曾经踩过的坑。我会通过我处理这个事故的过程来和你详细讲讲，在推进 AI 相关项目的时候，我们该如何去评估一个模型，怎么化被动为主动。

问题复现：一个没有经过验收的金融大数据风控 AI 产品

我先来讲讲整个事情的背景。因为 AI 在金融领域的发展一直处于引领的地位，所以基于大数据的 AI 风控产品也层出不穷。我的团队主营业务就是给金融机构做 AI 大数据风控，开发一个信用评估模型，这个产品的功能就是基于借款人的留存信息，预测他未来是否可能会逾期还款。

金融机构在给借款人放款之前会通过系统调用我们这个模型，如果模型返回“逾期”，金融机构就会拒绝借款人的贷款申请，反之就通过这个借款人的申请。下面是一个最为简单的信贷申请流程样例：

本来，上线后模型表现一直还不错。但是突然有一天，我们的客户反馈，模型对所有借款人预测的结果都是“逾期还款”，当天所有借款人向这个客户提交的贷款申请全部被拒绝了，影响的金额巨大。这样的线上事故简直就是灾难，直接导致我们客户的线上业务全部停滞。

于是，我和几个核心人员紧急开会讨论。最后发现，模型全部返回“逾期”是因为，算法工程师在模型中引用的一个重要特征突然全部返回空值。后来，算法同学紧急调整了模型代码并重新上线才解决了问题。问题虽然解决了，模型的预测效果却下降很多，也给金融机构造成了极大的损失。

事故复盘：我们犯的三个错误

事后，我和我的团队按照模型的上线时间线，组织了事故复盘，找到了造成这次事故的问题，主要有三个，我一个一个来说。

第一：模型上线前无评估。当模型构建完成后，没有经过产品经理验收，导致这个问题没有被提前发现。

第二：模型上线后无监控。当模型在上线之后，大家都没有对模型进行监控，所以模型出现问题我们没有及时发现。直到模型结果影响到客户，被客户发现了。最终，不但给客户造成了极大的损失，也让客户对我们的技术能力产生了怀疑。

第三：特征无评估、无监控。我们说过，一个模型的训练包含了很多特征，这些特征加上算法组合成了最终的模型，所以对于模型特征的评估就很重要了。

那在此次事故中，算法同学没有评估这个特征稳定性就贸然引入了它，而且，它在模型中还占有很高的比重，这就导致模型对该特征依赖性过强。再加上模型上线后，算法同学没有对模型的特征数据进行监控，所以这些特征数据出现问题以后，整个模型都失效了。

流程优化：增加模型宣讲和模型评估节点

通过刚才的复盘，我想你可以看到，整个过程中产品经理是缺位的。产品经理对于算法同学训练的模型没有能力评估，算法同学说什么就是什么，根本无法把控产品的质量。最后的结果就是产品经理变成了传话筒，交付的产品也不可控，最终就给给这次事故埋下了隐患。

因此，模型的评估是我们必须要做的事情，但是该怎么做呢？接下来，我带你看看我当时是怎么做的，然后帮助你梳理出一个完整的流程，希望你能把这些经验好好利用起来。

第一步：改流程，增加单独的模型宣讲和评估节点

我先修改了原有流程，增加了模型宣讲和评估的节点。原来的流程是，算法同学完成模型训练之后，由工程同学进行模型的上线，之后测试同学介入测试，产品经理再做最后的验收，整个流程都和传统互联网产品的上线流程一致。

这样做看似没有问题，但是会存在两个弊端。

第一，模型问题发现时间太晚。如果模型构建完成之后不进行评估，而是等工程上线之后，测试或者验收阶段才发现模型有问题就太晚了。这个时候，我们再去调整模型大概率会影响产品上线时间。毕竟大多数时候，模型的调整比研发修复 Bug 要麻烦得多。

第二，容易导致评估范围不完整。产品上线之后验收，大家很自然就会更加关注业务指标，容易忽略模型本身的指标，比如在上面的例子中，我们只关注模型性能表现但没有去评估模型特征的稳定性，特征一旦失效就让整个产品出现了问题。

针对这两个问题，我的解决办法是：制定新的流程，在模型构建完成之后，必须要经过模型宣讲和模型验收两个环节，只有模型验收通过之后，才可以进行后续的工程上线工作。

下面，我再具体说一说这样改造流程的目的。

首先，我为什么要增加模型宣讲环节？这是因为，模型本身是一个偏黑盒的产物，它不像一般的互联网产品、有页面、有结果，产品经理可以通过页面功能去评估工程师的产出是否满足需求。所以，要由算法同学给先产品经理讲解清楚模型的加工逻辑，这样产品经理才可以进行后续的验收评估工作。

其次，为什么单独增加模型验收环节？这是因为，在模型构建完成之后立刻进行验收，有助于提早发现问题，以免影响最后的产品上线。

第二步：定标准，定义评估节点内容和交付物

流程调整之后，我又和算法同学一起讨论了模型宣讲和模型评估两个环节的人员分工和交付物，确定了我们在这两个节点上的工作标准。

1. 模型宣讲环节的工作内容和交付物

首先，在模型宣讲前，算法同学需要给产品经理提供一份模型报告。报告中需要包括模型设计、算法选型、特征筛选，验证结果等内容。产品经理看过模型报告之后，再组织算法同学进行模型宣讲。

其次，在模型宣讲中，产品经理要有目的的去了解算法逻辑。在这个过程中，我会要求算法同学帮忙说明，这个模型使用了什么算法和选择这个算法的原因，这个模型选择了哪些重要特征，训练的样本，以及算法同学的测试方案与结果。

具体来说就是，产品经理需要根据算法同学提供的模型报告，对 AI 产品影响比较大或者是模型同学容易忽略的三个点进行评估，它们分别是重要特征的来源，训练样本的合理性，以及测试结果是否符合业务预期，是否合理。

那为什么要对这三点进行评估呢？我在下面总结了一张表格，你可以先去看看。至于评估的具体方法我会在模型评估环节来讲。

总的来说，模型宣讲环节相当于是产品经理给模型上线设立的第一道门槛。针对算法同学给到的模型报告，我们要弄清楚它的算法方案，同时，借助对上面这三点的粗略评估，判断模型的特征、样本、测试方案和结果是否合理。通过这次评估之后，我们就可以把模型报告归档，进入到模型评估环节了。

2. 模型评估环节的工作内容和交付物

在模型评估环节，产品经理需要做的是，根据业务需求挑选合适的测试样本，请算法同学进行测试，并且提交测试结果。最后，再根据模型宣讲和测试的内容编写模型验收报告。

我在下面给出了一个模型验收报告的例子，虽然，不同业务场景下的评估内容可能不同，但你完全可以进行参考。

我们的模型验收报告主要有三个部分，分别是重要特征，选择的测试样本，具体的模型性能和稳定性的测试结果。选择体现这三个部分是，它们对我们模型可用性稳定性的影响比较大，有时候会直接影响我们的业务指标。

这个时候，有的同学可能会问，“老师，这三个部分是不是已经包含了模型宣讲环节的评估呀？既然已经评估过了，为什么又要重新评估呢？”这是因为，宣讲环节的评估只是初步评估，让产品经理粗略地了解模型的结果能不能满足业务的诉求。到了这个环节，产品经理要站在业务的角度，更详细地对模型进行评估。

我们先来看重要特征部分。模型是由特征组成的，所以评估特征是必不可少的环节。在这个部分，我们需要列出重要特征，评估这些特征的选择是否合理。然后，我们要对每个特征的来源和特征意义进行合理性的评估。

针对特征来源，我们要考虑这个特征是外部接入的数据产生的特征，还是我们内部业务数据产生的特征，对于外部数据我们更需要关注数据的稳定性和可持续性。

针对特征意义，我们要考虑的是，这个特征的含义是否符合业务或者常理。比如，我们要用到夜间购物特征，但是这个特征时间点设置为 23 点到 2 点就不合理，一般应该设置成是 0 点到 5 点。

接下来是测试样本部分。因为同样的模型选择不同的测试样本，得到的结果就会完全不同，所以我们应该选择和实际业务场景相近的样本进行测试。

同时，在模型验收报告中，我们必须把选择的测试样本是哪些，以及为什么选择这些样本都一一说明。比如，在测试用户信用评分模型时候，我选择的样本是 2019 年 10 月到 4 月的消费金融用户。原因是，本模型主要面向消费金融客群，产品为按月分期。这个时间段，这个客群已经有了信贷表现，所以我选择它们作为测试样本。

最后，也是最关键的，我们要去评估模型的性能和稳定性。模型性能直接和业务目标相关，如果模型性能达不到业务需要的标准，那么模型根本不具备上线条件。同时，模型稳定性也和业务需求直接相关，我们的业务场景就要求模型必须稳定的 (PSI<0.2)。

具体来说，我们会分为四步去评估：

评估重要特征的性能测试结果是否符合预期，包括特征 IV、KS 等等；

评估重要特征的稳定性，一般是 PSI 值；

评估模型性能测试结果是否符合预期，包括模型 KS、AUC、MSE 等等；

评估模型稳定性测试结果，一般也是 PSI 值。

以上，就是我们模型验收报告中需要包括的内容了。不过，这些内容需要根据实际业务情况进行调整，如果算法模型是一个回归模型，那么性能测试报告中就不需要包括 KS、AUC 这些指标。

说了这么多，我再带你总结一下，模型评估环节的验收报告中必须要体现的内容，如下表所示：

模型验收通过之后，就可以进入工程上线和测试环节了，这个和之前的流程一致。我就不再多说了。

总结

今天，我通过一个因为产品没有验收就匆忙上线而出现的事故，为你讲解了产品经理在模型评估上面的重要性以及我们的模型验收流程是怎么样的。希望你能根据我总结出来的验收流程，结合你的业务情况，形成你自己的验收方案。

为了帮助你形象地理解，我梳理了一张验收流程图，放在了下面。

了解了验收的流程，只是我们模型评估的第一步，但是具体到模型验收环节，产品经理要根据什么指标进行验收，你肯定还充满了疑问，这些内容我会在下节课和你详细讲解。

另外，在这次事故之后，我除了调整产品的上线流程之外，还组织搭建了模型监控系统。具体该如何搭建这个监控系统，监控系统需要观测哪些指标，我也会在后面和你分享。

课后讨论

我想听听你在做产品经理时候，遇到过哪些坑，你是怎么解决的。现在回过头再看，你会不会有更好的解决方式呢？

期待在留言区看到你的分享，我们下节课再见！

18 | 核心技能：产品经理评估模型需要关注哪些指标？

你好，我是海丰。今天我们开始模型评估指标的学习。

整个 AI 项目的落地过程中都有着模型评估指标的身影。在模型设计阶段，AI 产品经理在编写需求的时候，除了需要写清楚产品的业务指标，也要说明通过模型来解决什么样的问题，模型应该达到的标准是什么，算法工程师会根据这个标准进行模型开发。开发完成之后，AI 产品经理还需要对模型的结果进行验收，来决定模型是否可以上线。

但是，一些刚刚转行 AI 产品经理岗位的同学，因为没有做过 AI 项目，不懂算法，根本搞不清楚模型都有哪些评估指标，更别说这些指标的区别了。

因此，我会花五节课来和你讲解模型评估的所有指标：第一节课，我会从全局的角度给你讲模型评估的指标都有什么；后三节课，我会重点给你讲解模型的性能指标，让你知道它们是怎么计算的；最后一节课，我们会详细讲解模型的稳定性指标。希望能帮助你全面且深入地掌握这些知识。

话不多说，我们正式进入今天的课程，首先来看看模型评估的分类。

模型评估的分类

模型评估可以分为离线评估和在线评估两大类，在产品的不同阶段，我们要根据场景的不同分别应用它们。

其中，在线评估是指在模型部署上线后，使用线上真实数据对模型进行的评估。这个时候，产品经理或者运营同学大多采用 ABTest 的方式去判断业务的表现。

比如，原来我们给用户推荐的商品没有经过模型匹配而是通过策略产出的。上线推荐模型之后，我们通过 ABTest，先导入一部分流量到模型匹配后的商品页面，让一部分用户看到原来的页面，让另一部分用户中的每个人都看到不一样的商品页面。通过一段时间（如 1 天或 1 周）的观察，如果另一部分用户的点击率或者 购买转化率有提升，我们再决定让这个模型正式上线。

离线评估是指在模型部署上线前对模型进行的验证和评估工作，这个时候如果发现问题，我们可以很方便地对模型的参数进行调整和改进。这也就是我和你讲的，需要在模型上线之前进行的模型验收部分的工作。

两种评估方式由于其场景不同，所评估的关注点也不尽相同。其中，离线评估关注的是模型效果相关的指标，如精准率、KS 等等。在线评估关注的是业务相关指标，比如新用户的转化率、优惠券的核销率、信贷审核的通过率等等。由于模型的在线评估与业务场景强相关，所以我们的课程重点将放在模型的离线评估上。

离线评估又可以分为特征评估和模型评估两大类，接下来，我们先来看模型特征的评估。

模型特征的评估

很多人会认为，模型评估就只评估模型最终的结果，比如召回率这些指标。但作为一个产品经理，我们不能只看模型这个黑盒子的最终结果，同时也要了解这个黑盒子里面的内容，所以，模型特征的评估也是要做的。

当然，我们不会检验全部的特征，只会去评估模型中重要性比较高的特征。都有哪些特征的重要性比较高呢？这需要算法同学在宣讲时同步给我们。

知道了重要特征有哪些，接下来就是对它们进行评估了。我们一般会对特征自身的稳定性，特征来源的稳定性，以及特征获取的成本进行评估，这都是业务比较关注，并且也是很容易出问题的地方。

首先，对于特征自身的稳定性，我们会使用 PSI 这个指标来判断。 PSI 是指评估某个特征的数据随着时间推移发生变化而不再稳定的指标。简单来说，就是看这个特征是不是稳定的一个指标。如果一个重要特征不够稳定，就会影响模型整体的稳定性，自然也会影响前端业务。

其次，对于特征来源的稳定性，我们主要看特征是从哪里接入的。比如，上节课我提到的那次事故，就是因为我们将外接的一个数据源作为了模型的重要特征，它出了问题，整个模型就失效了。所以作为产品经理，你一定要关注特征来源的情况，因为这一点往往是算法工程师容易忽略的。

总的来说，针对特征来源稳定性的评估，我认为可以分为这样 2 种情况：

如果特征是从集团内部接入的，我们要看它是从哪条业务线获取的，这个业务的稳定性如何，业务方是否有可能收回或者停止共享业务数据；

如果特征接入方是外部公司，我们还要看这个公司是否合规，是否具备完善的技术储备等等。

针对这两种情况，特征接入的成本也不一样。

第一种，我们使用的特征是公司的内部数据。一般来说，使用公司内部数据是不存在成本的，但如果这些数据来自不同的业务线，在集团内部也会存在成本分摊或者业务数据单独计费的情况。比如，我们部门在做推荐系统时候，要用到某个部门的用户画像数据，这个部门就会记录我们调用的次数，到年底的时候和我们进行成本分摊。

第二种，我们使用的特征数据是从其他公司采购的，就会产生数据使用的费用，正常支付就可以了。比如，我们在做用户信用评估时候，不止使用内部数据也会采购其他公司的用户信用评分、多头借贷、欺诈指数等数据。

不过，模型特征的评估到这里还没有结束，出于对业务成本的控制，产品经理还要对这些付费特征做进一步评估：它们给模型带来的增益是否可以覆盖掉它们的成本，以及能否通过数据缓存来减少模型对它们的调用。

举个例子，我们之前有一个模型使用了运营商的数据，运营商按照调用次数计费，数据是按月更新的。所以，我们在给模型提供这个数据接口的时候直接在工程侧做了数据缓存，保证在一个月内，同样的数据我们只获取一次，这样就能有效减少数据使用的成本。

模型的评估

看完了特征的评估，接下来就是我们的重头戏：模型的评估。模型的评估主要包括三个部分：统计性、模型性能和模型稳定性。

统计性指标

统计性指标指的就是模型输出结果的覆盖度、最大值、最小值、人群分布等指标。我们拿到一个模型，最先看的不是性能指标也不是稳定性，而是统计性指标，它决定了模型到底能不能用。

以模型覆盖度为例，它表示模型可以覆盖人群的百分比，它的计算公式是：模型的覆盖度 = 模型可以打分的人数 / 需要模型打分的人数。覆盖度越高，代表模型可以打分的人数越多，也就是说模型可以评估更多人。如果模型覆盖度过低，即使它的性能表现很好，在某些业务场景下模型也不可用。

比如说，在金融风控场景下，如果一个模型覆盖度低于 60%，基本就很难给到客户使用了，因为覆盖度太低，风控的业务人员基本没办法对这个模型应用到决策引擎中。如果非要用的话，最好的情况也就是用到决策树的某个分支上，专门作用于某一小部分人群，实际调用量会很小。

除了覆盖度，我们还要看模型输出结果的最大值和最小值设置得是不是合理，也就是分数范围。我们还是以信用评分模型为例，假设，京小白的信用分范围是 0-110。这样的分数范围设计得就不是很合理，因为信用评分模型覆盖的人数非常多，如果模型输出的分数范围太窄，就会导致一个分数点集中很多人，人群没有得到很好的区分。那多少是合理的呢？我们可以参考芝麻分的范围：350-950。

最后，我们还要看模型的人群分布，它指的是模型对人打分后，分数和人群的分布形态，这个分布形态应该符合我们的常识，比如，用户消费能力评估模型对于人群的打分结果就应该符合正态分布。

总的来说，在不同场景下，由于我们的业务目标不同，对模型的要求不同，对模型统计性指标的关注点也不会相同。比如说，在金融风控这类场景中，因为我们需要对每一个用户进行评价，所以需要重点关注覆盖度这个指标，但是在用户精细化运营这样的场景中，我们只需要挑选出部分用户，那覆盖度指标我们又不需要重点关注了。因此，对统计性指标进行评估的时候，我们要充分考虑业务场景。

模型性能和稳定性评估

模型的性能评估指标就是评估模型效果的指标，它和模型要解决的问题相关，模型要解决的问题可以分成分类问题和回归问题。由此，我们可以把模型分成分类模型和回归模型。接下来，我们就详细说说，针对不同的模型可以使用哪些典型的性能指标。

我们说过，分类模型包括二分类模型和多分类模型。其中，二分类模型在实际业务中使用比较多，比如，它经常用于判断用户的性别、用户的购买偏好、支付宝的芝麻分、京东的小白信用、微信的支付分等问题。

分类模型的性能评价指标主要包括：混淆矩阵、KS、AUC 等等。通过混淆矩阵，我们既可以得到一个模型的精确率、召回率这些指标，从而可以评估一个模型的区分能力，我们也可以计算得到的 TPR、FPR，从而计算出 AUC、KS 等相关指标。因此，混淆矩阵是评估二分类模型的基础工具。

回归模型的性能评价指标主要包括：MAE（平均绝对误差）、MSE（均方误差）、RMSE（均方根误差）、R 方等等。它常用来预测数值，比如房价和股价的预测就是典型的回归模型应用。

最后，模型的稳定性即判断模型输出结果，是否会随着时间推移，而发生较大变化不再稳定的指标，模型的稳定性会直接影响模型的结果。比如在风控场景下，如果风控模型不够稳定，对于用户风险判断的结果就会发生较大变化。这个时候，我们需要实时调整风控策略，同时也要注意调整后造成决策不合理的情况。对于模型的稳定性，我们主要使用 PSI 进行评估。

到这儿，模型评估的内容我们也讲完了。最后，我还想补充一句，今天，我们只需要知道这些指标的具体分类，以及不同模型对应的指标是什么就可以了。至于这些指标的具体含义、应用，以及具体计算方式，我会在后面的课程详细来讲。

小结

业务场景是决定模型性能最关键的因素，所以我们要根据实际的业务需求，来选择合适的评估指标。我把评估指标和对应的场景总结在了一张脑图中，这里，我们重点记忆离线评估的指标就可以了。

为了帮助你理解今天的内容，我还总结了 2 个特定的场景。

如果一个二分类预测模型的目标是预测一个人是好人还是坏人。基于不要错怪好人的原则，我们就会希望模型的准确率很高。不过，如果模型的召回率低一些（坏人在总人数中的比例），我们也是可以接受的。

在一个用户营销发券的场景下，如果业务的目标就是给用户发送优惠券，并不在意拿到优惠券的用户是否会消费，那么我们就希望模型的召回率高一些，准确率可以适当降低。

课后讨论

假设，你们公司是做电商业务的，现在领导打算让你做流失用户的召回，你认为评估这个模型的指标都有哪些？为什么？

欢迎把答案写到留言区和我一起讨论，我们下节课见！

19 | 模型性能评估（一）：从信用评分产品看什么是混淆矩阵？

你好，我是海丰。

这节课，我们来学习分类模型的评估指标。上节课我们说了，分类模型的性能评估指标有混淆矩阵、KS、AUC 等等。混淆矩阵是其中最基础的性能评估指标，通过它，我们可以直观地看出二分类模型预测准确和不准确的结果具体有多少，而且像是 KS、AUC 这些高阶的评估指标也都来自于混淆矩阵。

比如说，对信用评分这样典型的分类问题进行评估，其实就是要知道一个人信用的好坏。通过混淆矩阵，我们就能知道这个信用评分能够找到多少坏人（召回率），以及找到的坏人中有多少是真的坏人（精确率）。

因此，要对分类模型的性能进行评估，我们一定要掌握混淆矩阵。接下来，我们就通过一个信用评分产品的例子来详细说一说，混淆矩阵是什么，以及相关指标的计算方法。

什么是混淆矩阵？

信用评分的产品指的是利用客户提交的资料和系统中留存的客户信息，通过模型来评估用户信用情况的模型。信用评分主要应用于信贷场景中，对用户和中小企业进行信用风险评估。

假设，你的算法团队做了一个信用评分产品，分数范围是 [0, 100]。同时，算法团队给出一个参考阈值，60 分以下的人逾期概率远高于 60 分以上的人群。

这个时候，你可以抽取一部分用户用于验证模型的效果。但是，这些用户必须是已经具有信贷表现的，否则我们无法通过它们确定模型有效性。我们把从来没有逾期的用户定义为“好人”，逾期用户定义为“坏人”。

假设我们抽取了 100 个测试用户，向信用评分模型中输入这一百个测试用户的信贷信息（用户身份证号 / 手机号码）以后，我们能得到 100 个模型的预测结果，以及每个用户的评分。结合算法团队给出的参考阈值，我们把信用分小于等于 60 的人定义为“坏人”，大于 60 的人定义为“好人”。

这之后，我们就可以通过混淆矩阵，知道模型预测结果和实际结果的差距，从而判断模型性能的好坏了。

混淆矩阵有两个定义，分别是 Positive 和 Negative，它们分别代表模型结果的好和坏。下表就是一个标准的混淆矩阵。其中，行表示真实值，列表示预测值。T 代表模型预测对了，也就是预测值和实际值一样，F 则相反。P 就是 Positive 的缩写，我们可以理解为“坏人”，N 就是 Negative 的缩写，我们可以理解为好人。这里要特殊说明一下，好人坏人的定义是为了方便我们理解的，一般教材上会说明 Positive 为正例，Negative 为负例。

由此，我们可以总结出 4 种情况：

TP 是指模型预测这个人是坏人，实际上这个人是坏人，模型预测正确；

FP 是指模型预测这个人是坏人，实际上这个人是好人，模型预测错误；

FN 是指模型预测这个人是好人，实际上这个人是坏人，模型预测错误；

TN 是指模型预测这个人是好人，实际上这个人是好人，模型预测正确。

刚刚接触混淆矩阵的同学，可能还不能完全理解 TP、FP 代表什么。其实，我们也不需要对这 4 种情况死记硬背，只需要记住：T 和 F 代表模型判断的对和错，P 和 N 代表模型预测结果的好和坏。

我们每预测一个人，都可以得到这样一个混淆矩阵。

比如，用户张三实际是一个逾期用户，也就是“坏人”，但模型给出的评分是 80 分。这个时候，张三的混淆矩阵中 FN=1，就代表模型预测错误。

再比如，用户李四也是一个逾期用户，但模型给出的评分是 40 分。这个时候，李四的混淆矩阵中 TP=1，模型预测正确。

假设，这 100 个人里面实际有 40 个坏人，60 个好人。模型一共预测出 50 个坏人，在这 50 个坏人中，有 30 个预测对了，20 个预测错了。

综合了这 100 个人的模型结果和实际的结果，我们就能得到一个如下的混淆矩阵：

我们当然希望所有测试的结果都是 TP 或者 TN，也就是模型预测每个人的结果都和实际结果是一致的。

但是，现实中不太可能存在这样的情况，而且单独看混淆矩阵，我们只能知道模型预测结果中有多少个 TP 和 FP，没办法直接告诉业务方这个模型到底好不好。因此，为了能够更全面地评估模型，我们又在混淆矩阵的结果上，延伸出另外 3 个指标，分别是准确率、精确率和召回率。

混淆矩阵的指标：准确率、精确率、召回率

准确率（Accuracy）这个指标是从全局的角度判断模型正确分类的能力。对应到信用评分的产品上，就是评价模型预测对的人 TP+TN，占全部人员 TP+TN+FP+FN 的比例。 极端情况下，模型所有人都预测对了，这个准确率就是 100%。

准确率的计算公式是：accuracy=TP+TN+FP+FNTP+TN​。

虽然通过准确率这个指标，我们可以直观评价模型正确分类的能力。但是，在样本不均衡的情况下，占比大的类别对评价结果的影响太大。比如说，100 个用户里有 90 个坏用户，当我们模型预测到 99 个坏用户的时候，它还能有 90% 的准确率。这肯定是不对的。

在这种情况下，我们还要借助精确率（Precision）。精确率是判断模型识别出来的结果有多精确的指标。对应到信用评分的产品上，就是模型找到的真的坏人（对应混淆矩阵中的 TP）的比率占模型找到的所有坏人（对应混淆矩阵中的 TP+FP）的比率。

精确率的计算公式是：precision=TP+FPTP​。

除此之外，我们也要看召回率。召回率（Recall）也叫做查全率，是判断模型识别广度的指标。对应到信用评分的产品上，就是模型找到的真的坏人（对应混淆矩阵中的 TP）占实际坏人 （TP+FN） 的比例。也就是看模型能识别出多少真正的坏人，模型认为的坏人占实际坏人的比率是多少，公式是：recall=TP+FNTP​。

知道了模型的准确率、精确率、召回率的计算公式，我们通过刚才的混淆矩阵，就可以把它们分别计算出来了：

准确率 =TP+TN+FP+FNTP+TN​=30+40+20+1030+40​=70

精确率 = TP+FPTP​=30+2030​=60

召回率 = TP+FNTP​=30+1030​=75

总的来说，准确率、精确率和召回率是混淆矩阵的三个基本指标。准确率可以从全局的角度描述模型预测正确的能力，精确率和召回率可以分别描述模型识别的精确度和广度。

在实际工作中，我们一般通过精确率、召回率就可以判断模型预测的好坏，因为召回率可以知道我们找到了多少想找到人，精确率可以知道，我们找到的人有多准。

不过，精确率和召回率实际上是一对矛盾的指标，精确率提升，召回率可能会随之降低。比如说，如果想要识别出来的坏人都是真的坏人，模型就很可能会因为保守而缩小自己识别的范围，这就会导致召回率的下降。

因此，我们不仅会一起来看这两个指标，也会把它们放到一起来提需求。比如说，我们会要求算法同学，在 30% 召回率下把模型的精确率提升 5 倍。

除此之外，还有一个指标可以综合反映精确率和召回率，它就是 F1 值，F1 值越高，代表模型在精确率和召回率的综合表现越好。

F1 的计算公式：F1=precision+recall2×precision×recall​。

不过，在实际对模型评估的时候，我们还是习惯看召回率和精确率，这两个指标给业务方去讲，也比较容易理解（不使用准确率是因为在样本偏差情况下，准确率反而不准确）。

最后，在使用这三个指标的时候，我还有几点建议：

准确率：理解成本最低，但不要滥用。在样本不均衡情况下，指标结果容易出现较大偏差；

精确率：用于关注筛选结果是不是正确的场景，宁可没有预测出来，也不能预测错了。 比如，在刷脸支付的场景下，我们宁可告诉用户检测不通过，也不能让另外一个人的人脸通过检测；

召回率：用于关注筛选结果是不是全面的场景，“宁可错杀一千，绝不放过一个”。 比如，在信贷场景下，我要控制逾期率，所以宁可把好用户拦在外面，不让他们贷款，也不能放进来一个可能逾期的用户。毕竟，用户一旦逾期，无法收回的本金产生的损失，比我多放过几个好用户带来的收益要多很多。

小结

混淆矩阵是分类模型评估的基础，准确率、精确率和召回率是从混淆矩阵衍生出来的评估指标。为了帮助你记忆，我把这些指标的公式、解释和注意事项都总结在了下面的表格里，方便你对比和回顾。

最后，我们要记住一点：在实际对分类模型性能进行评估的时候，我们一般会用精确率和召回率一起使用，比如，在召回率 20% 的基础上，达到精确率 5%。但是，对于信用评分的模型，我们很少只用召回率和精确率这样的指标去做判断，而是用 KS、AUC 这样的指标进行判断。这些指标我们下节课会详细来讲。

课后讨论

刚才我们说，对于信用评分模型一般用 KS、AUC 这样的指标进行评估。你觉得，我们为什么不用准确率呢？

期待在留言区看到你的思考，我们下节课见！

20 | 模型性能评估（二）：从信用评分产品看什么是KS、AUC？

你好，我是海丰。

上节课，我们学习了混淆矩阵，以及准确率、精确率和召回率这 3 个基础指标的计算。这节课，我们依然会借助上节课的信用评估模型，来学习二分类模型中常用的两个综合性指标，KS 和 AUC。

构建 KS 和 AUC 的基础：TPR 和 FPR

首先，我们来看两个基础指标：TPR 和 FPR，它们是计算 KS 和 AUC 的基础指标。

在信用评分模型中，TPR（True Positive Rate）代表模型找到真坏人（对应混淆矩阵中的 TP）占实际坏人（TP+FN）的比例，它的计算公式为 TPR=TP/(TP+FN)。一般来说，这个指标被称为：真正率、真阳率，用来评估模型正确预测的能力。不过，因为它的计算公式和召回率是一样的，所以为了方便我们也经常叫它召回率。

FPR（False Positive Rate）代表模型误伤（认为是坏人，实际是好人）的人占总体好人的比例，它的计算公式为 FPR=FP/(FP+TN)。一般来说，这个指标被称为：假正率、假阳率，它用来评估模型误判的比率或者误伤的比率，为了方便我们也叫它误伤率。

那这两个指标是怎么构建 KS 和 AUC 的呢？别着急，我们慢慢往下看。

ROC 曲线绘制和 AUC 的计算

在实际工作中，我们最希望的模型一定是找到的坏人足够多，并且误伤的好人足够少，也就是 TPR 尽量高、FPR 尽量低。为了形象地表达它们之间的关系，我们引入了 ROC 曲线。

那么，ROC 曲线具体是怎么得到呢？

这里，我们先来回顾一下上节课的信用评分模型，这个模型的分数范围是[0,100]。算法团队给出的参考阈值（60 分），我们根据它对模型进行了简单的划分，得到了混淆矩阵以及相应的召回率等指标。

如果我们没有这个阈值呢？实际上，我们在模型分数的每一个点上都可以做这样的划分（也就是把每一个分数点都当作是一个阈值），这样就可以得到一连串的指标。想想都知道，对所有分数进行划分会非常麻烦。虽然不能对所有分数进行划分，但是我们可以对分数进行分段处理。比如说，我们的打分人数有 5000 人，我们按照每 10 分进行一个分段，就能得到下面这张图。

结合上面的图，我们可以分 3 种情况进行讨论。

第一种情况是一种极端情况：阈值定在 0 分上，小于 0 的是坏人，大于 0 的是好人。 这个时候，虽然 0 分以下没有任何人，但是我们仍然可以得到相应的混淆矩阵，也就可以得到对应的 TPR 和 FPR。

这个时候的 TPR 是多少呢？我们不需要计算，根据定义思考一下就知道了。因为模型只有[0,100]，没有人的打分是小于 0 的，这也就意味着模型没有分辨出任何一个坏人，所有人都是好人，找坏人的能力 TPR 就是 0。

那么，FPR 是多少呢？同样的，因为模型认为没有人是坏人，所以它没有产生任何一个误伤，误伤率 FPR 就是 0。

第二种情况也是一个极端的情况：阈值定在 100 分，小于 100 分都是坏人，大于 100 分都是好人。 这个时候，模型会认为所有人都是坏人，所以模型能找到所有的坏人，TPR=1。同理，模型把所有人都当成了坏人，就相当于误伤了所有的好人，所以 FPR=1。

第三种情况是正常情况：阈值定在一个非 0 分和非 100 分的分数上，如 60 分。 那么，TPR 和 FPR 分别会得到一个在 0-1 范围内的值，如 TPR=0.8，FPR=0.2。

同样的，我们也可以把这个阈值分别定在 10 分、20 分、30 分这些点位上，就会得到一连串的 TPR 和 FPR。如果我们把 FPR 做横轴，TPR 做纵轴，一个 TPR 和 FPR 就对应了一个点。当把这些点都连起来之后，我们就可以得到如下一条蓝色的曲线：

总的来说，ROC 曲线就是在没有准确阈值的情况下，对所有分数进行分段处理，计算每一个切分点对应的 TPR 和 FPR，以 FPR 做横轴、TPR 做纵轴绘制出的一条曲线。

除了蓝线，我们看到图中还有一条红线，它是一条随机线，这条随机线上的每一个切分点的 FPR 和 FPR 都是相等的。它表示模型每次切分时，抓到坏人的概率和误伤好人的概率都是一样的。这和我们随机猜测的概率相同，所以模型的 ROC 曲线越贴近这条随机线，模型的分类效果就越差。甚至，如果 ROC 曲线在随机线下面，就说明模型预测结果和我们预期结果是反的，而当 ROC 曲线越偏离随机线并且靠近左上方 (0,1) 点的时候，说明模型分类效果越好，因为这个时候，模型的 TPR=1，FPR=0。

虽然，我们通过 ROC 曲线可以区分模型的好坏，但这还不够直观，而且和业务方沟通时候，我们也不能直接让他们去看这张图。

因此我们想到，是不是可以把曲线右下方和横坐标轴闭合起来的面积作为一个评估指标。这个面积就是我们图上蓝色的阴影部分，它就是 AUC 指标。一般来说 AUC 都在 0.5 到 1 之间，AUC 越高代表模型的区分能力越好。如果 AUC=0.5，那 ROC 曲线与图中红线重合，表示模型没有区分能力，它的结果等于随机猜测；如果 AUC 小于 0.5，说明这个模型大概率很差。

KS 的计算

现在我们知道了 AUC 是什么，那么 KS 又是什么呢？其实，KS 曲线和 ROC 曲线的本质和数据的来源都是一致的。只不过，ROC 代表的是模型召回率和误伤率之间的变化关系，KS 代表的是在某一点上，模型召回率最大并且误伤率最小。

因此，我们在绘制 ROC 曲线的时候，是用召回率和误伤率来做纵轴和横轴，而在绘制 KS 曲线的时候，我们把召回率和误伤率都作为纵轴，把切分的分数点作为横轴。这个时候，一个切分点会同时得到 TPR 和 FPR 两个值，所以我们可以画出来两条曲线。具体是怎么操作的呢

我们还是以[0,100]的模型分数范围为例，每 10 分做一个分段（如 0 分是一个切分点，10 分是一个切分点，20 分是一个切分点....），在每一个切分点上，我们都可以得到一对 TPR 和 FPR。

对于得到的 TPR 和 FPR，我们也可以和刚才一样，分三种情况讨论。

第一种情况，切分点在 0。这个时候，模型认为没有任何人是坏人，所以 TPR = 0，FPR 也是 0。因此，在横坐标 0 这个点上，我们得到了两个数值相同的点，也就是图上左下角蓝色的点。

第二种情况，切分点在 100。这个时候，TPR 和 FPR 都是 1，所以得到右上角橘色的点。

第三种情况，切分点非 0、非 100。假设，我们还是以 60 分作为切分点，也会得到一对 TPR 和 FPR。

就这样，等我们把所有切分点遍历之后，就能得到所有切分点的 TPR 和 FPR 值。然后，我们把它们放到坐标系中，把得到的 TPR 和 FPR 的值分别连接起来，就能得到两条曲线。这个坐标系的横轴就是我们对信用评分的切分点，如果我们信用分是[0,100]范围，那它就是从 0 到 100 的数值。

如下图所示，红色线是我们在不同的切分点得到的所有 TPR 的曲线，绿色线是相应的 FPR 曲线。它们在（0，0）和（100，1）这两个点相交。

由于 KS 代表的是在某一点上，模型召回率最大同时误伤率最小，所以 KS 就是图中红色线和绿色线间隔最大时候的距离。

如图，TPR 和 FPR 在切分点为 40 的时候距离最大，这就意味着当我们拒绝给 40 分以下的人进行贷款，同时通过 40 分以上的人的信贷请求时，业务的收益最大。这是因为，我们拒绝了足够多的坏人，同时误伤了足够少的好人。那么，KS 就是在这个点上，TPR-FPR 的数值了。

具体到图中，KS = 0.7- 0.1=0.6，所以我们这个模型的 KS 就是 0.6。在实际业务中也有人会说“我们 KS 是 60”，这也是正常的。

那么，对于信用评分产品来说，KS 指标是多少才合适呢？对于用于贷前审批的信用评分（申请评分卡）模型来说，一般业内会分为 4 种情况：

KS<20：欠拟合，模型基本不具备可用性

KS>20&KS<30：模型可用

KS>30&KS<40：模型预测能力优秀

KS>40：模型的区分度很高。但同时我们也要对这个结果持怀疑态度，进一步去分析入模变量中是否有一些滞后变量，来确认结果的准确性

总的来说，如果模型的 KS 或者 AUC 值很高，不一定是一件好事情。我们需要了解背后的原因，这有可能是数据不准确导致的。比如，在贷前信用评分场景下，KS 值大于 50 或者 AUC 大于 80 时，我们就需要注意一下数据的准确性了。

小结

这节课，我们讲了分类模型评估的进阶指标：KS 和 AUC，它们是我们在模型评估中用得比较多的指标。围绕它们的构建，我们又讲了 TPR、FPR 和 ROC 曲线，为了方便你记忆和对比，我把它们的核心概念、公式适用场景都总结在了下面的表格中，你可以看看。

这两节课，我们以一个信用评估模型的例子，讲完了分类模型的评估。总的来说，不同类型和不同公司的 AI 产品经理需要掌握的评估能力可能不同。

比如说，应用层的 AI 产品经理可能只需要知道召回率、精确率这些就可以了。但是，B 端做金融风控模型的产品经理，就需要知道 KS 是什么，它是怎么来的，甚至要学会看不同测试集下面的 KS 是否合理。

就像我之前遇到一个情况：OOT 测试的 KS 是 40，测试集的 KS 是 39，训练集的 KS 是 35。虽然我们用的都是真实数据，但结果依然不合理，如果我把这样的结果交付给客户，客户不只会质疑我的专业程度，更有可能怀疑我们公司的技术能力。

因此，我们只有确定好自己要努力的目标，才能知道这些内容自己要掌握哪些，掌握到什么程度，比如做互联网应用的产品经理一般掌握召回率、准确率、AUC 这些指标就可以完成大部分的工作了。当然，如果你想全面系统化地学习 AI 技术，那么尽可能地拓展自己的知识面总没有错。

课后讨论

在这里，我想请你尝试手动计算一下 KS 值。虽然实际工作中我们不需要手工计算，但是我希望你可以通过本次课后题，加深对 KS 的理解。

下面是我们一个信用评分产品的测试数据，我已经将分数做好了分箱（我这里使用了等频分箱），并且得到了好、坏用户的数量（goods,bads），请你计算这个产品的 KS 值是多少。

期待在留言区看到你的分享和答案，我们下节课见！

21 | 模型性能评估（三）：从股价预测产品看回归算法常用的评估指标

你好，我是海丰。今天，我们借助一个股价预测产品，来学习回归算法常用的性能评估指标。

股票价格预测模型或者说算法不仅是金融界一项重要的研究课题，也经常和我们的直接经济利益相关，因此一直备受关注。

为了能够准确预测股票未来的价格，很多公司和机构不断尝试开发了很多股票价格预测的模型。但是，对于用算法来进行股票价格的预测这件事情，市场上有两种不同的声音：有的人认为算法是可以预测股票的，并且用 LSTM 算法进行了很多验证；有的人认为股票走势是随机游走的，不论用什么模型预测结果都不可能准确。

不过，这节课，我可不打算和你深入讨论股票预测是否可以用算法实现。我们只会对股票预测模型的结果进行评估，让你知道回归模型的性能评估该用什么指标，以及具体怎么做。

回归算法的评估和分类算法的评估在底层逻辑上是一致的，都是为了找到真实标签和预测值之间的差异。只是对于分类算法来说，我们关注的是预测分类和实际分类是否相同，而对于回归算法来说，我们关注的是模型是否预测到了正确的数值。 比如，我们预测一只股票 10 天后的价格是 10 元，在对模型进行评估的时候，你只要看 10 天后的价格和预测价格是否一致就可以了，如果不一致，再看差异有多大。

在回归算法中，常见的性能评估指标主要有 4 个，分别是 MSE（Mean Squared Error，均方误差）、RMSE（Root-mean-squared Error，均方根误差）、MAE（Mean Absolute Error，平均绝对误差 ） 和 R2（R Squared 决定系数）。

下面，我们就借助一个预测股票的产品，来详细说说它们的原理、计算方法，以及它们是怎么对模型进行性能评估的。

如何计算 MSE、RMSE、MAE？

对于预测未来某一天的股票价格来说，我们能想到的最简单的方法，就是用过去一段时间它的平均价格进行预测。

假设，我们用过去 60 天的股票均价来预测这只股票第 2 天的价格。比如说，我们就用 y=1.5*x 这个最简单的算法模型进行预测，那 x 就是过去 60 天的均价，y 是我们预测的第二天的股价。这里我要补充说明一点，因为模型预测第 2 天的价格比预测第 20 天的价格更简单，为了方便理解，我们就用第 2 天举例了。

那怎么验证模型的准确性呢？我们选择三只股票，记录下它们过去 60 天的均价，以及模型预测的股价，等到第 2 天股票价格出来之后，我们再把它们和实际的股价放在一个表格中进行对比，如下图：

为了表示它们之间的关系，我们建立一个坐标系，以过去 60 天股票均价作为 X 轴，以股票价格作为 y 轴。当我们把这三组数据放入坐标系后，每一个 X 会同时对应一个预测股价和一个实际股价，它们关系如下图所示：

这也就是说，模型每一次预测之后，我们都会得到一个真实值和预测值之间的误差，也就是同一个 X 值的情况下，蓝色点和橘色点之间的差值。那么，是不是我们把得到的是所有误差相加就可以知道这个模型预测准确情况了？

这个问题你可以先自己想一想。下面，我们直接动手来计算一下。根据刚才得到的数据，我们可以直接计算出这三只股票预测值和实际值之间的差值，分别 22−12=10，40−24=16 和 26−36=−10。

这个时候，如果我们直接把这三次的误差相加，正误差和负误差就会相互抵消。为了避免正负抵消的问题，我们会对每次得到的误差求平方再相加，三次测试的误差平方和就是： (22−12)2+(40−24)2+(26−36)2=456。

但是直接用这个数据也是不合理的。因为我们发现，只要测试样本少，即使模型的性能不是非常好，这个数值也不会太大。而且，随着样本的不断增加，即使模型的性能比较好，预测也很准确，这个数值也一定会越来越大。这对测试样本多的模型来说就非常不公平了，那我们该怎么办呢？

这个问题很好解决，我们可以求出所有测试差值的平方和，再让它除以测试样本的数量，公式为：3(22−12)2+(40−24)2+(26−36)2​=152。

这就是我们用来表示当前模型性能的一个评估指标——MSE，它的公式如下：

MSE=n1​i=1∑n​(yi​−y^​i​)2

其中，n 代表测试样本数量，yi​ 代表实际值，y^​i​ 代表预测值。简单来说，这个指标的计算过程就是先求出所有样本真实值和预测值的差值平方，再除以样本数量。

根据这个公式的逻辑，我们可以知道，MSE 一定是一个大于等于 0，并且无穷大的数值。在对模型进行评估的时候，这个值应该是越小越好。

但是这里还有一个问题，我们在对差值取平方的时候，经常会导致差值的量纲发生变化。比如说，差值的单位是米，那我们对差值取平方，就会导致差值的量纲变成平方米。因此，为了保证量纲相同，我们可以在 MSE 的基础上，再对它求一个平方根。这其实就是 RMSE，它的计算公式是：RMSE=MSE​。

我们知道，对差值求平方是 MSE 为了防止正负差异抵消而进行的操作。事实上，要想保证每个样本的差值都是正数，除了求平方之外，我们还可以求每个差值的绝对值。这就是 MAE 了，它和 MSE 一样，也可以用来测量预测误差，它的公式如下：

MAE=n1​i=1∑n​∣yi​−y^​i​∣

那么，在实际工作中，这三个指标我们该如何选择呢？总的来说，算法工程师看得更多的是 MSE，因为 MSE 对差值取了平方，有一个数据放大的过程，更容易发现误差。但是在实际效果评估时候，我们更多地使用 MAE，相对 MSE 来说 MAE 更接近真实误差。

除此之外，RMSE 因为经过了平方再开方的过程，会导致误差在一定程度上被放大，所以 RMSE 和 MAE 的虽然量纲相同，但是同一个模型的 RMSE 会比 MAE 要大一些。因此，如果你希望更清楚地知道模型差异就选择 RMSE，如果你想了解更真实的模型误差就选择 MAE。

如何计算 R2？

刚才这 3 个指标的范围都是 0 到正无穷，它们的数值越小代表模型效果越好。但是，当我们想要用一个模型来预测不同场景问题的时候，就会存在不同的预测场景有不同的取值范围。比如，预测股票价格的取值范围就是从几元到几百元；预测房价的取值范围就是几十万到几千万元，而预测身高就又变成了 1 到 2 米左右的数值，可读性非常差。

我们想到，分类算法评估标准的准确率都是 0~1 之间的概率值，非常直观，那么回归模型有没有这样的衡量标准呢？这个时候，我们就可以用 R2 来进行评估。

R2 的计算公式是为 R2=TSS(TSS−RSS)​。其中，TSS 代表总离差平方和，RSS 代表残差平方和。从公式来看，它的分子是模型的预测误差，分母是平均数，所以它的值一般都在 0-1 的范围内，并且它越靠近 1，说明模型预测得越准确。

那么 R2 具体怎么计算呢？接下来，我就借助刚才股票预测的数据，来试着计算一下。

在这个例子中，TSS 就等于每个样本点实际值和实际值均值之间的差值平方和，RSS 就等于每个样本点实际值和预测值之间的差值平方和。具体的计算过程可以分成 4 步：

求出实际值的均值：322+40+26​=29.3

求出每个实际值和实际值均值之间的差值平方和 TSS：TSS=（22−29.3）2+（40−29.3）2+（26−29.3）2

求出每个实际值和预测值之间的差值平方和 RSS：RSS=（22−12）2+（40−24）2+（26−36）2

把 TSS 和 RSS 带入 R2 公式：R2=TSS(TSS−RSS)​

小结

这节课，我们讲了回归模型中 4 个非常重要的评估指标。

均方误差 MSE，它的应用最广泛，用来判断预测值和实际值之间误差的指标。它的范围是 0 到正无穷，数值越小代表模型性能越好。

均方根误差 RMSE，它是由 MSE 开根号得到的，也是用来判断预测值和实际值之间误差的指标。它的范围也是 0 到正无穷，数值越小代表模型性能越好。

平均绝对误差 MAE，它的计算过程和 MSE 类似，但是它不对差值求平方，而是直接取绝对值。同样的，它的数值越小代表模型性能越好。

决定系数 R2，它是实际结果与模型构建的预测值之间的相关系数的平方，决定系数值越高，代表模型效果越好，它的范围一般为 0 到 1。

在使用这几个指标的时候，我们可以参考这 3 点：

MAE 相对于 MSE 来说更接近真实误差，所以在评估模型性能的时候，我们会优先选择 MAE；

想要更清楚地知道模型误差就选择 MSE，想要知道更真实的模型误差就选择 MAE；

当我们想要用一个模型来解决不同问题的时候，选择 R2 可以横向比较这个模型在哪个问题上表现更好。

思考题：

我们今天说了， R2 的范围一般是 0 到 1，但也可能是负值。那你觉得在哪些情况下， R2 会是负值？为什么呢？

期待在留言区看到你的思考和答案，我们下节课见！

22 | 模型稳定性评估：如何用PSI来评估信用评分产品的稳定性？

你好，我是海丰。

模型稳定性指的是模型性能的稳定程度，只有稳定性足够好的模型才能通过上线前的评估，而且上线后，我们也要对模型稳定性进行观测，判断模型是否需要迭代。在实际工作中，我们会用 PSI 来评估模型的稳定性。

这节课，我们就借助一个信用评分的产品，来详细说一说 PSI 是什么，它该怎么计算，以及它的评估标准。

案例：客群变化对模型稳定性的影响

在金融风控领域，稳定性对于风控模型来说就是压倒一切的条件。模型只有足够稳定，才能既通过上线前层层的验证和审批，又能在上线后运行足够长的时间。但在实际工作中，像客群变化这类无法避免的情况，往往会直接影响模型的稳定性。

比如说，在模型上线时候，前端流量有 5000 的测试用户，模型输出的分布可能是下面这样的。如果业务设置阈值为 60 分，那么，60 分以下的人我们会拒绝放款。这样一来，模型会拒绝掉大概 20% 的人，这种情况对于业务来说是可以接受的。

如果模型上线后，前端流量没有发生变化，还是 5000 个待测用户，但是客群发生了变化，从测试用户变成了线上的用户。这个时候，模型输出的分布就会变成下面这样。

如果我们还是用 60 作为阈值，模型就会拒绝掉 50% 的用户。当前市场下，前端流量这么贵，如果风控拒绝了 50% 的用户申请，估计市场或者运营的同学，肯定不会放过风控部门了。

在实际工作中，这种情况的发生就是因为模型不稳定。为了避免这种情况的发生，我们必须要在上线前对模型的稳定性进行评估，尤其是在类似金融风控这类对模型稳定性要求高的场景中。

那么，在上线前，我们该怎么使用 PSI 对模型稳定性进行评估呢？

PSI 指标该如何计算？

首先，我们来看看 PSI 是什么。

所谓 PSI 指标就是群体稳定性指数（Population Stability Index），通过 PSI 指标，我们可以得到不同样本（不同时间段给到模型的样本）下，模型在各分数段分布的稳定性。

PSI 的计算公式

我们知道，稳定性是一个相对的概念，只有通过对比，我们才能知道模型是不是稳定。所以，想要计算模型的稳定性，我们需要先有一个参照物。在信用评分模型中，为了进行对比，我们至少需要两个分布结果，一个是预期分布结果一个是实际分布结果。

在产品验收阶段，我会使用模型上线时的 OOT 样本作为预期样本，非 OOT 时段的近期抽样样本作为实际样本。不仅产品经理，算法工程师也需要对模型的稳定性进行评估，他们通常会在模型验收之前，使用验证样本作为实际分布，使用训练样本作为预期分布，这一点你知道就可以了。

我们期望的是，模型在遇到不同时间段样本的时候，每个分数段的人群占比不要发生太大变化。为了更直观看到预期分布和实际分布的这种变化，我们可以把人数分布直接转化为占比分布。

通过这张图，我们肉眼就可以看到，在这个模型中，两个不同人群的占比发生了很大的变化。那么，我们该怎么去量化这个变化呢？这个时候就需要用到 PSI 指标了，它的公式是：PSI = SUM ( 实际占比 - 预期占比 ) * ln ( 实际占比 / 预期占比 )。

已知，这个信用评分产品的分数范围是 [0, 100]，分数越高说明用户的信用越好。接下来，我们来计算一下这个信用评分产品的 PSI。具体来说，我们可以分三步来操作，分别是分箱、计算实际分布、计算 PSI 数值。

第一步：分箱

由于信用分数是一个个连续值，实际操作中我们不可能对每一个分数点进行测试，因此，我们需要将变量的预期分布进行分箱操作，然后统计每个分箱里面样本的占比。分箱的方式有两种，一种是等频分箱，另一种是等距分箱。分箱方式不同，模型计算的结果也会有略微的差异。

那么，什么是等频分箱和等距分箱呢？所谓等频分箱是指每个分箱中的样本数量相等，分数段不同，并且分数段是根据人数占比计算得到的。比如，对于把信用评分的结果，我们使用等频分箱的方式可以把它们分为 10 个箱子。其中，每个箱子分数段不同，但是里面的人数相同，示例如下：

等距分箱指的是每个分箱中分数段相同，人数不同，人数是按照分数平均切分的。比如说，对于信用评分结果，我们使用等距分箱把它也分为 10 个箱子，那每个箱子中的分数段相同，但是里面的人数不同，大致样例如下：

因为 PSI 看的是分数段中人数波动情况，所以这里我们选择对预期分布进行等距分箱，也就是上面的分箱方式。

第二步：计算实际分布

我们知道，PSI 比较的是预期分布和实际分布，而模型上线前我们就已经有了预期分布（我习惯使用算法进行 OOT 测试时候得到模型分布数据，当然你也可以选择其他样本作为预期分布），并且我们也已经对数据完成了分箱。接下来，我们需要选择进行测试的样本，把样本传入模型得到实际测试结果，即所有测试用户的信用分数。然后，我们再根据上一步选择的分箱方式，将实际测试结果同样进行分箱，计算分箱后的占比。一般来说，测试样本距离当前日期越近越好。

第三步：计算 PSI

完成分箱，计算出实际分布之后，我们就可以利用公式计算 PSI 了。为了方便计算和查看，我们将前两步的结果整合到一张表格中。

以第一行的分数段 [0,10]为例，我们先计算实际占比 - 预期占比 = 1.5%-2% = -0.5%，然后计算实际占比 / 预期占比 = 1.5% / 2% = 75%，之后计算 ln ( 实际占比 / 预期占比) = -0.28768。最后是计算 index = ( 实际占比 - 预期占比 ) * ln ( 实际占比 / 预期占比 ) = -0.5% * -0.28768 = 0.0014。

接下来，我们分别计算其余 9 组分箱的 index 值，最后可以得到下表的数据：

根据公式，最终的 PSI 值就是表格每一个分箱的 index 求和：PSI=sum(index1+index2+...+index10) = 0.0127。

以上就是 PSI 指标的计算过程了。但是，得到 PSI 之后，我们怎么利用它对模型稳定性进行评估呢？我们得到的数字又代表什么业务含义呢？

在业务层面，PSI 数值越小说明两个分布之间的差异也就越小，也就代表模型越稳定。更具体一点，我们一般会这么定义模型的稳定性：

小结

PSI 的计算过程非常简单，在工作中我们也不需要手工去计算 PSI，通过 Python 代码就可以直接计算。今天，我希望你能通过它的计算过程深入理解它的原理。

首先，PSI 指的是群体稳定性指数，它可以表示不同样本下模型的稳定性。稳定性是一个相对的概念，在信用模型中，我们会使用至少两类分布结果进行判断，分别是预期分布结果和实际分布结果。这其中，计算 PSI 的目的，就是为了判断实际分布和预期分布相比是否存在比较大的变化。

那在实际计算 PSI 的时候，我们会通过三步来进行，分别是分箱、计算实际分布和计算 PSI。其中，分箱是一个非常常见和重要概念，不仅是在计算 PSI 的时候，在对其他指标进行评估的时候，我们也会借助分箱的方式，来帮助我们处理数据。

至于利用 PSI 对模型进行评估就非常简单了，总的来说就是 PSI 数值越小，两个分布之间的差异也就越小，模型越稳定。PSI 的值在 0.1-0.25 之间，都是可以接受的范围。

除此之外，在实际工作中使用 PSI 的时候，我还有 3 点建议提供给你。

PSI 值不应该只是在模型上线时候关注，在上线后我们也要持续关注。因为客群必然会随着时间的推移发生变化，这会导致人群分布发生变化，而且这个变化会越来越大，从而影响模型的预测能力。

影响 PSI 的变化因素很多，常见的有客群变化（尤其是互金市场用户群体变化很快）、数据源变化（外部接入的数据源停用或者效果下降）等等。

上线后，为了能够随时关注模型稳定性的情况，我建议你根据业务场景对模型稳定性的要求，对模型 PSI 进行按日、按月或者按季度监控。

课后讨论

今天的最后，我还想请你思考一个问题，我们今天说了 PSI 指标是为了衡量两个分布之间的差异，它的公式是：SUM ( 实际占比 - 预期占比 ) * ln ( 实际占比 / 预期占比 ) 。那么，为什么公式需要增加“ ln ( 实际占比 / 预期占比 ) ”部分，而不是直接使用：SUM ( 实际占比 - 预期占比 ) 呢？

期待在留言区看到你的思考和答案，我们下节课见！

23 | 模型监控：产品经理如何建设算法模型监控指标体系？

你好，我是海丰。今天，我们来讲一讲算法模型监控指标体系的建设。

算法模型的监控指标体系（后面简称监控体系），就是将业务数据进行采集，同时用可视化图表展现给用户，并且提供相应的告警功能。

一般来说，当业务线初建的时候，我们可以不用考虑太多监控体系的需求，因为我们需要把精力放到怎么让业务“活下去”。但是当业务“活”下来之后，我们就要开始考虑搭建监控体系，让模型能够“活得更好”。那么，监控体系是怎么做到的呢？

具体来说，通过监控体系我们可以知道：

当前这条业务的现状和过去业务数据的对比

当前业务是否正常，可能存在的问题，并且通过这些问题追溯原因

未来业务的趋势，可能的完善方向

今天，我们就一起学习怎么去建设算法模型监控指标体系。

监控体系的三个核心问题

在规划一个监控系统的时候，有三个核心问题需要我们想清楚：

这个项目的业务背景是什么

这个监控体系是给谁解决问题的

你想要怎么解决问题

接下来，我们一个一个来看。

第一，你做这个项目的业务背景是什么？

做任何一件事之前，我们都要想清楚为什么要做，做监控体系之前也不例外。不同的业务背景意味着你对这个项目不同的解决路径，也意味着你对这个项目投入多少精力，这需要你在做这个项目之前考虑清楚。

一般来说，建设监控体系这个需求有可能是你作为产品经理在业务发展过程中发现的，也可能是你的老板或者客户提出来的。

如果是你自己打算做一个监控体系，那么你就要思考：

你为什么要做这个东西，现在是遇到了什么问题

你对这个问题的洞察怎么样

你的解决方案是什么，解决方案是不是只有监控体系这一个，还有没有其他的办法

举个例子，之前我们刚开始做 AI 项目的时候，根本没考虑过做监控体系，所以把很多精力都用在了模型的迭代和满足客户个性化需求上。突然有一天，客户反馈说，我们的评分产品全部返回默认值，经过排查我们才发现，这是模型底层依赖的数据源出了问题。解决这个问题之后，我们才决定去搭建一个监控体系。

所以在这个例子中，为了解决我们不能及时发现模型问题，比如无法了解当前调用数据的问题，就是我们做监控体系的背景。

如果是老板或者客户提出的，那么你要考虑他为什么要做这个。常见的原因有四个：

模型现在是否暴露出了一些问题，你没有发现

你的老板或者客户看到别人有监控体系，认为我们也要有

老板为了有一套系统去“占坑位”

老板打算把这套系统和模型能力一起打包做成一个解决方案，对 B 端销售

这个时候，老板 / 客户提出需要搭建一个模型产品监控体系就是我们的业务背景。

第二，你要给谁解决什么问题？

明确了业务背景，下一步，我们要明确监控体系是要给谁解决什么问题，这其实就是在明确我们要解决问题的价值是什么。具体来说你需要明确，你做的这个监控体系到底在解决谁的问题，解决的是什么问题。这听起来好像有些啰嗦，但这两个问题环环相扣，知道了目标用户，我们就能针对具体问题具体分析，得出这个监控体系的建设侧重点，做出令人满意的产品，因此把它们拆开来看还是很有必要的。

首先，怎么确定你的目标用户是谁呢？我们可以从需求提出的两个方面来思考。

如果这个需求是内部需求。比如说，你在过去的业务中发现模型出现了衰减，但是业务方不知道，这就会导致模型的最终效果不好，反馈延迟。这个时候，你的用户其实是你和你的业务方，因为你们需要尽早知道模型是否发生了异常。因此，这个监控体系的重点就要放在业务数据展示和告警提示上面。

再比如说，你的老板只是看别人有这个产品，认为你们也要有（有些大公司这种情况还是有的）。这个时候，你的用户就是你的老板，你要解决的就是“有没有”或者“占坑”的问题。因此，你的产品重点要放在业务展示上，展示的角度要以领导视角为主，甚至整个产品都可以做得比较简单，比如你可以先做一个 MVP 出来，解决“有没有”的问题。

如果这个需求是外部需求。比如说，你在 B 端市场销售模型时候，发现某家银行的风控业务人员想要更方便地进行模型的管理，也就是有一套一体化解决方案的需求。这个时候，你的用户是你的 B 端客户。因此，你的产品重点就要放到 B 端客户的业务痛点上，解决“卖得更好”的问题。

但是，有一点我们需要特别注意：很多时候，你的目标用户不只是真正使用你产品的用户。尤其是在 B 端场景下，在采购产品这件事情上，有决定权的往往不是真正使用者。

举个例子，像钉钉这样的软件，虽然使用者是我们这样的“打工人”，但真正具有购买决策权的往往是公司的 HR 或者 CEO。如果你要做类似的软件，就要把他们当做你的用户，只有做出可以打动他们的功能，才能让你的产品具有竞争力。

明确了用户之后，你就可以去调研这些用户面对的问题是什么了。如果是内部业务线的需求，我们面对的问题可能就是，模型突然异常业务不能实时告警，并且及时处理。如果是 ToB 销售的业务需求，我们可能需要解决的问题，就是业务人员没有办法从全局角度管理和监控模型。

总的来说，要明确解决的问题是什么，需要你深入到业务中去挖掘用户的痛点，这也是产品经理最基础的要求。我给你的建议是，如果你做的是 C 端产品，你要把自己作为产品的用户，去深入体验产品、发现问题。如果你做的是 B 端产品，你要和业务的相关者深入沟通，最好和他们一起工作，看看他们的工作流程是怎么样的，有没有遇到什么问题，以及当前（没有产品的情况下啊）是怎么解决这些问题的。在这个过程中，你可以尝试利用“5W2H”的方法来问你的用户、问你自己。

第三，你要怎么解决问题？

在了解了背景，用户和要解决的问题之后，你需要做的就是去真正地解决问题了。至于具体该怎么做，你可以参考我接下来要讲的实际案例。

案例：ToB 服务中模型监控体系搭建

下面，我就以我做过的一个监控体系为例，来给你讲一讲详细的过程。

当时，我还在一家创业公司，这个公司是给银行、互金机构提供风控模型的。它提供的产品形式是 API 接口，你可以理解为是，银行给我们一个用户的手机号，我们告诉银行这个用户的风险分是多少。银行会结合我们提供的风险分和其他的数据对用户的风险进行二次判断，来决定是否给用户进行放款。

我们遇到的问题是，有时候接口会突然报异常，模型效果会逐步下降，但是产品侧却抓不到这样的数据，模型侧也没有对模型进行监控。最后，客户反过来投诉我们，这对公司的口碑造成了影响。

结合刚才讲的三个核心问题，我们一个一个来回答。

首先是明确项目的业务背景，这个很容易得出，就是我们的内部数据监控和告警出现了问题。

其次是明确我们的目标用户，以及要解决的问题。我们的目标用户应该是产品经理自己，以及 B 端的商务运营同学。要解决的问题就是及时发现模型上的问题，在客户发现之前尽快修复、减少客诉。同时归纳这些问题，反哺模型和研发侧，对技术人员提出更高的要求。

最后就是去解决问题了。基于我们的背景和面对的问题，产品的定位就很清楚了：给产品和运营同学提供一套，能够查看所有模型，同时监控模型性能指标和稳定性指标，并且可以做到实时报警的工具。这个工具需要实现的功能列表梳理出来之后是下面这样的：

在这里，比较重要的监控功能点是模型全景，也就是监控首页或者说是总览页。虽然它不需要给出具体的模型指标，但要展示出都有哪些模型在用，调用过程中是否有异常，这方便我们根据异常下钻到明细信息中。

另一个重要的监控功能点就是模型性能指标和稳定性指标，这需要根据模型的类型，分别去展示模型近期的性能指标波动图，在图中需要展示模型的正常范围值。这个正常范围值，我们是根据实际业务定义的，比如我们对于 KS 要求比较高，所以把范围值定义在 25-40 之间。

除此之外，模型输出结果指标也是一个重要的监控功能点。为什么要监控模型的输出结果指标呢？我们之前就因为没监控模型输出而出现了大问题。当时，模型给到客户的产品输出范围是[0,100]，但模型底层依赖的某个数据未更新，这让模型输出了大于 100 的数据。同时，在工程部署时候，模型也没有对输出值进行二次处理，这就导致客户最终拿到的是不合理的结果。因此，我们不但要监控模型的输出，也要对不合理的输出及时告警。

不仅如此，我们还要注意不同指标的监控周期也不同。比如，我们的信用分模型是按月打分，所以，相应的 KS、AUC、PSI 指标也都要按月更新。这需要结合我们模型的实际情况进行设置。

确定好这些具体的功能列表之后，我们就可以进行后面的原型设计和 PRD 设计了。后面的流程就和我们一般的产品设计没有什么区别，我也就不再赘述了。

小结

这节课，我和你分享了从 0 到 1 去规划一个产品的思路，虽然这个产品是模型的监控体系，但是你在做其他产品设计的时候也完全可以参考这个套路。总的来说，我们要先明确项目的业务背景，然后明确你要给谁解决什么问题，最后再去设计解决方案。

在这里，我想和你强调的是，虽然具体的解决方案是一些能拿得出来的产出（如设计原型、PRD），好像最值得我们关注。但事实上，最需要我们关注的反而是我最开始提到的背景、用户和问题。这是因为，只有把做事情的目标搞清楚，才能让自己做出的事情是有价值的。否则，你的解决方案再优秀，只要没有解决用户的问题，它就是没有价值的。

课后讨论

假设，你现在是一个 C 端的产品经理，上游是多条业务线，下游是算法团队。如果这个时候你的老板让你做一个模型监控体系，你会怎么做？

期待在留言区看到你分享和答案，我们下节课见！

春节加餐1 | 用户增长模型：怎么利用AI技术判断新渠道性价比？

你好，我是海丰。

马上就要到新年了，我在这里先给你拜个早年，祝你牛年顺风顺水，随心随意 ！

到今天为止，我们基本上已经把 AI 产品经理的三大能力学完了，我非常开心看到很多同学一直坚持学习到现在，并且还一直和我互动，比如“悠悠”“AsyDong”“Yesss!”等等，希望你们能和我在新的一年里继续走完这趟 AI 学习之旅。

春节期间在陪伴家人之余，也希望你不要停下学习的脚步。这里，我特意为你准备了两篇轻松的加餐。今天，我们先来聊聊很多同学都比较关注的用户增长模型，说说拉新模型怎么构建，以及模型效果怎么评估。

关于用户增长理论

首先，我们来说说什么是用户增长理论。关于用户增长有一个著名的模型——AARRR，它是 Acquisition、Activation、Retention、Revenue、Refer 这 5 个单词的缩写，对应着用户生命周期中的 5 个重要环节，如下图所示。

如果从拉新角度出发，要想实现一个完美的模型，有一个重要的前提就是需要不断地烧钱获客。但从如今市场上的流量分布来看，新用户的增长一定会越来越缓慢，野蛮式的扩张已经成了过去式，资本的进入也愈来愈趋于理性，所以，从这套模型出发，从获客到激活再到留存的这条路径困难重重。

这个时候，我们可以换一种思路，直接从留存出发。如下图所示，也就是先做好产品，夯实基础建设，做好运营服务，然后再在留存的基础上进行变现，确保产品的变现能力后，再进行拉新。这样才会使产品拥有复购的能力，而不会陷入拉新、流失、再拉新、再流失的恶性循环中。

现阶段，先留存、再变现，接着推荐、拉新、激活也是大部分产品的一套玩法。毕竟拉新的渠道成本太高，对于以 CVR 为目标的产品来说，这样的方式更为健康，而且随着资本越来越理性，活下去才是产品最重要的指标。

关于用户增长模型

确定了玩法，接下来我们再来解决拉新的渠道成本太高的问题。最直接的，就是我们尽可能地筛选出性价比最高的渠道，长期作为拉新入口。那该怎么做呢？接下来，我们就来说说，怎么通过 AI 模型计算拉新渠道的人群特征和我们产品客群是否匹配，来预测拉新渠道的用户在产品上的留存程度，进而判断该渠道的性价比。

拉新模型的创建

假设，我们的产品长期通过京东 App 渠道进行推广销售。现在，我们想要尝试新的渠道，比如通过“某款短视频自媒体”对产品拉新。为了预测“新渠道”相比于“主渠道”的留存效果表现，我们要创建一个拉新模型。拉新模型的创建准备工作主要有 5 步，下面，我们一一来讲。

首先是确定模型 Y 标签的口径：

已留存：用户流量引入后，30 日以内登录过设备

未留存：用户流量引入后，30 日以内未登录过设备

然后是数据准备。这里，我们要准备两份样本，一份是主渠道样本，一份是新渠道样本，各 10000 个。在收集到的主渠道样本中，已留存样本占 700 个，比率为 7 %；在收集到的新渠道样本中，已留存样本占 900 个，比率为 9 %。

那么，总样本的 70% 就是建模样本，剩余的 30% 就是验证集，这个切分比例是约定俗成的。

接着是建立特征工程。 我们基于两个渠道来的流量，选择了同样的入模变量，并用 IV 值对它们进行排序，表格如下：

你可能会问，这里只有一个表格，主渠道和新渠道怎么没有区分特征呢？其实，正常情况下是应该区分的，但这里，我们为了简单就不对特征做区分了。

准备工作做到这里，我们就可以建模了。这里，我选择使用逻辑回归和决策树 XGBoost 进行建模。为什么选择它们呢？我来一一解释一下。

逻辑回归模型的优点是具有良好的可解释性和稳定性，所以模型选择逻辑回归作为基础模型之一，可以从业务上很好地解释各个特征的作用。

XGBoost 是机器学习界炙手可热的算法，我们在竞赛界经常可以看到它的身影。在样本量不是非常大的情况下，XGBoost 对非线性关系有很好的拟合能力，并且可以输出变量的重要性排序。因此，这次建模我也选择它作为基础模型之一。

最后就是模型的融合。模型融合的思路主要有两种：前向融合和后向融合。

前向融合是把前一个模型的输出作为后一个模型的输入，类似一种串行的关系，而后向融合是由若干个相关性低的模型同时进行建模预测，将结果归一化后，再由某种算法进行融合得到最终结果的方法。

这次模型融合，为了让融合后的模型更加简明清晰，也为了方便融入更多的模型，我们采用的是后向融合方法。具体来说就是，让刚刚说的 2 个模型结果变为同一量纲，再经过加权平均后得到最终的模型结果。融合后的模型方差大幅降低，稳定性增强，并且模型效果有时会优于任何单个模型。

最终，我们把 30% 验证集的样本数据输入到模型中，得到的效果如下：

模型分析

从验证集表现上来看，虽然从模型效果上来说“主渠道”>“新渠道”，但两个模型的 KS 和 AUC 值相差不大。由此，我们可以推测出以下 2 个结论：

“主渠道”的原始特征虽然有很多高 IV 值的，但是相互之间有很强的相关性，所以对模型的贡献并没有那么高，因此模型的表现也没有特别地好；

“新渠道”可能引入的用户群体活跃，并且数据表现比较好，因此效果并不比“主渠道”差太多。

总之，从模型的结果来看，“新渠道”的表现还有很大的提升空间，并且我们可以尝试多个“新渠道”做横向的比较，最终选出效果最好的渠道。

那么，对于这节课的简单模型来说，它还可以从哪些地方进行改进呢”？我认为，可以从 2 方面入手：

由于观察期时间窗口的限制，这次建模的特征大多取近 30 天的口径。如果取到近 60 天口径，可能会让模型有进一步的提升；

本次建模的参数调优为手工调参的方式，并且应用的是浅层机器学习模型，因此可能是局部最优解，后续我们可以引入 DNN 深度模型进行优化改进。

小结

这节课，我们讲了针对于不同渠道做拉新模型的效果比较。虽然实际工作中的模型更为复杂一些，但是流程和我们是一致的，都是要先确定模型 Y 的口径，然后做准备数据、创建特征工程、模型训练、模型融合，最后是效果评估。

对于模型的效果评估来说，产品经理需要掌握的就是 KS 和 AUC 这样的基础评估指标，然后通过新旧模型之间基础指标的对比，再结合实际业务指标的反馈，来综合评判模型的优劣。慢慢地，你就会发现模型指标与业务指标的内在联系了，这还需要你在工作中去体会。

最后，再次预祝你假期快乐，我们下节课见！

春节加餐2 | 一次答疑，带你回顾模型评估的所有基础概念

你好，我是海丰。

今天是我们春节假期的第二篇加餐。这节课，我筛选出了一些常见的课后问题，对它们做了统一的整理，同时也对一些优质回答做了补充讲解，希望更多同学可以进行参考。

常见问题

问题 1：老师，我总是容易弄混 KS、PSI 等很多指标。

我看到有很多同学提出类似的问题，这些都是 AI 产品经理需要掌握的基础概念，而且在接下来的项目实践篇都会涉及。所以这里，我会把一些基础概念进行汇总，希望能再帮你巩固一下。

最后，我再补充解释一下 OOT 这个基础概念。OOT 是跨时间测试，使用的样本是和模型训练集，验证集没有交集的样本，目的是用来判断模型的泛化能力。我在第 3 讲提到过:

在我刚开始转做 AI 产品经理的时候，遇到过这么一件事儿，我们的用户年龄预测模型训练时候 的 KS 值（模型中用于区分预测正负样本分隔程度的评价指标）很高，但是 OOT 测试的时候 KS 还不足 10。当我拿着结果去找算法同学沟通的时候，他就说了一句，“可能是过拟合了，我再改改”。

也有同学提问说，“不明白为什么 OOT 过高就是模型样本选择的问题？”我这里表达的意思，其实不是 OOT 过高就是模型样本选择有问题，而是说，如果模型在验证集上的 KS 值不错，但到了 OOT 测试的时候 KS 反而不好，就说明，可能是我们当时选择的样本不合理。比如：训练和验证样本抽取的时间过早，很多数据发生了变化，这就导致模型在过去样本上表现好，但在目前样本上不适用。

课后讨论题

问题 2：假设，我们业务方 HR 团队希望你分析每一个员工的离职概率，你觉得用朴素贝叶斯合不合适？为什么？（12 | 朴素贝叶斯：让 AI 告诉你，航班延误险该不该买？）

首先，我非常认可这位同学的观点。离职率的预测是一个非常复杂的模型，正常情况来说，只用朴素贝叶斯大概率是不够的。但作为产品经理，我们要回到场景上看问题，场景不同，选择的模型不同。因此，我认为对于这个问题，我们可以分为两个阶段来考虑。

第一个阶段：快速响应，从 0 到 1。我们要结合成本来考量，因为一般公司内部部门的诉求样本比较少，并且他们对准确率的接受程度比较大，他们在意的是从无到有。那么，针对启动期没有效果指标可以参考的情况，我们可以先用朴素贝叶斯来完成业务方从无到有的需求，做到快速响应。

第二个阶段：根据实际情况，考虑资源倾斜。这个阶段，我们就要看模型的实际使用情况。不过，一般来说，内部部门的项目就到此为止。但如果你是在众包机构工作，就需要切实投入更多的资源，来训练一个模型解决资源倾斜的问题。

希望同学们可以根据我提供的思路，来继续深入思考一下这个问题。

问题 3：假设，你们公司是做电商业务的，现在领导打算让你做流失用户的召回，你认为评估这个模型的指标都有哪些？为什么？（18 | 核心技能：产品经理评估模型需要关注哪些指标？）

这位同学的思路很好！下面，我们再来说一下我的思路。对于产品经理来说，我们首先需要明确做一件事情的目的是什么，领导预期达到的目标是怎么样的，然后明确指标的计算口径。

其次，我们要明确这个问题属于什么问题。对于判断流失用户，大部分场景都定义为分类问题。在实际操作中，它也可能被当作一个回归问题来处理（比如，我们判断用户多久之后会流失）。总的来说，分类问题还是使用 KS 作为评估指标比较多。

最后，就是模型的评估。一般来说，我们给到业务评估指标会使用精确率和召回率，这是一对经常被同时使用的指标。这里，我还要提醒你一点，精确率和准确率是两个不一样的指标，它们的概念，我都总结在了刚才的脑图中，我们要记住。除此之外，因为流失用户在整个用户群体中占比不会太大，所以我们一般不使用准确率作为评估指标。

最后，春节假期就快结束了，我也希望这次加餐能帮助你做好准备，迎接新的挑战，我们节后再见！

24 | 推荐类产品（一）：推荐系统产品经理的工作职责与必备技能

你好，我是海丰。

从这节课开始，我们进入 AI 项目实践篇的学习。这一模块，我们会一起打造三类 AI 产品，分别是推荐类产品、预测类产品、自然语言处理类产品。在接下来的两节课中，我们先来完成一个电商个性化推荐产品的打造。

一说到主导推荐系统的建设，很多产品同学就会有类似的疑问：推荐系统不是研发或者算法工程师来主导的吗？在牵头建设推荐系统的过程中，产品经理参与度不是很低吗，怎么去主导一个推荐系统的建设呢？我们到底应该做什么呢？

今天，我就结合我曾经实现过的商品推荐系统，来和你说说如何站在产品经理主导的角度来牵头建设推荐系统，下节课我们再一起搭建一个 MVP 推荐系统。

虽然推荐系统目前有很多不同的应用场景，比如，社交场景的内容信息流推荐，有电商场景的个性化商品推荐，还有地图场景的路径推荐等等，但是它们的底层逻辑是类似的。因此，只要你跟着我一起弄明白了商品推荐系统的原理，其他的也就不在话下了。

你的业务适合做推荐系统吗？

我想先问你一个问题，你觉得任何业务都适合做推荐系统吗？我认为不是的，做推荐系统需要在业务发展现阶段满足三个必要条件，分别是有货、有人、有场景。那它们具体指什么呢？我们一一来看。

有货就是要保证业务发展的现阶段供应链齐全，有足够的商品用于推荐，可以让用户“逛”起来，如果商品少到用人工就可以应付过来，那你觉还有推荐的必要吗？

而有人的意思是指，做推荐系统的前提是你的用户量要足够多，足够多的用户会带来足够多的用户行为，这些是推荐系统的数据和特征的来源。除此之外，有人还包括你得有合适的人才来做这件事儿，最完整的配比是“算法工程师 + 研发工程师 + 数据工程师 + 产品经理”，当然 MVP 的推荐系统通过研发工程师 + 产品经理也能搞定。

最后是有场景，做推荐系统要立足于业务的发展阶段。这很好理解，因为业务在发展初期阶段正忙于系统功能的建设，所以推荐系统这类偏前端流量玩法的工作的价值凸显不出来。也就是说，我们需要有合适的产品场景以及完善的系统，才能“接住”这样的需求。

因此，在推荐系统的建设上，你要考虑到人、货、场这三个因素。

拿我们部门举个例子，当我们要做推荐的系统时候，我们正处在用户高速增长的阶段，各条业务线产品的基础建设、供应链，以及用户体验都有了一定的积累和沉淀，业务发展战略的工作重心也逐渐从后台的基础建设，转移到了前台的用户流量运营。为了提高长尾商品的曝光率、挖掘用户潜在意图、优化用户体验，以达到提高购买转化率的目的，我才临时组建了推荐系统团队，去做一个基于旅行商品的个性化推荐系统。

推荐系统的工作流程

在了解了推荐系统的业务背景之后，我们有必要深入理解一下推荐系统工作流程和原理，这是从事个性化推荐相关工作的产品经理需要掌握的必备知识点。

推荐系统将一个物品 / 内容推荐给用户主要会经历三个步骤，即商品召回、商品排序和综合调整。

举个例子，如果你是一个女生，你在浏览京东商城的时候，可能会关注一些美妆品牌，收藏一些奢饰品包包或者加购一些零食。这一系列的行为反映了你对某些商品的偏好，此时推荐系统就会根据你的操作行为大致勾勒出你的兴趣偏好。

与此同时，推荐系统发现京东网站上还有很多与你兴趣偏好相似的用户，你们有着类似的喜好，她们喜欢的东西大概率你也会觉得不错。因此，推荐系统就会统计你们在京东商城的操作行为（如浏览、收藏、加购、下单），计算出你们之间的相似度，这样推荐系统就筛选出那些同类用户喜欢而你还没有接触过的商品。像这样推荐系统根据算法帮你初步筛选出你可能喜欢的商品的过程，叫做推荐系统的召回，你也可以把召回简单理解为商品的粗筛过程。

在召回的阶段中，有很多成熟的策略和算法供我们选择，比如基于用户行为的协同过滤召回算法，基于内容标签的召回算法，以及当今很火的基于深度学习的召回算法。但是，不管你选择哪一种召回算法，它们最终返回的结果都是一个商品列表。

一般来说，采用一个召回算法，我们只能得到一个商品列表，这对于一个个性化的推荐系统来说远远不够。因此在实际工作中，为了提高召回商品的覆盖率和多样性，我们往往会应用多种召回算法进行商品召回，这也叫做多路召回。

那么问题就来了，采用多路召回得到多个商品列表之后，我们该怎么对这些列表进行排序呢？

这时就进入了推荐系统的排序阶段。具体来说就是将召回阶段获取到的多个商品列表，结合多种因素进行考量（比如业务指标 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，我们把这些信息整理到一个表格中。

通过这个表格，我们能很直观地看到，用户 A 和用户 C 都喜欢商品 A 和商品 C。由此，我们可以猜测用户 A 和用户 C 的兴趣偏好可能相同。这个时候，我们就可以把商品 D 推荐给用户 A。

这就是协同过滤策略的基本原理，在算法的实现上就是将用户对商品的操作行为，如浏览、收藏、加购和下单，变成向量形式的数学表达方式，然后通过相似度算法，常见地有通过余弦相似度算法计算这些行为的相似度，最后得出一个相似度分数的排序。这样，就能找到和你行为最相近的其他用户，并过滤出他们喜欢而你没有接触过的商品。

通过相似度计算，我们可以得到和某个用户最相似的其他用户的一个列表。举一反三，我们就能得出和某个商品最相似的一个商品列表。

那你可能想问了，协同过滤算法看起来就不简单，产品经理到底要掌握到什么程度呢？

产品经理不需要掌握如何实现协同过滤算法，但是需要理解它的原理。协同过滤算法需要有用户行为数据作为基础，才能根据行为计算用户之间的相似度以及商品之间的相似度，在系统冷启动阶段很难实施，所以在冷启动阶段，我们还需要考虑其他的召回策略，比如我接下来要说的基于内容标签的召回策略。

基于内容标签的召回算法（Content-based Recommendations，CB）是最早被使用的召回算法，在现在的工业界中仍然被广泛使用，因为它的效果很好。它的基本思想就是给用户和商品分别打标签，然后召回同类标签的商品，最终把它们推荐给用户。

比如说，现在有两个用户，分别是用户 A 和用户 B，还有四部电影，分别是《钢铁侠》《蜘蛛侠》《蝙蝠侠》和《神奇女侠》。我们给每部电影打上标签，《钢铁侠》是“科幻片”和“漫威”，《蜘蛛侠》是“科幻”和“漫威”，《蝙蝠侠》是“科幻片”和“DC”，《神奇女侠》是“科幻片”和“DC”。为了方便你理解，我简化了标签的数量，在实际工作中，我们可能会给每一个电影打上几十甚至是几百个标签。

给电影打完标签之后，我们还要给每一个用户打上兴趣偏好标签，如用户 A 刚看完《钢铁侠》，就给用户 A 打上“科幻片”和“漫威”的标签，用户 B 看过《蝙蝠侠》，就给用户 B 打上“科幻片”和“DC”的标签，我们把这些信息都整理到了下面的表格中，你可以看看。

通过这个表格，我们能很直观地看到，用户 A 的偏好标签为“科幻片”“漫威”，正好和《钢铁侠》《蜘蛛侠》的标签相同。很显然，我们应该把《蜘蛛侠》推荐给用户 A，再把《神奇女侠》推荐给用户 B。

这就是内容标签召回算法的基本原理，具体的算法实现就是将用户的偏好标签和电影的标签，变成向量形式的数学表达方式，然后通过相似度算法，常见地会通过余弦相似度算法，去计算这些行为的相似度，最后得出一个相似度分数的排序。这样，我们就能找到和用户偏好最相似的 TopN 部电影了。

到这里，两种最常见的召回算法我们就讲完了。这两个召回算法作为推荐系统产品经理是必须要了解和掌握的。为了帮助你在实际工作中进行选择和评估，我把这两种算法的优缺点总结在了下面。

排序阶段的工作职责

知道了产品经理在召回阶段需要具备的能力和工作职责。下面，我们继续来看看，产品经理在排序阶段需要掌握哪些内容。

在推荐系统的排序环节中，产品经理要以目标为导向来确定排序的目标。如果产品是以提高 CTR 为目标，那么推荐系统可以使用 CTR（Click-Through Rate，点击率）预估的方式来构建排序模型，根据用户历史的浏览记录，来预测用户的点击行为。

但在电商场景中，还存在 CVR、GMV、UV 等多个核心指标，所以产品规则并不是一个指标所能决定的，要根据业务目标来优化排序模型。也就是说，如果公司追求的是 GMV，那么单纯地提升 CTR ，在一定程度上只能代表着用户体验的提升。

当然，你可以把这些指标的诉求抛给算法工程师，让算法同学给出 CTR 或 CVR 预估的方案。这个时候，你需要关注的就是如何评估算法同学交付的算法模型的性能和稳定性。

但是由于冷启动阶段用户个性化和行为化特征过少，如果我们把评估的重心定位在“针对用户的精准化预测”就是不合理的。这个时候，你可以让算法工程师给出冷启动阶段的排序模型，如果没有更优的方案，你也可以给出一套打分策略来进行商品列表的排序融合，这也是面向策略的产品经理必须要具备的能力。

下面我再通过一个例子，来讲解一下排序阶段几种常见的排序策略。假如，我们使用了 3 种召回策略，分别得到了 3 个商品列表，以及每个商品所在列表中的评分。

这个时候有 3 种排序策略可以供我们参考，它们分别是加权平均法、CTR 动态加权平均法和 CTR 预估加权平均法。接下来，我们就按照实现复杂度从易到难的顺序一一来看。

首先是加权平均法，我又叫它综合加权平均法。 加权平均法是统计领域内常用来综合指标的基本方法，它的计算方法最简单。以商品 A 为例，我们根据专家经验，预先定义三种召回策略的权重：0.4、0.3、0.2，然后结合上面的评分列表，让商品的权重分别乘上每一种策略的权重，再除以策略权重之和，就能得到商品的评分。那么，商品 A 的评分就是：(0.9⋆0.4+0⋆0.3+0⋆0.2)/(0.4+0.3+0.2)=0.4。同理，我们能够得到其他商品的评分，按照字母顺序分别是 0.62、0.66、0.29、0.09。

最终，根据分数排序，我们可以得到：C>B>A>D>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 等为核心指标衡量用户价值。

小结

今天，我们讲了推荐系统的工作流程，以及产品经理在推荐系统中需要具备的能力和工作职责。为了帮助你理解和记忆，我总结了一张思维导图，放在了下面。

除此之外，我还想再和你强调一下，作为产品经理，我们要重点掌握推荐系统各个环节的工作内容，每个环节用到了哪些技术，以及它们的原理。通过理解它们，来进一步掌握建设推荐系统时一个优秀产品经理必备的能力和工作职责。

课后讨论

如果立足于你现在的业务场景，让你牵头建设一个推荐系统，你觉得对你来说最大的挑战是什么？

欢迎把你的答案写到留言区和我一起讨论，我们下节课见！

25 | 推荐类产品（二）：从0打造电商个性化推荐系统产品

你好，我是海丰。

假设，你是一家电商平台公司的产品经理，公司经过一年多的供应链打造和用户运营的投入，业务已经发展到了一个高速增长的阶段。

但问题也随之暴露了出来：之前产品首页是人工配置选品的，每个用户在浏览 App 的时候，看到的都是千篇一律的商品。这种无法体现用户对于商品兴趣的偏好情况，不但削减了用户的体验，也没法让供应商满意，因为随着接入的供应链多了起来，供应商也希望自己的商品能有更多的曝光。

为了尽快解决这个问题，老板决定让你牵头打造一个个性化电商 MVP 推荐系统 （Minimum Viable Product，最小可行性产品）。已知，推荐系统的建设可以分为 4 个重要的阶段，分别是需求定义、数据准备、技术实现和评价标准。

那么，每个阶段产品经理都要做些什么呢？接下来，我就和你详细说说。

需求定义

在需求定义环节，我们最重要的工作就是产出需求文档。具体来说，产品经理需要做的有 3 件事，分别是交代需求背景、描述交互逻辑，以及明确预期目标。下面，我们一一来说。

1. 构建需求背景

在需求背景部分，我们要重点交代清楚为什么要建设推荐系统，让协同部门能够理解背景，和我们对齐这个项目的价值。一般来说，我们会和业务方进行频繁沟通，发掘他们最核心的诉求。那么，今天这个例子中的核心诉求其实就是要展现所有用户对商品的偏好，避免“千人一面”。

2. 描述交互逻辑

接下来，我们要对推荐系统的交互逻辑进行描述，主要包括描述用户的动线流程、模型诉求和产品功能上的逻辑。

因为我们这次构建的是 MVP 推荐系统，所以不需要通过算法模型来实现所有的推荐逻辑，而是分成两部分，一部分通过算法进行推荐，另一部分通过运营系统配置进行推荐。

那再说回到这个推荐系统产品的交互逻辑上。

首先，当用户进入商品主页的时候，推荐系统会检查是否已存在当前用户的画像信息。如果存在就获取用户的商品偏好标签，执行商品召回的算法逻辑，如果不存在就把运营系统配置的商品数据展示给用户。

然后进入商品召回模块，由于只需要打造一个 MVP 的推荐系统，因此我们只设计一种召回策略就可以了，如“基于协同过滤的召回策略”。这样，推荐系统就不涉及多路召回融合的问题，在产品需求中也就不用涉及“排序阶段”的需求了。

所以我们直接进入“调整阶段”。这一阶段，推荐系统需要通过规则，将算法召回的商品列表和运营系统配置的商品列表进行融合。常见的运营配置有，商品在第一周上新期内需要在展示列表中置顶等等。

最终，推荐系统会将融合后的商品列表展示给用户。完整的交互逻辑如下，你可以看看。

3. 制定预期目标

最后就是制定电商推荐系统的预期目标了，这个目标是根据业务的实际情况而设定的。有了目标就要有衡量目标的指标， 虽然大多数推荐系统的衡量指标都是 CTR，但我建议你从业务的建设阶段来设定衡量指标，就像我上节课讲的那样。这里，因为我们的业务发展属于成熟阶段，所以设定的衡量指标为 CVR。

总的来说，产品经理要能够清晰地设计需求，需求定义要明确需求背景、描述交互逻辑，以及制定预期目标，那么如何做才是清晰的设计需求呢？我为你准备了一份推荐系统需求模板，你可以作为参考。

数据准备

接下来是数据准备阶段。在推荐系统中，如果用户在某个环境下对某个商品做了某种操作，我们就认为这个操作表达了用户对这个商品的兴趣偏好。推荐系统要做的就是挖掘这个偏好，然后给这个用户推荐相同偏好的其他商品。因此，数据对于推荐系统是非常重要性。我们要做到的就是在搭建推荐系统之前，完成大量数据的收集和整理工作。

这些数据的来源一般包含三类：业务数据、埋点日志和外部数据。并且每个来源的数据都有着详细的数据分类，这些数据会应用于机器学习的离线预估模型训练和实时模型预估计算。具体内容我都总结在了下面的表格中，你可以看一看。

像是“用户数据”、“商品数据”和“上下文环境数据”本来就是存在于数据库中的，产品经理只需告诉算法同学数据源在哪里即可，后续算法同学会自行抽数。我们唯一提前要进行收集的就是用户的前端埋点日志，如果系统之前没有做过埋点，那么势必会影响推荐系统的准确性。

因此，在搭建推荐系统之前，我们要通过埋点尽可能地收集用户的前端行为日志。

那么问题来了，我们都需要埋哪些数据，把它们埋在哪些页面呢？这需要产品经理根据自己对业务的理解，整理出一套页面埋点文档，为算法同学提供数据支持。虽然根据业务的不同，具体的埋点策略会有差别，但我还是根据经验梳理出了一些用户行为与商品信息的数据埋点字段，供你参考。

首先是用户行为数据埋点字段：

然后是商品信息数据埋点字段：

有了数据之后，算法同学就可以根据数据建立特征工程，然后我们就可以进入到模型构建的环节了。

技术实现

从项目管控上来看，在推荐系统的项目建设过程中会涉及两波技术团队，分别是算法团队和工程团队，他们是并行进行的。 算法工程师在构建模型的同时，研发工程师也在进行系统功能的开发，最终系统工程与算法模型会通过 API 接口进行通信，这需要双方提前约定好接口协议。因此作为产品经理，我们除了要关注算法同学的模型构建，同时也要关注推荐系统工程的整体设计。

具体来说，对于系统工程的整体设计，产品经理要关注推荐系统进行一次完整推荐会涉及哪些系统模块，它们和算法模型是怎么交互的，数据流向什么样，产品的关键逻辑是在哪个模块中实现的。

下面，我们就来看下工程系统和算法模型的数据架构图，图中的箭头都是数据流向，方向是从左往右。

从架构图中，我们可以看到工程系统在进行推荐的时候，先后经过 3 个模块分别是召回模块、排序模块和调整模块，每个模块都调用了算法模型对应训练好的机器模型提供的服务。

在召回模块中，系统调用了算法模型的“离线召回模型”和“实时召回模型”，它们都做了哪些事儿呢？

首先是实时召回，实时召回模型根据历史的用户行为数据，集合当前用户实时的浏览行为，计算并更新用户召回商品的列表信息。实时召回的计算是秒级运算，比如你在京东 App 上搜索华为手机后，Feed 流就会推荐给你很多其他品牌手机。

离线召回则是每天通过定时脚本触发模型的计算，如全量更新用户的偏好信息，计算热度榜单等等不要求实时性的数据，这些数据会被存储到数据库中。这样，当工程系统调用某个用户的召回商品列表的时候，推荐系统直接查询数据库就能得到，不需要再计算一遍，从而提高了系统性能。

说完了召回模块，下一个是排序模块。 排序模块就比较好理解了，推荐系统会直接调用模型提供的排序服务。这里我们需要注意的是，在系统工程中排序服务可以通过规则（如加权平均、CTR 动态加权平均）的方式实现，也可以基于机器学习模型的 CTR 预估方式实现。至于，具体选择哪种技术策略，我们根据业务现状和技术驾驭能力来决策就可以。

然后是调整模块，调整模块是对排好序的商品列表进行运营策略上的调整，它和业务规则强相关，我们就不做过多介绍了。最后，推荐系统会把最终的商品列表返回给产品客户端。

这样，整个工程上的数据流向我们就讲完了，但这只是一个最为简单的 MVP 推荐系统的构建。在实际情况下，技术同学还需要考虑很多非功能性的需求，比如系统响应时长、系统稳定性等等，但产品经理的重点还是要放在“召回”、“排序”和“调整”上面。

评价标准

最后，也是业务方最为关注的，那就是如何评估推荐系统给业务提升了多少效果。评估方法并不难，产品经理可以通过 AB 测试的方式进行评估，推荐系统要想做 AB 测试，有三点我们必须要注意：

第一，推荐系统的工程代码要提前准备两套实现方案，一套千人一面，一套千人千面；

第二，推荐系统要能进行 AB 测试的切量配置，也就是多少流量流向改造前的系统，多少流量流向改造后的系统，当然这个功能要让系统工程研发同学给予支持；

第三，为了查看 AB 测试的效果，对比 CTR、UCTR、转化率等指标，我们要生成最终的效果统计报表。但在 AB 测试切量的时候，我们要注意打上流量标志位，标识是哪种方案。这样在统计报表的时候，我们才能分别计算指标，进而比较推荐系统在原有系统之上做到了多少提升。

除了这三点，我也把做 AB 测试时常见的几个错误总结在了下面，你在做 AB 测试的时候要尽量避免。

这些其实还不是我们做 AB 测试的难点，实际的难点在于产品经理对指标的分析过程，以及最终给出的迭代计划，下面我们就来详细讲讲。

因为我们的业务比较成熟，并且业务方的 PKI 是 GMV（Gross Merchandise Volume，成交总额），所以我们选用了 CVR 作为推荐系统的衡量标准。CVR 的计算方式是转化数 / 点击数，也就是最终点击商品并且购买的转化率，它通常在广告领域用的比较多。这个指标和最终的 GMV 直接相关，所以也受到业务方的重点关注。那么，对于得到的指标，我们该怎么分析呢？

下表就是推荐指标的汇总，我们按照 0~3、3~6、6~9 对商品进行了分段。

对比之下，我们可以看到，“传统方式”的 0~3 分的长尾商品没有曝光，这是因为我们之前一味地追求 GMV，所以运营同学对于低评分的长尾商品不做展示，把所有资源都倾向于头部品牌商的商品，让中小商家在平台上无法生存。因此，从长远的角度来看，一味的追求 GMV 并不健康。

除此之外，在对于推荐系统的迭代计划中，产品经理至少还要对不同人群、不同位置设置不同的评价指标，最后再综合所有的评估指标来优化整体数据指标。具体操作时的注意事项，我都总结在了下面的表格中，你可以看看。

小结

今天，我带你一起走完了一个个性化 MVP 推荐系统构建的全流程。这其中，产品经理需要关注的内容可以从三方面概括，分别是能力、技术和岗位。

能力可以总结为三点：

第一，我们要能够清晰地设计需求：需求定义要明确需求背景、功能描述，以及预期的收益。

第二，我们要能够理解数据：在推荐系统的数据准备阶段，产品经理要关注用户前端的埋点日志，提前设计埋点，以及给研发工程师提需求收集行为日志。

第三，我们要能够对通过 AB 测试来评估推荐系统的效果，然后做出分析再给予持续的迭代计划。

关于技术，我们要重点掌握推荐系统中召回和排序模块的策略。 这不仅包括我们这节课说的，工程系统进行一次完整推荐的时候各个系统模块的工作原理、交互逻辑，还有我们上节课讲的常用协同过滤算法和相似度算法的原理。

关于岗位，无论你要转型成为哪类产品经理，都要时刻关注目前互联网公司中的招聘。对于推荐产品岗位，除了要知道我们今天讲的内容，你还要注重积累推荐策略、推荐效果数据分析，以及产品的优化升级方面的经验。我在下面列举了一个市场上推荐产品经理的 JD，你可以参考下。

最后，今天的内容比较多，为了帮助你理解，我梳理了一个知识脑图，你可以利用它查缺补漏。

总的来说，推荐系统是一个需要长期根据效果进行迭代的产品，产品经理要能做到以“Zoom Out”的眼光看待系统的长远发展。因为极有可能，系统在上线初期的效果，反而不如传统运营的手动配置策略，但是作为产品经理，我们要有信心，并且要能通过持续的 AB 测试分析和迭代来逐步优化它的最终效果。

课后讨论

结合你所处的业务场景，对于推荐系统的评价标准，你觉得哪些评价方法更为适合？

欢迎把你的答案写到留言区和我一起讨论，我们下节课见！

26 | 预测类产品（一）：用户复购意向预测的底层逻辑是什么？

你好，我是海丰。

一天，你们公司的运营同学来找你“诉苦”说：“哎，现在 618 和双 11 的活动真是越来越难做了，很多用户都只是在促销期间薅一次羊毛，之后就再也不消费了。我们的运营成本越来越高，公司的 ROI（投资回报率）却不见提升。看来，我这个月的奖金又要泡汤了。”

听了他的话，你发现解决这个问题的关键，就是提升用户的复购意向也就是用户复购率。那么，作为产品经理，我们该怎么帮助他解决这个问题呢？

如何理解复购率？

刚才我们说，解决这个问题的关键就是提升用户的复购率。为什么这么说呢？别着急，我们先来学习几个基本的概念。

首先是复购，复购简单来说就是客户重复购买商品的次数（购买次数 ≥ 2）。有复购就有复购率，复购率 = 重复购买人数 / 总购买人数。一般情况下，业务同学在计算用户转化（用户转化体现在精分维度就是销售额）的时候会用到复购率这个指标，它的计算公式：销售额 = 流量 × 转化率 × ARPU（客单价） × 复购率。

其次，我们来了解一下什么是盈利：只有当用户的消费金额大于商品成本以及获客成本的时候才叫盈利。举个例子，你们公司售卖的商品是帽衫，它的客单价是 100 元，成本是 50 元，而你们的获客成本也是 50 元。这个时候，如果有 100 个新客户进来购买了商品，你们盈利了吗？显然没有。但如果这 100 个新客户中有 50 个人又进行了二次购买，这个时候你们就是盈利的，因为这一次你们的获客成本是 0 元，盈利了 2500 元。

因此，提升复购率就是在提升商家的盈利能力。 那我们该如何提升用户的复购率呢？

如何提升用户复购率

根据公式：复购率 = 重复购买人数 / 总购买人数，我们知道，提升复购率的重点就在于想办法增加复购人数，而提升复购人数的基础就是做用户生命周期管理。这是因为，要想提升复购人数，我们就要了解哪些用户是可以成为复购用户的高潜用户，而发现高潜用户的前提则是对用户进行分层。

更具体点来说，产品经理只有了解业务发展各个时期的用户特点，才能保证在不同阶段制定出适合的产品策略，来激发新用户的加入、激活老用户的复购，进而提升客户的转化和留存。

也因此，对于产品和运营同学来说，如果理解和掌握了用户生命周期管理的底层逻辑，再把它应用在自己的产品上，就能在很大程度上拉升各方面的产品指标。同时，这项能力在市场上也非常稀缺，我也希望它能成为你面试和工作上的助力。

接下来，我们就来讲一讲用户生命周期的基本概念，用户周期管理的具体操作，以及根据用户生命周期管理来制作用户复购模型的底层逻辑。

什么是用户生命周期？

如何定义用户生命周期呢？我们以电商平台为例，像京东这样累计了近 10 亿用户消费行为的电商平台，可以根据用户在商品品类上的历史购买行为的变化，通过规则将用户划分为低潜期、高潜期、引入期、成长期、成熟期、衰退期和流失期，如下表所示。

我们可以基于如上的分层规则对用户生命周期进行划分，也可以根据我们第 15 讲中基于聚类分析的方式发掘用户价值分层 RFM，来最终定义用户的生命周期。

为了直观地表示用户生命周期，我们可以构建一个坐标系，它的横轴是用户使用电商平台的时长，纵轴是用户价值，根据用户行为和品类关系，我们可以绘制出一条曲线。具体的示意图如下：

用户生命周期示意图

最终，沿着这条用户生命周期曲线，我们可以把用户分成三大阶段六大时期，具体的划分情况如下表：

如何管理用户生命周期？

知道了什么是用户生命周期，那什么是用户生命周期管理呢？

所谓用户生命周期管理，其实是一套通用的运营体系。具体来说，就是在用户接触产品到离开产品的整个生命周期中，通过数据分析，以及一些运营手段来提升各阶段用户的价值。比如，对高潜用户做转化策略，对流失用户做挽留策略，最终的目的都是提升平台用户的“正向跃迁率”，也就是其他阶段用户向成熟期阶段跃迁的比率。

当然，很多产品和运营同学经常会进入一个误区，那就是将促销力度过度聚焦于成长、成熟期的“高净值用户”。这样很可能造成“僧多粥少”，以及单客户竞价过高的局面。那么，基于生命周期模型更科学的分析视角是，跳出“阶段红海”（成长期和成熟期的用户），进入“阶段蓝海”（非成长期和成熟期的用户）。 为什么这么说呢？

用户生命周期运营重点

从上面图中我们发现，成长、成熟阶段也就是阶段红海的用户购买转化率较高，毫无疑问它们是平台大盘运营上的重点。其他蓝海阶段的 GMV 比较低，如果生命周期模型针对阶段蓝海的用户的运营，就可以很显著提高用户的复购转化。并且，在用户竞价不变的前提下，转化“阶段蓝海”的用户才能让品类投放实现更大幅的 ROI 增长。

所以，我们此时应该做的，就是提高“阶段蓝海”的用户跃迁率，将营销视角拓展到全量的“未来高净值用户”，这样电商平台中的品类或品牌会获取更多细分人群上的差异化竞争优势。 这一步也叫做提升平台用户的正向跃迁率。它的公式是：正向跃迁率 = 其他阶段向成熟期跃迁的用户数 / 本次运营的总用户数。

那么，问题又来了，像京东这样大的电商平台，在运营实践的过程中，我们往往会发现原来的低高潜用户基数庞大，所以在分析人群结构和圈选人群的时候就会非常困难，那该怎么精准地对“阶段蓝海”用户做运营呢？更进一步来说，我们该怎么对“阶段蓝海”用户做复购策略，提高他们的复购率呢？

提升用户复购

一般来说，我们会针对高潜期和引入期的用户做复购，因为处于这两个阶段的用户在“阶段蓝海”的用户中最容易形成复购。选定了人群，接下来我们就要找出有哪些因素会影响用户的购买转化。具体来说，我们可以从两个方面来考虑，分别是用户维度和商品维度。

首先，用户维度方面的影响是指，不同用户的性别、年龄、喜好、月收入、网购习惯等会影响用户对品类的复购行为。我们可以从用户画像和用户偏好来考虑。比如说，大部分女性客户对自己喜爱品牌的服饰、化妆品、包包购买的频率会更高，而男性用户更容易购买自己喜爱品牌的数码产品和鞋子。

其次，商品维度的影响是指商品的品类不同对用户复购行为的影响。

比如说，小家电、数码产品这种类目属性往往就决定了它们的复购率会偏低，而图书、服装这些类目的复购率则相对偏高。不过，要想准确识别商品品类未来的复购用户并不简单，因为每个类目和客户都有其自身的内在特点。因此，通过数据和算法进行预测用户复购概率的时候，我们往往也会基于特定的品类。

最后，我们构建用户复购模型，也就是找到用户特征与商品品类之间的关联关系，再通过分类算法计算出某个用户在品类下的 CVR。那具体怎么做呢？下节课我们再详细来讲。这节课，我们先理清制作用户复购模型的底层逻辑就可以了。

小结

提升复购率就是在提升商家的盈利能力，想要提升复购率，我们就要做用户生命周期管理。用户生命周期管理告诉我们，在面对增长困难、获客成本增加的情况下，我们要重新梳理用户运营的本质与核心，跳出急功近利的“阶段红海”，而转向细分阶段的“阶段蓝海”，从而海阔天高、破浪长风。

我们首先要做的就是定义用户生命周期，手段有两个：

基于阶段规则定义用户分层，分别是低潜期、高潜期、引入期、成长期、成熟期、衰退期和流失期；

基于聚类分析定义用户分层，也就是基于聚类分析的 RFM 用户价值划分。

在定义完用户生命周期后，我们要对“阶段蓝海”的用户做用户行为分析，构造算法模型，找到预估 CVR 最高的用户。

课后讨论

最后，我想请你想一想，在你的业务场景中，有哪些切实有效的精细化运营手段？

欢迎在留言区分享你的故事，我们下节课见！

27 | 预测类产品（二）：从0打造一款预测用户复购意向的产品

你好，我是海丰。

上节课，我们学习了帮助运营同学提升用户复购意向的底层逻辑，并在课程结尾的时候说了，最终要找到商品和用户之间的关联关系，然后通过分类算法计算出某个用户在商品品类下的 CVR，进而训练模型。这个模型就是用户对商品品类的复购模型，它具体该怎么构建呢？

这节课，我们一起来打造一个预测用户复购意向的模型，来真正帮助运营同学解决问题。

开发流程

机器学习项目开发的一般流程是数据准备、特征工程、模型训练、模型验证，以及模型融合。下图就是一个机器学习项目流水线式的开发流程，我们今天要实现的高潜用户复购模型也是基于这样的流程来构建的。

数据准备

在进行特征构建和模型开发之前，我们需要对数据的情况进行了解，你可以参考第 5 讲中讲过的，产品经理在数据准备环节中需要做的工作。另外，我也总结了本阶段产品同学需要考虑的几个问题：

数据源来自哪里？即数据如何获取，这里包括内部业务数据、跨部门集团内数据、外采数据。

数据量是否充分，是否还要外部数据补充？

数据是原始数据还是加工后的数据？如果是二次加工后的数据，还需要了解数据加工方法。

数据的业务背景是什么，其中每个字段代表什么含义？

数据字段是什么类型？每个字段都属于什么分布？

数据本身是否有噪音，是否需要进行清洗和降维？

...

数据明细

那我们今天要讲的这个案例，它的数据样本主要抽取了“618”之前和之后 3 个月内，匿名用户的购买行为日志数据、用户画像数据，以及是否为复购用户的标签。这些样本数据会以用户行为日志表、用户属性特征表，以及用户复购统计表的形式展示出来。

下面，我们就来详细说说，这三张数据表应该包含哪些信息。这样，当在实际工作中遇到需要构建复购模型项目的时候，你就可以参考我整理的这三张数据样例表了。

首先，我们来看用户行为日志样例表。

其中，用户行为动作取值范围是：0、1、2、3。其中，0 表示点击、1 表示加购、2 表示下单、3 表示收藏。

然后，我们来看用户属性特征样例表（用户画像信息）。

这里我要补充说明两点：用户年龄的取值范围是 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 表示未知。

最后，我们来看用户复购统计样例表。

这里我要补充说明一点：用户年龄的取值有 0 或者 1。其中，0 表示非重复购买、1 表示重复购买，测试集此字段为 Null。

数据处理

有了这些数据之后，接下来我们就要根据这些用户的行为和画像信息，进行数据处理的工作。

我们首先要做的，就是通过整体数据的分布情况，来判断正负样本的均衡程度。在实际开发过程中，我们通常会利用 Python 的 Matplotlib 库来分析数据的分布。下图就是正负样本的数据分布图。

从图中我们可以看出，样本数据的分布是不均衡的。这个时候，我们就需要采取一些采样方法来处理样本数据，常用的有随机欠采样、随机过采样、基于聚类的过采样。

随机欠采样就是减少分类中多数样本的数量，如减少 label = 0 的样本数量，再重新和 label = 1 的样本组合成新的训练集。

随机过采样就是复制分类中少数样本的数量，如复制多份 label = 1 的样本的数量，再重新和 label = 0 的样本组合成新的训练集。

SMOTE 算法是基于随机过采样的一种改进方法。由于随机复制少数样本增加样本训练的模型缺少泛化能力，因此 SMOTE 算法采用对少数样本进行人工合成的方式，做法就是计算少量类别的样本与所有样本点的距离，找到最近的 k 个样本，再通过公式数学公式: xnewj​ = xi​ + rand(0, 1) ∗ (xj​ − xi​) 生成新的样本。

当然，影响复购的因素不只有整体数据分布的影响，还有如店铺、用户、性别、年龄等因素。因此在实际的开发中，我们还需要逐一对采样样本中的每一个因素进行数据可视化操作。如果发现样本数据不均衡就重复刚才的操作，如果处理不了就只能放弃了。

在处理完不均衡样本数据分布之后，我们还需要查看采样数据中各因素的缺失值情况，比如查看年龄值缺失的情况、性别值缺失的情况，或者用户行为日志数据缺失的情况。具体的操作同样是通过 Python 程序进行分析，具体代码产品经理不需要过度的关注，我也就不再详细说了。

特征工程

接下来，我们就可以开始构建特征工程了。特征工程的构建流程我们在第 06 讲已经讲得很清楚了。简单来说就是，对数据准备环节中抽取出来的样本数据进行数据清洗、特征提取和特征选择，并最终构建好用于模型训练的训练集和测试集数据。

下面，我们就对复购模型进行关键的基础特征和统计特征的抽取操作，数据特征抽取的思路可以从三个角度进行。

统计用户历史行为：对用户历史行为按照 userpin 进行分组，然后统计用户在所有店铺中，对商品、品类、品牌的购买、点击、收藏和加购等行为的次数。

统计店铺历史行为：对用户历史行为按照 vender_id 进行分组，然后统计所有用户在此店铺上的行为次数。

统计用户在店铺上的历史行为：对用户历史行为按照 user_id 和 vender_id 进行分组，统计每个单独的用户在此店铺上的行为次数。

最终，在复购模型的特征构建中，基于统计次数的特征提取，我们至少能提取出如下表中这些特征信息：

当然，除了简单地统计个数信息，我们还可以基于组合特征以及文本信息进行特征的提取。常见的做法是，把一阶离散特征两两组合构成高阶的组合特征，这么做目的就是提高复杂关系的拟合能力。比如，我们可以把中文、英文这样的语言和电影、电视剧这样的类型，组成“中文电影”、“中文电视剧”、“英文电影”、“英文电视剧”这四个特征。

到此，我们就构建好复购模型的特征工程了，再结合用户对商家店铺的购买标签，我们就可以进行下一阶段模型训练的工作了。

模型训练

首先我们要知道，用户重复购买预测是一个二分类问题，只要是分类问题就是属于有监督学习，所以我们的复购模型就是一个有监督的二分类学习问题。接下来，我们就可以根据提前准备好的训练集数据和测试集数据，通过分类算法进行模型的训练了。

对于算法的选型，我们可以选择之前课程中学习的算法，如逻辑回归、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

其中，第一行数据代表用户的真实情况，第二行代表用户的预测结果。它们对应的混淆矩阵如下：

其中，TP 和 TN 代表模型预测正确，也就是说一共有 9 个样本预测正确，6 个样本预测错误。根据得到的数据，再结合下面的公式，我们就可以得到模型预测的准确率、精确率、召回率和 F1 值了。

然后，我们可以继续来求预测结果的 ROC 曲线和 AUC 面积。

我们先来看求得的 ROC 曲线，它的横轴为 FPR，FPR 越大表示预测正类中实际负类越多。它的纵轴为 TPR，TPR 越大表示预测正类中实际正类越多。我们理想的目标肯定是 TPR = 1、FPR = 0，即图中 (0, 1) 点，所以 ROC 曲线越靠拢 (0, 1) 点，越偏离 45° 对角线，它的效果就越好。

而 AUC 就是 ROC 曲线下方的面积，AUC 不超过 1 且越接近于 1，就说明模型分类的准确度越高。

从这张图中我们可以看到，整个 AUC 面积远大于 0.5 且趋近于 1 ，所以我们可以理解为复购模型是可用的。

小结

这节课，我们一起构建了一个复购预测系统。产品经理需要重点关注的内容可以从能力、技术和岗位这三方面进行总结。

首先是能力，能力也可以分为两方面。

一方面是要掌握用户分层的方法：提升复购的前提是掌握用户分层，也就是我们上一讲说的用户生命周期的定义。无论是策略分层还是模型分层，都是产品经理需要掌握和吃透的，并且你还要懂得怎么去分析用户的“正向跃迁率”。

另一方面是要掌握预测模型的构建：复购模型是一个比较经典的 AI 预测模型，产品经理要掌握模型的整个构建过程和评价标准。

关于技术：对于从事用户预测相关工作的产品经理来说，只要掌握机器学习算法模型的原理就可以了，比如你要做到对逻辑回归、聚类分析、决策树、随机森林等常用算法的理解。

关于岗位：构建复购预测模型一般是对增长产品经理的岗位要求，比如增长策略产品经理。增长策略的核心就是做用户运营，所以，如果你想要从事这方面的工作，那除了我今天讲的产品经理必备的知识以外，用户运营方面的知识你也要去了解。我在下面给出了一个增长策略产品经理的 JD，你可以作为参考。

为了帮助你查缺补漏，我在文稿中把预测类模型要关注的核心知识点总结成了一张脑图，希望你能好好利用起来。

课后讨论

如果公司让你负责一个增长小组的工作，你能给出什么样的规划和实施方案呢？

期待在留言区看到你的思考，我们下节课见！

28 | 预测类产品（三）：从0打造一款“大白信用评分产品”

你好，我是海丰。今天，我们接着来讲预测类产品的打造。我会以小白信用评分产品为例，来教你模拟构建一个大白信用评分产品，从而学习到机器学习在互联网金融行业的产品落地方法。

什么是小白信用评分产品呢？你可以看我下面给出的解释：

小白信用评分：指根据用户在京东的浏览、购物、投资理财、信用产品使用和履约情况、个人信息完整度等多个维度的数据，通过大数据算法，对用户的信用水平给出的综合评估的产品。评分越高表明用户的信用越好，受评用户就可以在京东及京东合作商户享受优惠商业政策。

需要提前声明的是，构建“大白信用产品”的过程中，我们不会涉及任何与小白信用产品相关的内容，你只要学会构建的通用流程就可以了。整个构建流程可以分为四部分，分别是案例背景、特征构建、模型训练和模型评估。下面，我们就详细来说说。

案例背景

开头说了，我们要设计一个大白信用评分模型，那这个模型具体长什么样呢？一个标准的“大白信用模型”由五大维度构成，如下图所示。

第一是身份特质，包括你的实名情况、社会属性、居住环境、教育情况，它们代表了你的出身、社会层次和稳定性，是一个人短时间内不会被改变的特质。

第二是资产评估：通过你提交的收入和资产信息来综合判断你的履约能力，包括社保、公积金、动产和不动产等。

第三是行为偏好：就是通过你的消费、缴费还款、公益活动等行为，判断你的行为特点，比如从消费偏好上看出你消费的高低。这部分数据对产品后续决策有很大的参考价值。

第四是履约信用：评估你在金融产品、电商平台和社会行为表现出来的履约和违约情况，比如看你历史的信用，来判断你的诚信度。

第五是人脉关系：这一步主要是对你的社交关系，人脉丰富程度进行评估。

通过这五个维度，我们除了能够判断一个人的信用到底好不好，还可以结合人的行为偏好来做更精准的个性化推荐。

在建模之前，我们先假设一个信用场景，比如通过“大白信用分”来决定用户是否可以免押金租相机。这个场景就是一个二分类问题。它的核心思路是，计算出用户在“大白信用”5 个维度上的违约概率，然后把它们综合起来计算出一个最终概率，再把它转化成一个实际的得分，也就是这个用户最终的“大白信用分”。

特征构建

接下来，我们就可以从刚才说的五大维度入手，来做“大白信用”评分模型的数据准备了。在做数据准备的时候，这 5 大维度还可以继续拆分成更多详细的分类和数据字段。比如“资产评估”就可以拆分成“固定资产”和“流动资产”等等，示例如下：

当然，在实际工作中，对于产品级数据模型构建来说，上面的数据信息还远远不够，我们还需要增加更多的原始数据和扩展数据。

原始数据就是存储在业务系统中的基础字段，比如日交易额、下单量、点击或搜索次数等原始字段信息。扩展数据是原始数据加工转化后的数据，一般有三种生成方式：按照时间维度衍生，如最近 1 个月或者 3 个月交易额；通过函数衍生，如最大或最小交易额，以及交易额方差；通过比率衍生，如“最近 1 个月交易额 / 最近 3 个月交易额”。

下一步就是对这些特征数据进行处理了。

在真实工作中，特征处理和选择是一个循环迭代、优化的过程，所以在业务前期，我们要尽可能多地抽取数据特征。特征处理的方法可以分为三种，分别是特征的通用处理，数值型特征处理和字符串特征处理。

特征的通用处理

特征的通用处理是我们在拿到特征数据之后都需要做的，包括数据分布分析、缺失值处理与异常值校验。

首先是特征数据的分布分析，我们要先通过数据可视化的方式查看数据的分布情况，然后对分布不均衡的数据采用“随机欠采样”、“随机过采样”或 “SMOTE 算法”进行处理。这和我们上节课讲的一样，我就不再重复了。

其次，对“大白信用评分产品”中的数值型和字符串型字段进行缺失值和异常值检验，我们可以采用补充缺失值、或者直接剔除掉无效字段的方式进行处理。

数值型特征处理

对于数值型特征的处理，我们主要是看特征的 IV 值，因为 IV 值衡量了各特征对 y 值的预测能力。例如，下面是我们对员工工作信息模型的特征相关性排序。

需要注意的是，IV 值并不是越大越好。根据不同场景 IV 值的取值有所不同，实际的场景中，我们可以选择 IV 值大于 0.1 的指标。

除此之外，我们还要对特征进行归一化处理，来消除数据特征之间的量纲影响，让不同指标之间具有可比性。比如交易额和交易次数，这两个指标就没有可比性。我们通常使用的归一化方法有线性函数归一化和零均值归一化。

线性函数归一化也称为最大值 - 最小值归一化，原理是将数据映射到 [0, 1] 的范围内，公式为：x′=Xmax​−Xmin​X−Xmin​​。

零均值归一化的原理是将数据映射到均值为 0，标准差为 1 的分布上，公式为：x′=Sx−Xˉ​。

字符串特征处理

对于字符串特征的处理主要就是对字符串做离散化，也就是将字符串映射到一个个离散的区间中。字符串离散化的目的是将变量数值化，因为数值化后的变量才能应用到数学模型中。

以“身份特质”为例，如果你的学历是硕士，那么我们该如何处理这个字段呢？

如表格所示，我们把 100 分分成 6 段，小学是 0～20，初中是 20～40，高中是 40~60，以此类推，我们直接把字符串映射到一个个的分段区间中就可以了。这里的具体取值按照业务常识设置的，我们只要做到逻辑上没有问题就行了。

模型训练

处理完数据，我们就要开始训练模型了。不过在那之前，我们要先选择算法。因为这是一个二分类问题，所以我们要选择二分类算法，又因为现在是项目前期，所以我们可以选择相对简单的算法模型进行实验，比如逻辑回归模型。接下来，我们就可以按照如下步骤进行操作了 。

我们以“履约信用”维度为例，假设“履约信用”包含的字段有最近一个月需还款金额 x1​，最近一个月逾期金额 x2​，最近一个月消费金额 x3​。根据 LR 公式，我们可以计算得到你违约的概率：P=sigmod(y)=1+e−y1​=1+e−(ax1​+bx2​+cx3​))1​。

其中，P 为用户违约的概率，a、b、c 为逻辑回归模型的拟合系数。

通过这个方法，我们依次计算出 5 个维度（身份特质、资产评估、行为偏好、履约信用、关系人脉）的概率，分别为 0.1、0.2、0.3、0.4、0.5。然后，我们再假设每个维度的权重都为 0.2，具体如下表所示：

最后，我们还需要将综合概率 P 转化为实际的数值，转化公式为：score=(1−P)×A+B

其中，分数区间为 [200, 1000]，所以 A=800，B=200，然后我们再将上面的综合违约概率带入公式，就能得到你最后的大白信用分了，它等于 760。

当然，真实产品的模型构建过程肯定更为复杂，但它们的核心思想是一致的，都是先划分维度，然后准备每一个维度的数据特征，对它们进行特征处理，构建好训练集和测试集，通过分类算法计算每一个维度的概率分，再通过加权的方式得出综合概率分，最终转化成具体的分数，这就是最终的信用得分了。

模型评估

得到预测结果之后，我们要对模型进行抽样评估。对于信用评分模型，我们只需关注两个重要的指标：混淆矩阵和 KS 值。

比如说，在得到的预测结果中，60 分为切分点，60 以下我们认为会违约，60 分以上我们认为不会违约，我们预测可能会违约的是 180 人，不会违约的是 220。但在实际表现上，违约有 220 人，未违约有 280 人，相应的混淆矩阵如下：

这样我们就能计算出模型的准确率和召回率了：

模型的准确率的计算是：TP+TN+FP+FNTP+TN​=100+20+80+200100+200​=0.75

模型的召回率的计算是：TP+FNTP​=100+20100​=0.83

从结果上来看，模型的效果还是不错的。

相应的，我们还可以将 10 分、20 分、30 分这些分数分别作为切分点，得到一系列的混淆矩阵和对应的准确率和召回率，以及 TPR 和 FPR。我们把每一个切分点所对应的 TPR 和 FPR 相减，得到的最大值就是这个模型的 KS 值。

KS 的具体计算过程，你可以参考第 20 讲，这里我就不多说了。不过，最终 KS 值可以直接通过算法工程师的代码跑出来，不需要我们手工计算。

小结

这节课，我们一起打造了一个“大白信用评分产品”。还是和前几节课一样，想要成为金融风控方面的产品经理，你要从能力、技术和岗位这三方面进行准备。

在能力方面，金融行业的数据比较成熟，所以数据来源很多，这就要求产品经理对于数据源的成熟度和稳定性有把控能力。并且，如果我们想在项目前期尽快赢得客户认可，还要具备良好的沟通能力和快速的反馈能力。因此，相比于数据分析师这样的岗位，我们要注意锻炼自己能够站在产品、公司以及客户这三方角度来分析问题，提出自己的想法。

在技术方面，我们要理解机器学习算法模型。更具体点来说，你要理解逻辑回归、决策树、GBDT、随机森林、神经网络这些常用算法的原理、应用场景和优缺点，具体的内容你可以回顾算法技术能力篇。

在岗位方面，因为互联网金融的核心是风控，而风控领域的产品经理岗位，又可以细分为风控策略产品、系统产品，随着 AI 能力的普及，又有了风控 AI 产品经理等等岗位。如下是一张风控 AI 产品经理的 JD，你可以看一看。

并且，我也把这节课和上节课产品经理岗位之间的区别总结在下表中，希望你能更直观地理解。

课后讨论

在这里，我想请你谈一谈你对“芝麻信用分”和“小白信用分”的理解，他们的分数的取值范围分别是多少，为什么这样设定？

期待在留言区看到你的思考，我们下节课见！

29 | 自然语言处理产品：从0打造一款智能客服产品

你好，我是海丰。

自然语言处理（NLP，Natural Language Processing）可以说是当今人工智能最活跃的垂直领域之一了，它是一种通过机器学习方法对自然语言进行分析和发掘的处理技术。自然语言处理的应用场景非常广泛：

电商平台中的评论情感分析，通过 NLP 技术分析用户购买商品后的态度；

商场的导购机器人通过 NLP 技术去理解用户的语义；

在文本分析、智能问诊、搜索应用中也都有自然语言处理技术的应用。

对于 AI 产品经理来说，我们主要的工作场景，除了有之前讲过的预测类、推荐类和风控类场景，还有自然语言处理场景。今天，我们就来学习一下，怎么牵头建设一款智能客服产品，从而帮助你理解和掌握自然语言处理技术的应用场景、处理流程和基本的技术原理。

我们先来说一下这个需求的背景：为了减轻客服的回复压力，公司现在需要通过 AI 辅助客服回复客户提出的问题，具体的方案是通过自然语言处理技术对客户的问题做语义分析和理解，然后找到问题库中最相近的问题，再把预设的答案回复给客户。

这个过程一共需要 4 个步骤才能完成，分别是语料获取、语料预处理、文本表示和文本计算。接下来，我们就一一来说。

语料获取

想要打造一款智能客服产品，第一步就是获取语料，形成语料库。所谓的语料就是模型的训练数据集，在客服系统中，语料就是客户的提问与客服人员的问答数据，以及用户对电商网站中某个商品的评价信息等等。

获取语料的途径有很多，一般来说可以分成三种，分别是业务积累、网络收集，以及外部采购。下面，我们就来详细说说。

最准确和方便的方式，就是从业务积累的历史语料中直接获取。根据存储形式的不同，我们的获取方式也会不同，主要可以分为以下两种：

存储在数据库中的语料，它处理起来最为方便，我们可以通过脚本直接从数据库中提取

没有进行过电子化，以纸质文件档案的方式存储的语料，它处理起来会复杂很多，需要通过人工录入或者扫描识别等方式进行电子化

为了丰富语料库，一般我们还会补充一些如新闻资讯、维基百科等语料，这些内容都可以从网络上获取。网络上有很多开放的数据集，比如 Wiki 百科数据集、中文汉语搜狗语料、 人民日报语料等等，都可以直接从网上下载。除此之外，我们也可以通过爬虫程序快速抓取网络上的公开语料信息。

但是，也有很多专业的语料集合在网络上都是不公开的，我们只能通过采购的方式获取它们。比如，购买电商行业的评论信息、某专业领域的文献资料，或者旅行行业的游记等等。当然，这里的语料获取会有合规性上的操作，这和我们课程无关，我就不展开了。

在做自然语言处理相关项目的时候，语料集的获取是项目的第一步，也是最为重要的一步，因为它的好坏决定了整个项目的成败关键。那么，咱们智能客服场景的语料主要来自两方面：

专业语料库，用于回答客户的问题咨询

开放的数据集，用于回答客户的闲聊问题

语料预处理

获取到语料之后，接下来就是项目中最耗时、费力的工作，语料预处理了。在实际工作中，产品经理不需要参与语料预处理的工作，但要理解语料预处理的工作流程。

通常来说，算法工程师在项目中超过一半的工作时间都在进行语料预处理，常见的操作有语料标注和数据清洗。例如，我列举的这几条语料就需要进行清洗、分词和词性标注。

ｉｐｈｏｎｅ１２的摄像头的分辨率是多少啊 @_@ ?

武汉市长江大桥，是中国第一座横跨长江的桥梁。

北京大学教授正在教授人工智能课程

首先，我们来看语料清洗。

语料清洗，顾名思义就是将无用的噪音内容去掉，只保留对我们有用的主体内容。常见的是通过编写脚本，采用正则表达式匹配的方式去清洗数据，具体包括全半角转换、大小写转换、繁简体转换、无意义符号移除等等。如果是通过爬虫抓取的网页内容，我们还要去除广告、HTML 标签或注释、JavaScript、CSS 代码。

这里，我列举了几种简单、常见的清洗方式，你可以看看：

全半角转换：将在输入法全角模式下输入的内容转换为半角模式的，主要对英文、数字、标点符号有影响，如将“ｊｉｐｉａｏ１２３”全角输入转成半角模式下的“jipiao123”。

大小写转换：统一将大写形式的字母转成小写形式的。

繁简体转换：将繁体输入转成简体的形式，当然考虑到用户群体的差异以及可能存在繁体形式的资源，有些情况还需要保留转换前的繁体输入用于召回。

无意义符号移除：移除诸如火星文符号、emoji 表情符号、URL 地址等特殊符号内容。

清洗完语料之后，接下来要做的就是分词。因为中文语料数据都是短文本或长文本组成的句子，所以我们在进行文本挖掘分析时，需要将这些句子处理成最小单位粒度的字符或者词语。可以使用的分词工具比较多，常见的有以下 3 类：

基于规则匹配的分词方法；

基于统计的分词方法；

基于语义理解的分词方法。

这些方法你了解一下就可以了。除此之外，我还想再补充说明一点，目前中文分词算法的主要技术难点在于“歧义识别”和“新词识别”。比如说：“武汉市长江大桥”，这个句子可以切分成“武汉市 / 长江大桥”，也可切分成“武汉 / 市长 / 江大桥”，如果不依赖上下文其他的句子，恐怕我们很难知道怎么去理解。

分词完成后，我们要对分词后的词性进行标注。词性标注就是给每个字或者词语打标签，主要方式包括普通词性标注和专业标注：

普通词性标注：将句子中的词标记为名词、动词或者形容词等等

专业词性标注：针对特定行业领域的词性标注，如医疗行业、教育行业等等

不过，词性标注可不是我们必需要做的事情。因为常见的文本分类并不用关心词性的问题，但如果涉及情感分析、知识推理等和上下文相关的处理，我们就需要考虑词性标注的问题了。

比如我们案例中的原始句子：“教授正在教授人工智能课程”。

规则匹配词性标注后的分词：[教授 /nnt, 正在 /d, 教授 /nnt, 人工智能 /gm, 课程 /n]

语义理解词性标注后的分词：[教授 /nnt, 正在 /d, 教授 /v, 人工智能 /gm, 课程 /n]

除此之外，我还在下面列举出了实际工作中的词性编码表，你可以作为了解。

文本表示

语料预处理完成后，就需要将分好词的语料转化为计算机可以处理的类型。由于模型只能处理数量化的信息，因此我们需要将已分词的字符转化成编码或向量矩阵的形式，常用的语料特征提取方式是“词袋模型”。

词袋模型是最基础的文本表示模型，我们可以把它看作是一种比较文本之间相似度的工具。那它是怎么提取特征的呢？下面，我们通过一个客户咨询的例子来详细说明一下。

假设，针对手机待机时长这个问题，我们在语料库中预设了三条标准语料（按照常识来说，待机时长这个问题的正确回答中应该有数字。事实上，每条语料都会对应一套回复，比如语料 2 会存在类似“手机的电池待机时长是 x 小时”这样的回复。这样设置语料是为了更准确地比较它和用户的问题的相似度，所以像数值化的信息会被事先清洗掉）。

正好，有一位客户咨询了这个问题：“我咨询一下手机的待机时长”。那么，我们需要做的就是比较客户问题与知识库中哪条语料最相似：

语料 1：“手机是今天快递过来的”

语料 2：“手机的电池待机时长”

语料 3：“手机是双卡双待的”

首先，我们通过分词工具，对用户咨询的问题和语料进行分词。分词后，我们可以得到如下语句：

客户咨询：“我 / 咨询 / 一下 / 手机 / 的 / 待机 / 时长”

语料 1：“手机 / 是 / 今天 / 快递 / 过来 / 的”

语料 2：“手机 / 的 / 电池 / 待机 / 时长”

语料 3：“手机 / 是 / 双卡双待 / 的”

然后，为了计算相似度，我们需要将每一个已分词的语料，通过词频表示为一个个的向量，如下所示。例如“电池”这个词，只在“语料 2”中出现 1 次，我们就标注为“1”，在其他语料中没有出现，则标注为“0”。

根据词表，我们可以得到如下 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−IDF=TF(t,d)×IDF(t)

IDF(t)=lg(nm​)

其中，TF(t,d) 为关键词 t 在语料 d 中出现的频率，IDF(t) 为逆文档频率，m 为语料的总数，n 为包含关键词 t 的语料数量。最终的计算结果如下表所示。

从表中我们可以看出，每个词在每段语料中的权重，于是我们得到了每段语料经过 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)

文本计算

现在，我们已经有了文本向量，接下来需要做的就是计算四个文本之间的相似度。通过前面的学习我们知道，可以利用余弦距离、欧氏距离、皮尔逊相关度来计算相似度。这里，根据得到的向量，我们是使用余弦距离来计算它们的相似度。

计算的过程和我们之前讲的一样，所以我直接把计算出来的相似度结果告诉你。

因此，这三个语料和用户咨询问题的相似度的排序就是“语料 2”>“语料 3”>“语料 1”。根据这个方法，我们就能获取和用户咨询问题最相似的语料，然后将语料对应的标准回答反馈给用户了。

小结

本节课，我们通过一个“智能客服”的案例熟悉了电商场景下，一个自然语言处理模型的简单构建过程。当然，这只是一个“雏形”，实际场景中智能客服还包括很多功能，如意图识别、多轮对话、情感分析、信息提取等。不过，它们的核心构建原理都离不开自然语言处理领域的知识。

如果你想成为自然语言处理方向的产品经理，我建议你从技术和岗位这两方面来准备。

关于技术：由于自然语言处理涉足的领域技术非常多，因此你很难掌握所有 自然语言处理 的技术原理，但是对于通用的文本处理相关概念和处理流程，以及它涉及的基本原理你还是需要掌握的，比如说我们今天讲的文本分词、文本表示还有文本相似度计算，我把这些原理和概念都总结在了下面。

关于岗位：因为自然语言处理技术领域目前主要有智能客服、机器翻译、咨询处理、评论分析、智能医疗，所以相关的产品经理岗位也都是围绕这些方向进行招聘的。因此，在选定了某一个方向之后，你还需要去了解这些领域的相关知识。这里，我列举了一个自然语言处理方向的产品经理 JD，你可以作为参考。

课后讨论

我想请你列举几个你所处的业务中，哪些产品功能可以通过 NLP 进行优化？

期待在留言区看到你的思考，我们下节课见！

30 | AI产品经理，你该如何提升自己的价值？

你好，我是海丰。

在平时工作中，产品经理的工作价值其实很难被衡量。因为产品经理既不像技术人员，有算法模型以及工程系统的开发成果，也不像运营人员，有可衡量的运营效果和直接的经济收益。我们能看到的产品经理的产出，只有设计原型和一堆 PRD 文档。这就导致很多时候，产品经理的价值感太低，只是业务部门和研发部门的传话筒，周而复始地“接需求”，把需求转化成 PRD 和原型，再输出给技术部门。

那么，产品经理怎么才能更好地证明自己的价值呢？这节课，我们就来说说 AI 产品经理的三大能力价值，以及具体的提升方法。

数据能力价值

数据是人工智能产品的基础，所以 AI 产品经理首先要具备的就是数据能力价值。换句话说就是，AI 产品经理要懂得利用数据去构建产品，这包括通过数据分析出业务的含义，以及根据数据制定出业务发展中的关键指标等等。简单来说就是要知道怎么分析数据、理解数据和处理数据。

接下来，我就通过一个例子来详细说说怎么分析数据。

假设，你们公司是一家电商平台，入驻的商家可以在平台上卖货，平台会按照佣金比例进行分成。下图就是你们公司和商家分成的波士顿距阵图（BCG Matrix，波士顿咨询集团规划产品的一种方法，旨在体现企业产品品种以及结构适合市场需求的变化），其中横轴代表商家在平台上的销售量，纵轴代表商家在平台上的平均客单价，圆圈大小代表商家给平台带来的利润高低。

如果我只给你 10 秒的时间，你能从这张图中分析出来哪些信息呢？

拿到一张图，我们先看它的结构。从右侧的图中，我们可以看到，销售量在 6000 以上的商家只有三家，其余的都是销售量不到 1000 的小商家。如果我们把商家按照头部（销售量 >= 6000）、中部（6000 > 销售量 >= 3000）和尾部（销售量 < 3000 ）进行划分的话，平台的中部商家数量就是零，也就是说平台的中部商家是断层的。显然，这样的商家结构是非常不合理的，不利于平台今后的供应链发展，因为它太过依赖于头部的 TOP 商家了。

接着，我们来看它的盈利。作为一个健康的业务来说，不能单纯地看 GMV，我们也要看业务的盈利能力。从图中我们可以看出，头部高销量的商家给平台带来的利润极低（因为它的代表利润的圆圈很小），因为平台对于这些商家来说并没有议价能力。

通过分析图中的数据，我们可以总结出平台今后的发展策略：巩固头部商家，同时重点扶持中小型商家。与此同时，平台业务发展的关键考核指标，就应该是平台商家向上的跃迁率，以及商家结构的合理性。

知道了什么是数据分析，接下来，咱们再说说什么是理解和处理数据。

理解数据就是理解数据的属性，数据属性是指数据本身的特征，它包括数据类型、数据质量等不同维度的属性。其中，数据类型有图像数据、文本数据和声音数据，不同的数据类型在工人智能技术中有不同的分析方法和建模方法。比如图像数据一般采用卷积神经网络模型进行处理，文本数据一般通过 NLP 技术处理。

数据质量指的是数据的结构化程度、分布情况、异常情况等，不同质量的数据对于 AI 产品的影响还是很大的。

处理数据就是要懂得机器学习模型构建过程中的数据处理流程，产品经理虽然在实际工作中并不参与数据处理，但我更建议你在项目的初期参与数据的评估，因为这项能力对于产品经理来说在目前市场环境下有着非常大的竞争力。

说了这么多，我们到底该怎么提升数据能力价值呢？

提升数据能力价值，我们主要从理解数据和分析数据入手。理解数据需要我们了解，不同 AI 场景下需要什么样的数据准备，这需要你在实践中进行体会。分析数据则需要你掌握一些统计学和数据分析相关的知识，以及一些数据分析工具（如 Python、Tableau），甚至是一些经济学和心理学。

方向找到了，具体的实施途径就非常多了。我比较推荐的是，你去阅读几本相关的书籍，先系统掌握这些知识的结构，再逐一精进各个核心知识点。这里，我推荐以下几本书。

《女士品茶——统计学如何变革了科学与生活》：了解统计学必看的入门级图书

《独立思考：日常生活中的批判性思维》：批判性思维课程的教科书，从逻辑学、科学方法论等角度介绍正确的思维方法

《京东平台数据化运营》：京东平台的实操案例，介绍了如 App、微信手 Q 等无线流量端，关于优化搜索流量以及提升转化率指标的实践方法

《机器学习》：是人工智能领域的入门教材，数据分析师可以学到一些必备的算法知识

算法能力价值

接着，我们再来说说产品经理和开发人员的配合过程，看看这个过程中，我们该怎么体现自己的价值。

一般来说，产品经理的工作就是以提需求为主，交付给研发人员 PRD 文档，也就是产品经理制定的目标，然后研发工程师实现这些目标。我们发现，AI 产品经理很少参与研发的实现过程。

因此，想在这个过程中提升自己的价值，我认为 AI 产品经理必须要懂算法，至少是浅层机器学习算法，这样才能给算法工程师提出更准确的需求，以及在建模的过程中做好配合工作。具体该怎么做呢？

假设，业务方提出要制作一个用户复购模型，作为 AI 产品经理，我们可以按照如下的顺序进行思考：

确定这个需求的问题分类，比如是分类问题还是回归问题

明确解决这类问题有哪些合适的算法

在同行业进行对比，确定这个需求问题能实现到什么程度

这其实是一个通用的问题模板，具体的问题你可以不断迭代和细化。那么，搞清楚这些问题后，我们就可以接着和开发人员深入沟通具体的需求。总的来说，良好沟通的前提是你要理解算法。

另外，这么做也能让我们在模型构建出现问题，需要延期或者其他资源支持的时候，利用非技术的语言和公司领导以及客户进行沟通，这更容易获得他们的支持和认可。

包装能力价值

很多人在职场都吃了不会包装自己的亏，比如我下面要说的这两个故事。

第一个故事。我在公司里听研发同学晋升述职的时候，提报部门的同事经常会跟我说，这个研发小哥哥的技术能力很牛的，对部门做了不少贡献，价值观也很正，就是表达能力差一些，不太会说出自己的价值，所以职级的评定可能会受些影响。

第二个故事。几年前，新东方年会上一个魔性视频讽刺了一种现象：公司内很多脚踏实地的人往往会输给拿着 PPT 忽悠管理者的“投机者”。从此之后，“在公司里，做事儿的赶不上写 PPT 的”这句话就火了起来。

我们身边其实还有很多这样的小故事，不会包装吃到的“亏”我相信你也深有体会。我知道，有一部分人对自我能力的包装是有偏见的。事实上，随着市场变化、认知升级，包装能力已经成为了每一个职场人都要掌握的能力，它对产品经理来说更是基本素质。

如果我问你怎么对产品包装，你一下子就能想到，可以用大量的文案和营销手段进行宣传。那么对于个人来说，我们应该怎么包装自己，在公司中树立起个人的品牌呢？

美国认知心理学家诺曼提出的情感化设计理论，将情感体验设计分为三个层次：本能层、行为层、反思层。这个理论运用到个人品牌的包装上同样适用。

首先，本能层指的就是外表，比如，很多人就是冲着苹果或者无印良品的极简主义设计才去购买的产品。我们给人的第一印象就是自己的外表和履历，外表就是外貌和衣品，履历就是毕业院校和过往经历。

我们一定不要回避这个问题，在“颜值即是正义”的时代，让别人了解自己，一定是从给别人留下一个良好的个人形象开始的。

其次是行为层，它指的是你在工作中的习惯或者说你个人的标签，比如“靠谱”、“积极”、“专业”、“沟通力强”……事实上，我们身边总是有同事很容易受到领导和其他同事的喜爱，其实就是行为层在起作用。

当别人从形象开始了解我们之后，紧接着我们就要从行为给自己打上一个“标签”，然后不断地向对的人展示对的标签，这样别人才会认为你是有着这样“标签”的人。然后，当公司领导或者同事、朋友有了合适的机会的时候，第一个想到的就是你。

机会只会留给那些能接得住的人，如果说本能层和行为层是创造机会的过程，反思层就是能让你和其他人拉开差距的一层。这么说感觉有点抽象，我来举个例子。

我平时在工作的时候经常会和很多研发同学打交道，比如作为面试官、作为晋升评审委员、作为需求提出方、作为需求承接方等等。一般在沟通的时候，我就能发现我对面这个人的职业天花板在哪里，比如说他在公司会是一个什么样的定位，不出意外的话，他未来的职业生涯能够到多高的位置，这其实都体现在相互沟通的层次上。

比如说，我经常会问面试者一个问题：“你觉得初中级产品经理和高级产品经理的区别是什么？”这个问题，你也可以想一想。

那如果我们从这三层来思考的话，答案分别是什么呢？

如果从本能层来思考，就是当你达到公司的硬件门槛，懂业务、会沟通、善表达，并且有一定的产品设计想法的时候，你会觉得，初中级产品经理和高级产品经理的区别在于，专业能力深耕的程度不同。

如果从行为层来思考，也就是在本能层的基础上，你善于思考和总结，并且会适当地包装自己，不断地输出和迭代自己的知识和经验。这个时候，你可能会觉得初中级产品经理和高级产品经理的区别在于，对业务规划、产品定位，以及用户把控上的不同。

如果从反思层来思考，也就是当你可以捕捉思维认知上的差异的时候，你可能会觉得初中级产品经理和高级产品经理的区别在于，你所能驾驭、影响的领域或者用户的范围不同。

虽然说，每个人的地位和价值都有着天壤之别，不是一朝一夕能追得上的，但是你的思维、认知和眼界会悄悄影响这一切。说了这么多，其实我想说的就是一句话：埋头做事的时候，别忘了抬头讲故事，我们要学会主动把个人“品牌价值”推送到别人面前。

小结

这节课，我们学习了 AI 产品经理的三大必备能力价值，分别是数据能力价值、算法能力价值，以及包装能力价值。

首先，数据能力价值包括理解数据和分析数据。理解数据就是掌握基于数据构建产品的过程，比如，什么场景需要什么数据进行构建，分析数据就是掌握通过数据分析制定业务发展关键指标的能力。

其次，算法能力价值就是通过对浅层机器学习算法的理解，准确地给算法工程师提出需求，能够做到同频沟通，以及在建模的过程中，通过非技术性表达给领导和客户进行汇报。

最后，包装能力价值具体来说就是：可以定位自己，给自己打标签，可以准确表达自己的产出和价值，以及对业务规划和行业发展有一定深度的思考。

除此之外，我还有些职场心得要送给你，总结起来就是善于思考、执行迅速、事事有回应、件件有着落，且超出预期，以及重视稀缺性。作为一个职场产品经理人，这都是你可以提升的关键点。

如果你只是刚刚踏上产品经理这个岗位的新人，我还有几条额外的建议想要送给你。

要有计划、有积累，在寻求公司价值的同时，要对自己个人未来的价值有追求和计划。

学习一些时间管理四象限，一定要重视重要不紧急的事情，新人不要觉得时间多就随意挥霍，你的价值才能决定你的圈子和你的人脉。

要自己定位自己，不要让别人或你的上级定位你，虽然屁股决定脑袋，但你对自己的定位会决定你屁股的位置。

要善于归纳总结和思考，这慢慢会让你和其他人拉开差距。

对于如何提升自我价值这个话题，你还有什么想聊的吗？期待在留言区看到你的故事，我们下节课见！

31 | AI产品经理面试，这些问题你必须会答！

你好，我是海丰。

我们在看大厂或者独角兽企业招聘信息的时候，会发现他们最看重两方面：学历和经历。学历一般是看你的学校是不是名校，专业是不是对口。经历一般是看你是否在行业内的知名公司待过，有没有优秀的项目产出。这是我们进入知名互联网公司最基础的敲门砖。

那么，这是不是就意味着，普通院校出身、没有互联网大项目经验的同学就没有机会了呢？其实也不全是，这要靠一点点的“运气”，比如一些独角兽企业一直没有招到合适的人，业务老大急需要干活的人，而你又恰好在面试的时候表现很好，就很可能顺利拿到 Offer。

不过，这种“运气”并不常有。因为产品经理入门的门槛比较低，所以很多企业会把招聘的门槛设在学历和经历这些硬性指标上。

看到这儿，你是不是有些气馁？难道我之前付出的努力全都白费了吗？当然不是。相比于传统产品经理，AI 产品经理的处境可好太多了。 AI 产品经理有天然的稀缺性，还有专业技术加持，现阶段企业对 AI 产品经理的要求放得比较宽，毕竟目前这方面的人才还是太少了。

因此，如果你想抓住 AI 产品经理岗位现阶段的红利，顺利拿到 Offer、进入大厂，除了要学好我们的专栏，夯实 AI 技术能力，面试环节也是必须要重视的。这节课，我就带你梳理一下 AI 产品经理面试的常见问题和应对策略。

面试官在考察候选人之前，事先都会对岗位进行定义，再决定问你哪些问题。虽然产品经理日常大多数情况下都在画原型、写文档，但面试官并不会考察这些，毕竟意义不大。

那么，在 AI 产品经理的面试过程中，面试官会从哪些角度，来观察考察候选人的哪些基本素质呢？接下来，请你把自己代入面试者的角色，和我一起来参加这场面试实战吧！

过往经历介绍

首先，欢迎你参加这次面试，请先做个自我介绍吧！说说你在上一家公司主要负责什么，你做过的最有价值的一件事是什么？

这几乎是所有面试的开场白，你一般都是怎么回答的呢？我发现经常会有面试者这么回答：“我做了大量调研工作，写了调研报告，然后画了原型图，最后产出了 PRD 文档，经过评审敲定了最终的方案，然后是研发开发，产品上线之后效果还不错。”

类似这样的回答其实没有提供给我有效的信息，因为这样的工作流程不仅和其他人的一样，还没有具体的细节，体现不出来候选人的产品思维和设计能力，甚至还会让面试官感觉你的项目经历是造假的。

那我们该注意些什么呢？在介绍工作内容的时候，你要注意有逻辑、有数据、有价值。也就是说你要注意每件事情发生的前因后果，它们之间的逻辑关联，同时追求真实性，不造假。更重要的是，要更多地展示出自己对工作的认知，在讲流程化工作内容的基础上，提供一些有价值的内容，比如相关项目的数据表现等等。

下面是我给出的一个示例，你可以参考一下。

我在上一家公司主要负责的是旅游品类产品的设计，做了两个重点的项目，分别是用户留存模型和智慧营销模型。

在用户留存模型的项目中，我先基于现有留存数据和用户行为数据进行定量分析，又基于用户调研和访谈进行定性分析。然后，我对用户流失原因进行了判断，提出可能造成流失的原因，并提出了提升留存的备选方案。接着，我就和算法同学沟通各种方案的落地成本，最后进行了实验，确定各个方案的优先级，最终推进了用户留存模型产品的建设，它的数据表现是这样的……

产品行业认知

接下来，请说说你们产品的主要竞品是谁？你认为的行业现状什么样？你对行业未来发展趋势的理解，以及你最喜欢的一款 AI 产品是什么？

这是面试官在考察一个 AI 产品经理除了作为产品功能设计者之外，对所负责产品行业的认知，是否具备一定的行业视野。一个卓越的产品经理一定是能快速讲清楚自己产品在行业中的份额、竞争力和不足，以及市场现状布局和未来走势等等。

想要回答好这些问题，你可以参考专栏第一篇章“知己知彼，AI 和 AI 产品经理”里面的内容，别忘了一定要结合自己的行业现状。

产品案例问题

接下来，就到了这次面试的第一个小高潮，你做过什么产品案例呢？如果我们最近遇到一个这样的问题，业务方希望我们通过 AI 预测有买花需求的用户，然后给他们发 push，你有什么好的想法吗？

这类产品案例问题一般都是招聘部门真实遇到过的问题，面试官并不会真的预期你能在几分钟给出一个完美的答案，他只是在考察你分析、拆解问题的能力，以及结构化思维逻辑的能力。

针对上面的问题，你会给出什么答案呢？如果是我作为面试官，我希望面试者能从项目建设的视角出发，思考和拆解各环节的工作，然后给出每个环节的工作内容、交付物，也就是如下的步骤：

产品定义，做这件事情的背景、价值、以及预期目标都是什么；

技术预研，判断目前积累的数据和沉淀的算法，是否可以达到我们的业务需求；

准备数据，根据模型预研的结果以及公司的实际情况，来帮助算法同学准备数据；

模型构建，产品经理协助算法工程师进行模型的构建，并对最终交付的模型进行验收；

工程建设，产品经理协调研发团队、算法团队，以及其他第三方的资源依赖，推进需求的产品化落地工作；

效果评估，上线后持续对效果进行监控、迭代模型。

基本上，这样的回答就可以让面试官满意了。但如果你是一名高级产品经理，我还建议你可以从业务经验出发，给出一些具有启发性的答案，这会是你的加分项。

AI 技术问题

最后，面试官会考察你一些 AI 技术问题，这和传统互联网公司的产品经理面试有很大的不同。

目前，人工智能领域的岗位细分还没有成熟，很多企业并不会设立 AI 产品这样的部门，面试官很多都是纯算法或数据出身的人，所以在考察你岗位能力的时候，很自然地就会考察你对技术掌握的深度和广度。

因此，你在准备 AI 产品经理面试的时候，也要对技术问题有所准备，具体来说就是你要能回答上来，算法工程师或者数据挖掘工程师的初级技术面试题。

面试官经常会问的技术问题有两类，分别是基础技术问题和算法问题。基础技术问题可能会问什么是特征清晰、数据变换、训练集、验证集、测试集？什么是过拟合、欠拟合、跨时间测试和回溯测试？机器学习的三大类应用场景是什么？算法类问题可能会问，逻辑回归和线性回归的区别是什么？什么是 KNN、聚类分析、决策树模型等等。

小结

如果你已经准备参加 AI 产品经理的面试了，那么我希望你能从 6 方面做好面试的准备，分别是行业知识、项目流程、基础技术、模型评估、经典算法，以及场景案例。我一共准备了 20 道典型的问题，把它们按照分类总结在了一张思维导图里，你可以利用它先来检测一下你各方面知识的掌握程度。

为了方便你进行验证，我把这些问题的考点、思路和参考答案都梳理在了下面，希望你能好好利用起来。

行业知识问题

问题 1：你怎么看待 AI 或者人工智能行业？

考点：考察你对当前人工智能行业发展情况的了解，是否具有预判未来发展趋势和潜在机会的能力。

思路：首先，你需要从全局的角度分析你对 AI 行业现状的理解；其次，最好举一两个当前 AI 的新技术或者新应用来表达你在实时关注这个行业；最后，一定要给出你对这个行业独特的看法。

回答：我认为当前人工智能行业正在逐步从实验室走向工业界。从产业链条上看，AI 主要分为三层，最底层是芯片、云服务等组成的基础支撑层。中间是提供底层 AI 技术的技术层，比如商汤、依图等提供的图像识别技术。上层是应用层，也就是我们最常见的电商搜索推荐，教育行业的 AI 课程。

从应用场景上看，金融、安防、客服是我们目前应用十分广泛的领域。同时，其他行业也在逐步引入 AI 技术。比如好大夫在线，最近就分享了他们如何通过 AI 技术，来进行医学报告单结构化的工作。

在我看来，AI 现在的应用还远远不够，可能 3 年或 5 年之后，AI 必将成为一种基础设施，应用在各行各业，这就有点类似我们 10 年前讨论的移动互联网技术，现在绝大多数行业都离不开移动互联网，移动互联网技术已经成为了行业的基础建设了，那么 AI 大概率也会走上类似的道路。

问题 2：对于业务场景，通过 AI 技术可以做哪些工作来提升用户体验？

考点：考察你对于业务场景的理解程度以及 AI 技术边界的了解。

思路：首先你需要问清楚对方的业务场景是什么，他的用户是谁，用户需要通过这个产品解决的问题是什么，然后再考虑目前的 AI 技术是不是可以有提升点。如果你对对方提供的业务场景不了解，也可以说你们公司或者你了解的某些业务场景，毕竟面试官不是为了套你的方案，而是为了考察你对于 AI 技术边界的了解，和你是不是具有发现需求的能力。

回答：我对您这边的业务还不太了解，不过我之前在一家线上旅游公司工作，我们的模式是直接根据用户搜索结果展示旅游产品列表。但其实我们可以根据每个商品的好评率，对其进行解析，形成一个简单的一句话评论展示在产品列表中，帮助用户进行选择，提高用户点击率。

问题 3：现在市场上有哪些竞品公司，有什么优缺点？

考点：同问题 1，考察你人工智能行业发展现状的了解，以及基于你所处业务的同类 AI 竞品公司的分析能力。

思路：首先，你需要从全局的角度分析你对 AI 行业现状的理解；其次，针对你所处的行业来表达你们的产品技术和竞品的产品的定位、受众，以及优劣势等；最后，一定要给出你对所处行业独特的看法。

项目流程问题

问题 4：你们的模型构建流程是怎么样的？

考点：考察你对 AI 项目构建过程的熟悉程度，类似于传统产品经理建设研发项目的过程。

思路：先回答 AI 项目从筹备到上线的全过程，比如分几个阶段，每一个阶段都有什么角色参与，每个角色需要做什么工作，他们的产出又都是什么。然后再回答 AI 产品经理的完整工作流程是什么，需要参与哪些阶段和具体的工作。

回答：具体的回答，你可以参考第 05 讲。

问题 5：AI 产品经理和传统产品经理的区别是什么？

考点：考察候选人除了对通用的产品能力理解之外，是否熟悉 AI 行业、产业结构，是否了解实现目标的技术手段、算法等等。

回答：具体的回答你可以参考第 02 讲。

基础技术问题

问题 6：什么是特征清洗、数据变换？

回答：数据清洗就是对数据进行清洗，去掉重复值、干扰数据，以及填充缺失值。

数据变换就是将数据处理成方便模型使用的数据形式。比如我们需要使用用户的身高作为模型特征，但是有的数据是用厘米作单位，有的数据会使用米作单位。这个时候，我们就需要使用归一化，把数据的单位统一成米或者厘米。归一化也是数据变换最主要的手段。

问题 7：什么是训练集、验证集和测试集？

回答：训练集是让机器学习的样本集合，用来拟合模型。验证集是模型训练过程中，用来对模型性能做初步的评估，用于模型参数调优。测试集是最终用来评估模型效果的。

问题 8：什么是过拟合和欠拟合？

欠拟合就是偏差较大，指的是模型的预测结果和实际结果的偏差比较大，说白了就是模型预测不准。造成欠拟合的原因可能是特征少或者模型训练不足。过拟合就是方差偏大，指的是模型在一部分数据上表现好，在另一部分数据上表现差。造成过拟合的原因可能是特征过多而训练集不够。

问题 9：什么是跨时间测试和回溯测试？

回答：跨时间测试也叫 OOT 测试，是测量模型在时间上的稳定性。回溯测试是用过去一段时间的真实数据构造出一个模拟的环境（回溯环境），让模型在历史的那段环境中运行，得到历史某个时间点的模型结果。

一般来说，跨时间测试是在模型上线之前就应该要做的事情。回溯测试是指模型已经存在并已经上线了，想要看模型在历史某个时间点的数据表现时候，进行的测试。

问题 10：机器学习的三大类应用场景都是什么？

回答：三大类应用场景分别是分类问题、回归问题、聚类问题。

分类问题又可以分解成二分类问题和多分类问题。二分类问题的预测结果只有两个离散的值，如“是 / 否”"1/0"。多分类问题的预测结果是多个离散的值，如“A、B、 C”。

回归问题的预测的结果是连续的值，如房价的预测、库存的预测。聚类问题是无监督学习，将相似的样本归类在一起，如细分客户、新闻聚类。

模型评估问题

问题 11：你怎么评估模型的好坏？

考点：考察你模型评估指标的掌握程度，回答时要说明模型评估的三个部分：统计性、模型性能和模型稳定性。

回答：模型评估的好坏可以通过模型评估指标进行衡量，模型评估指标包括三部分，分别是统计性指标、模型性能指标和模型稳定性指标。

统计性指标指的就是模型输出结果的覆盖度、最大值、最小值、人群分布等指标。

模型的性能评价指标主要包括混淆矩阵、KS、AUC 等等。通过混淆矩阵，我们就可以得到一个模型的精确率、召回率这些指标，从而可以评估一个模型的区分能力，也可以计算得到 TPR、FPR，从而计算出 AUC、KS 等相关指标。

回归模型的性能评价指标主要包括 MAE（平均绝对误差）、MSE（均方误差）、RMSE（均方根误差）、R 方等。

模型的稳定性即判断模型输出结果，是否会随着时间推移而发生较大变化不再稳定的指标，主要使用 PSI 进行评估。

问题 12：什么是 ROC 曲线？

回答：ROC 曲线是分类算法模型的一种评价标准，ROC 曲线的横坐标为假阳性率 FPR、纵坐标为真阳性率 TPR，计算公式为 FPR = FP / N，TRP = TP / P，其中 P 是真实的正样本数量， N 是真实的负样本数量，TP 是 P 个正样本中被分类器预测为正样本的个数，FP 是 N 个负样本中被分类器预测为负样本的个数。

以一个医院诊断病人为例，假设有 10 位疑似感染患者，其中 3 位很不幸诊断阳性（P = 3），另外 7 位诊断阴性（N = 7），对于诊断阳性的 3 位患者，其中有 2 位确实是真正的患者（TP = 2）。那么真阳性率 TPR = TP / P = 2/3，对于 7 位诊断阴性的患病者来说，也很不幸误诊了一位患者（FP = 1），那么假阴性率 FPR = FP / N = 1/7。

对于分类器来说，这组分类结果就对应 ROC 曲线上的一个点 (1/7, 2/3)，最后，由分类器计算出来的多个点组成 ROC 曲线。

问题 13：什么是 AUC ？

回答：AUC 指的是 ROC 曲线下的面积大小，它能够量化地反映出基于 ROC 曲线的模型性能，AUC 的取值一般在 0.5 ~ 1 之间，AUC 越大，说明分类器性能越好。

经典算法问题

问题 14：逻辑回归相比于线性回归，有什么区别？

考点：考察候选人对于线性回归和逻辑回归的理解。

回答：首先，它们最主要的区别是：逻辑回归解决的是分类问题，预测属于某类的概率；线性回归解决的是回归问题，预测一个连续变量 (如降水量，价格等)。

线性回归使用的是最小化平方误差损失函数，对偏离真实值越远的数据惩罚越严重，容易受到异常值影响。逻辑回归是一种减小预测范围的函数，它将预测值限定为[0,1]间，不容易受到异常值的影响。

问题 15：你能介绍一下 KNN 的原理吗？

回答：KNN 核心原理可以理解为“近朱者赤近墨者黑”，即基于距离的一个简单分类算法。在数据量不多，并且特征都相对单一的业务场景下，很适合选择 KNN 算法（详细内容见 09 讲）。

问题 16：你能介绍一下聚类分析吗？

回答：聚类分析属于无监督算法，是按照个体的特征将数据分类，让同一个类别内的个体之间具有较高的相似度，不同类别之间具有较大的差异性。

K-means 算法是机器学习领域中处理无监督学习最流行、经典的聚类分析方法之一。它是典型的基于距离的聚类算法，采用距离作为相似性的评价指标，待测样本点距离聚类中心的距离越近，它的相似度就越大（详细内容见第 15 讲） 。

问题 17：你能介绍一下决策树模型吗？

回答：随机森林的原理可以理解为“三个臭皮匠赛过诸葛亮”，特点是具有树形结构，可解释性强，直观好理解，而且还可以从结果向上去追溯原因。采用决策树可以更方便地向老板、业务方，或者甲方去解释模型是什么。

比如在金融风控场景下，我们经常通过决策树判断用户的违约风险。决策树在预测用户违约案例上的核心思想是，先获取部分用户的历史数据，历史数据包括过去的信贷数据和还款结果，然后将贷款客户不断进行分类，直到某个节点的样本用户都是同一个类型为止。最后，再对决策树进行剪枝，简化树的复杂度（详细内容见 13 讲）。

场景案例问题

问题 18：请举例说明如何设计一个推荐类的产品。

考点：考察候选人对推荐类产品的召回、排序、调整各阶段的理解。在回答推荐类产品设计问题时，要明确每个阶段的基本策略和工作内容，最好还要了解相关经典算法或模型，比如召回阶段的协同过滤，以及排序阶段的 CTR 预估（详细内容见第 23 讲）。

问题 19：请举例说明如何设计一个预测类的产品。

考点：考察候选人对于预测类产品场景化的落地经验。

思路：首先，根据应用场景不同，这类需求可以分为分类任务和回归任务，比如用户复购模型预测就是分类任务，而酒店价格预测就是回归任务。

其次就是产品经理要站在业务场景下，阐述推进 AI 产品建设的全过程，从数据准备到模型构建，再到模型验收，以及部署上线，各环节产品经理需要参与的工作，以及工作内容和评价标准（详细内容见第 27 讲）。

问题 20：请举例说明如何设计一个自然语言类的产品。

考点：考察候选人对于 NLP 的理解，这个问题面试官会基于具体的场景来考察候选人，比如，如何设计一个对用户评论分析挖掘的产品。

如果是基于这样的场景提问，候选人要先说明 NLP 能做什么，然后再回答其中涉及的具体工作，比如评论挖掘就会涉及用户情感分析、用户标签挖掘、用户评论相似度分析，以及评分质量打分等等（详细内容见第 29 讲）。

课后讨论

如果你真的参加了一场 AI 产品经理的面试，你觉得自己的核心竞争力是什么？

期待在留言区看到你的故事，我们下节课见！

结束语 | 唯一不变的，就是变化本身！

你好，我是海丰，欢迎来到 AI 产品经理的最后一节课。恭喜你，顺利毕业了！

一提到毕业，我总会想起从学校毕业到现在，这一路走来我做出过的种种选择。曾经有很多朋友跟我说：“海丰，你是师范类院校毕业，为什么没有选择当老师呢？而且你也很合适啊！”当时，我是这么回答的“不管好坏吧，我就想体验一把一眼望不到头的人生”。

所以从毕业到现在，我做过研发、产品、项目，也创过业、跑过市场，现在我是京东的高级架构师，未来我又会做什么呢？我也非常期待。

要说在这个不断变化、不断接受挑战的过程中，我有什么心得体会，那绝对是“把优秀当习惯”和“把敏感当习惯”。今天，我想和你好好聊一聊它们。

把优秀当习惯

把优秀当习惯肯定不是口头说说，那有什么判断标准吗？当我做完一件事儿的时候，我会看它有没有突破我的舒适圈、能不能惊艳到我自己。这就是我的判断标准。

我为什么会养成这样的习惯呢？起因是在我第一份研发工程师的工作中，带我的师傅说，看我的代码感觉像吃了“苍蝇”。说实话，当时听到真的很难受，这给了我很大的打击。但是，这也让我之后在对待每一份工作的时候，都试图找到突破口，让自己完成得惊艳。

那回过头来看我写专栏这件事儿，我有没有做到“把优秀当习惯”呢？

作为一个架构师，我本可以在极客时间上讲一门面向研发的技术类专栏，这应该可以很好地迎合极客时间用户中的技术群体。但我并没有这样做，而是选择开设了一门面向 AI 产品经理的课程。这是因为 AI 是一个朝阳产业，AI 产品经理也是一个朝阳岗位，我希望能在现阶段可参考资料不多的情况下，尽自己的微薄之力，给产品经理尽可能多地指导，加快这个行业的发展。

那么，在翻看课后留言时，我看到很多同学是因为想要成为 AI 产品经理才来学习这门课的，也有一些同学只是对这个岗位感兴趣。成为 AI 产品经理固然是我们这门课的目标，但更多地，我希望它能帮助你对这个岗位、这个产业有更全面、系统的了解。

所以，如果要我总结的话，完成这个专栏让我挑战了自己，同时也给那些对 AI 产品经理这个岗位感兴趣的同学提供了帮助。在我看来，这就是把优秀当习惯。

把敏感当习惯

那么，什么是把敏感当习惯呢？

我曾经在网上看到过一个很有意思的小问题：“诸葛亮和司马懿谁更聪明？”有人说是诸葛亮，因为空城计里司马懿中了诸葛亮的计；也有人说是司马懿，因为最后是司马家族赢得了天下。总之，众说纷纭，没有个结论。

不过，其中有一个分析我比较认同，说其实这里面存在一个高阶认知的问题，换句话说就是“你知道我知道你知道”的问题。听起来有点绕，我来解释一下：

第一阶认知：诸葛亮施空城计，所有人都觉得有诈，人这是一个计；

第二阶认知：司马懿识破了空城计，但是他能被魏国重用就是因为诸葛亮，诸葛亮死了，他的价值也就没了，所以他也心甘情愿中计；

第三阶认知：诸葛亮看出了这一点，才敢施空城计。

这就是一个关于认知能力的体现。“认知”这个词，听起来比较虚，往往很虚的词不是三言两语都能讲清楚的。简单来说，当我们说一个人很有格局，其实就是在说这个人的认知层次很高，能看到一般人看不到的东西。

但是认知有个特点：只能从上往下看，不能从下往上看。也就是站在认知上一层的人，能看懂下一层人的行为，但是看不懂比他更高一层人的行为，就像你揣测不到领导的心意，而领导能把你看得一清二楚，所以认知的不同，也让人与人生活在不同的“世界”里。

说到这儿，我想你一定很好奇，不是在说敏感吗，怎么最后说到认知了呢？

因为认知是终点，敏感是起点。这是什么意思呢？而且为什么是敏感，不是敏捷或敏锐呢？每个人由于学历、阅历的不同，对同一个问题的理解深度也会有所不同，因此不是所有人天生就拥有敏锐的视角，这很正常。

但只要我们的思维是敏感的，通过敏感驱动思考，再通过思考驱动学习，最后就能通过学习培养出敏锐的认知力。这是一个潜移默化的过程，需要我们进行大量的练习。不过，只要你坚持下来，这个习惯就会让你受益一生。

聊聊心里话

世界每一天都在变，技术也在更新迭代。我们经历了互联网的变革、移动互联网的变革、大数据的变革，以及人工智能的变革。从中我们不难发现，一个行业的发展一定会经历从技术到产品，再到运营这三个阶段，每一个阶段的工作重心都会有不同。这其实是一个著名的理论——“技术三段论”。

那么，现在的 AI 行业就正从技术阶段向产品阶段过渡，已经有了大批的技术涌现，却缺少可以把这些技术落地的实际场景。接下来，随着 AI 逐渐地产品化、工程化、标准化，AI 技术必将会成为互联网的基础建设，AI 红利也会彻底消失。

在这个不断变化的时代，产品经理一定要有危机感，去提高自己洞察事物本质的能力，找到属于自己的职业竞争力杠杆，尽可能地走在别人的前面。毕竟，唯一不变的，就是变化本身。

好了，这就是我今天想跟你分享的内容。那么，在我们的专栏即将画上句号之前，我想再送给你一句话，我希望你不要把自己的专业当成一种能力，而要当成一种工具。就像我们这个专栏一样，要让它成为你现阶段突破自己的一种工具，别让它束缚住你。

最后，我还为你准备了一份毕业调查问卷，题目不多，希望你能花两分钟的时间填一下。一起走过了这些时间，期待听到你对我和这个课程的反馈和建议！感谢你对我的信任和期待，希望在未来的工作和生活中，你能顺风顺水、随心随意，我们江湖再见！