随着大数据与云计算的发展,我们企业能够获取的数据量越来越大、数据维度也越来越丰富。与此同时,帮助我们挖掘数据、分析数据的工具也越来越强大,比如大家所熟知的各种云平台和大数据平台。在模型算法方面,业界和学界也投入了很多资源来进行开发和迭代,因此各种新的模型和算法源源不断地被开发完善,发展速度非常快。
在这个背景下, 当企业拥有了足够的数据、或者有能力去收集相当数量的数据,智能化运营手段即成为企业增长的一大探索点。
图 1: 企业决策面临从人类做决策到机器做决策的鸿沟
具体来讲,很多企业近年来借助 BI(Business Intelligence,商务智能) 工具,得到了很多有意义的洞察与增长。但由于 BI 工具是由分析师设计,再交由运营人员去使用的分析工具,所以从人力投入与使用场景来看,BI 工具所做出的分析一般不会特别复杂,可能只是一些低维度的比如一维、二维的分析。
相对而言,我们今天所分享的机器学习和人工智能模型所能够处理的数据量之大、维度之高,能够挖掘出的数据与数据之间关系的复杂程度,都远远地超出了我们正常人所能理解的范畴。
比如常见的集成学习(ensemble model)、深度学习、前几年大家所熟知的在下围棋应用中非常成功的强化学习模型、去年大家十分关心的换脸技术背后的 GAN 模型等等。所以我们会面临的一个问题是:如何把这些不好理解但功能十分强大的工具应用到我们的业务体系当中。
今天的分享将围绕这个问题展开,结合团队案例解析模型驱动项目的关键步骤,帮助大家在实际模型操作或项目管理的过程中少走一些弯路。
图 2:模型驱动项目流程
一般情况下,模型驱动项目的起点是一个业务场景或者痛点,比如说大家想解决一个什么样的问题。我们的团队会和需求方进行一个详细的沟通,比如说在业务场景中出现这种问题的原因是什么,有哪些解决方案,开发模型需要那些数据。这些业务角度的洞察,对我们后面的项目部署具有非常好的指导意义。
举例来讲,最近在为来自不同行业的客户做预测模型,尽管不同行业的业务场景各有差异,但抽象后总能发现一些共性问题。比如用户转化率的提升就是不同行业所共同关注的一个关键指标。
有一个家居家装平台的客户,他们通过匹配设计师和有家装需求的用户获得盈利。该平台希望通过智能化分析从平台上筛选出有高意愿去找设计师的用户,以将有限的资源集中到这些高潜用户中从而进行精准运营。总体而言,就是以最少的投入触达最多的高转化率用户,最终提升整体转化率。
现实生活中,大多数行业都有这样一个提升转换率的诉求。
当我们拥有大体方案后,下一步就是进行数据采集。一些提前部署了 客户数据平台(CDP) 的企业,他们的数据已经封装在我们的客户数据平台中。这些标准化后的数据是可以直接使用的。
而对于新的客户,除了数据拉通外,我们还需要进行数据清洗与流程标准化,这个阶段的速度会相对缓慢。
数据预处理是整个建模过程中最耗费时间,也是实现项目成功、确保模型精确度的关键一步。
以零售行业为例,假设某零售客户希望能够预测哪些用户会到店购买,或者预测他们未来会购买哪个品牌、哪个品类等等。
通常情况下,我们所采集的零售数据都是一些交易数据,这些数据记录了一笔又一笔的用户消费信息。我们要做的是预测未来哪些用户会产生购买转化行为,而过往的用户消费数据可能蕴含着这些信息。因此我们需要把这些交易数据转化为用户特征和商品特征,以便输入到我们的预测模型中。
在预测哪些用户可能会转化的场景中,我们通常采用 1 或 0 的二分类模型。
当场景比较复杂、牵涉到种类较多的商品或物品时,我们可以做一些多分类模型深入展开。比如做电商平台的购买推荐时,面对过多的商品种类,可以通过个性化推荐实现“千人千面”的推荐效果。
基于以上四个步骤初步搭建好模型后,我们需要做很多的离线检验以进行模型验证。
整个过程结束以后,我们会对验证后的模型做一些画像,以更好地理解模型背后的逻辑。同时,模型画像也能够帮助我们确定整体的营销策略。
至此,大家对这个模型也有一定程度的了解、精度也能得到保障,模型就可以上线了。上线后,我们也会在线上做一些相应的检测,并把整个流程固化下来,使它变成一个自动化模型产品。同时,我们也会依照业务的需求以一定的节奏让模型保持自动更新。
在 现有客户中,他们的预测模型每天都在自动更新。在这种情况下,客户就能够通过这个模型实现源源不断的输出,赋能相应的业务场景。
图 3:建模的业务目标
一个成功的技术模型,往往是商业洞察、数据、算法三者相互作用的结果。业务目标决定了我们需要采集什么数据、使用什么算法、做什么验证以及制定什么策略。总而言之,业务目标是一个根本性的驱动因素。
业务场景通常来说是多种多样的,因此我们需要根据客户的需求对建模过程进行一些微调。
对于用户运营的同学,他们可能需要拉新、留存、预测流失用户并作出预警;对于业务前端的同学,他们需要制定合理的定价策略并进行促销;对于负责广告业务的同学,他们需要评估广告渠道的效率,以此产生一些关于营销组合的洞察,便于制定下一阶段的广告预算和分配策略。
还有一些与供应链相关的场景,比如订单评估不准确导致库存积压或商品脱销。这时我们就需要更精确的需求预测来构建一个更加理想的供应链,把合理数量的商品在合适的时间运送至正确的地点。
3.2 模型和算法选择
图 4:选择模型和算法
选择算法的第一步,是明确选择算法的目的,即从数据中提取有效的信息。因为算法是不会自己生成信息的,所以我们只能从数据中提取。
那什么是有效信息呢?这里的有效是针对业务目标而言的。一般情况下,业务需求和我们所给出的解决方案,基本上就决定了我们所要选择的算法类型。比如简单的分群分类、预测或是个性化推荐场景就分别对应了序列决策(Sequential decision making)、强化学习等算法。
值得注意的是,选择模型和算法的时候需要我们在准确性与可解释性之间做一个平衡。通常来讲,如果我们做的是预测模型或者分类模型的话,会更关心准确性;而归因模型最终的目的是对哪些因素起作用哪些不起作用做说明,这时模型的可解释性则更加重要。
图 5:从简单到复杂
在建模的初始阶段,我们会优先尝试一些相对简单的模型,比如说线性模型,这样方便我们作出解释。
其次,考虑模型的可拓展性。由于当前用户行为数据呈现指数级增长,我们需要结合平台运算能力与模型结果实施来进行这方面的考虑。
总的来说,算法模型多种多样,可选择的余地也非常大,但当我们从这几个维度进行考量后,可选择的范围就会相对的缩小。
3.3 特征工程与选择
算法的目的是从数据中挖掘有效信息,因此我们用来拟合算法的数据应该要包含尽可能多的信息和预测能力
我们曾经做过一个预测模型用来预测哪些用户会到商店进行消费。在这个模型中,因变量是用户是否会到店购买的这个行为,但由于我们预测是的下一周/下个月/下一季度的购买情况,所以因变量还需要从用户行为周期或最终营销执行策略等角度进行调整。
至于自变量则需要考虑能够影响用户消费行为的因素。具体一点来说,就是找到具备预测我们所需解决事情能力的信息,并且把信息中具有预测能力的变量抽离出来,再放到我们的模型当中。
比如性别、年龄、教育程度、收入等基础的用户特征;又比如品牌、是否打折品类等商品特征。对于零食类商品而言,口味也是影响用户购买行为的重要因素。
其次,用户过往行为和线上行为也会蕴含大量的信息。比如说我们营销中常用的 RMF 维度、用户忠诚度、会员身份、是否参与打折消费以及用户过去的商品浏览、收藏点赞等行为等等。这些数据能够极大地提升我们的模型预测表现。
在个性化推荐场景的特征工程中,我们需要推测用户会对什么样的产品更感兴趣。如果我们能把包含用户兴趣的特征放进模型中,模型的表现也会更好一些。
除了预测模型中所提到的基本的用户与商品特征外,还需要结合场景思考用户可能感兴趣的商品品类。比如节假日会影响用户的购买兴趣;对于内容平台而言,终端或者所处网络状态都会影响用户的浏览偏好。同时,社交网络也是影响用户购买的一大因素。用户的邻居、朋友、同事等等的兴趣行为很大概率会反映到用户身上,这些都从另一个角度为我们提供了分析用户购买兴趣的线索。
其次,在个性化推荐商品的场景中,我们常常面临着冷启动的问题。一些新的用户,由于缺乏关于他们的足够量的行为数据,导致我们对他们所知较少。这时,我们可以借助比如地域等其他信息来洞察用户。
举个例子,用户的口味可能与所处地域有着一定的相关性,像南方的用户可能更偏好于清淡或者偏甜的食物;新客户大概率青睐一些普遍卖得比较火的、受到大家喜爱的热门商品,或者一些打折力度较大的商品。
当然我们也存在一些比较特殊的场景。在一般的电商平台上,如果我们推断用户对某些商品感兴趣,那我们就可以直接进行推荐。而对于婚恋网站来说,它存在一个双向性的问题,即只有双方都具备好感时,才算是推荐成功。对于运营商客户,它们也存在一些特殊的限制,因此行业和平台的特征也是我们在选择算法时所需要考虑的因素。
整个流程下来,我们其实没有谈到非常技术的问题,主要是通过业务知识或领域现状来判断哪些特征对我们有所帮助。
基于这些判断确定数据后,我们可以做一些 EDA 的探索性数据分析。这些分析可以是简单的、低维的,也可以是一些相关性(correlation)或者简单的线性回归,通过单维的模型来帮助我们判断哪些特征更加具备预测能力。
最后,我们需要完成对模型的校验。最终的校验模型将会为我们提供更多有用的信息,比如说哪些特征会有用、而哪些特征会没用。
3.4 检验模型
模型检验通常来讲有两个目的,一是验证模型的准确性,二是解决模型的稳定性。通常而言,我们是根据某一样本来建立模型,但如果我们拿出另一个样本,模型的效度是否能够得到保证?
另外,如果这个模型对当月数据有效,那到下个月是不是还能保持大致程度的准确性?这就是我们需要解决的问题。
在衡量算法模型项目的准确性时候,通常会用到技术指标和商业指标:
不同类型的模型会有一些技术指标,相信大家都非常熟悉。
做模型的最终目的是给业务带来增长,因此商业指标在某种程度上要比技术指标更重要。比如说看一下 CTR(Click-Through-Rate,点击通过率)或是引入模型后带来的营收增量等指标。
通常情况下,我们是在离线环境下训练模型,这就意味着在模型上线后,需要检验模型在线上环境的运行情况及效果,所以我们也会有一些对应的检测方法和手段。
A/B 测试是我们比较熟悉的检测方法,更复杂的还有交叉验证、In-time testing 和 Out of time testing。这些都是基础模型常用的检测手段。
当然相比于常见的预测模型,还有一些比较特殊的模型,比如说时间序列,它不是由独立的数据点构成,里面有一个持续性的问题;又比如强化学习场景,它的输出是一个比较长的动作序列,在我们的历史数据中根本不存在。这些模型的测试方式是一个非常有意思的问题,也是学界和业界研究很多的一个问题。
图 6:用技术指标检验模型效果
如图 6 所示,当我们在做二分类或者多分类的问题时,可以跑一下历史数据,用我们的模型来为用户排序分组,区分高概率转化的用户和低概率转化的用户。比如说我们排序前 10% 的用户,如果能覆盖 40% 转化的用户量,这样子我们大概会产生 400 的 lift。而像 ROC curve 或 AUC 这样的指标会对我们评估模型表现具有比较好的指导意义。
图 7:用商业指标检验模型效果
图 7 从商业指标的角度反映我们的模型效果。我们在第一部分提到的家装平台案例中,通过模型将用户分为高意愿组和低意愿组,并在他们在线时候分别进行弹窗引导。
结果显示,低意愿组在加了弹窗之后,转化率大概在 0.05% 左右;而高意愿加弹窗后转化率能达到 0.67%。十几倍转化率是由有序的项目流程,系统的统计分析和先进的模型构建所支撑的。
3.5 模型画像
模型虽然功能很强大、预测能力很强,但它也会变得十分复杂、不容易解释。而且建模项目往往需要多团队合作,因此大家一定要对所做的模型有共识和足够的信心,这样大家才会放心的交付并使用模型。
在模型产出输出后,我们会使用画像对模型做一个解释,它能帮助我们梳理模型背后的逻辑,从而完成一些模型优化工作。
尽管模型本身的数据逻辑很复杂,但它背后的核心逻辑能用两点来概括:一是商业逻辑;二是长期作用。如果我们能够探索出决定模型的商业逻辑,它在我们提炼营销策略时就能起到很好的提示作用。
从方法论来讲,我们主要可以从三个方面来入手。
图 8:变量重要性检验
第一个是变量的重要性。现在的算法模型很复杂,我们通常也会拟合很多特征,而最终哪些特征起作用,哪些特征没有起那么大的作用,我们则可以通过提取变量重要性的方式(如图 8 所示),在排序后理解模型的逻辑。
图 9:用商业指标验证所选指标
第二个考虑我们所使用的特征与商业指标之间的关系。通过模型输出,我们可以看到某一变量或某一维度在不同人群中差异极大,那么他们可能会是比较好的可选特征,将它用于用户分群后,就能进行精细化运营。
第三个是输入与输出的关系。举个例子,我们在医院体检的时候,报告上会提示很多不同的指标。医生看完报告后会告诉我们一些需要注意的地方,或者我们在健康上有哪些问题。而我们就会反问医生报告背后的逻辑是什么、他是怎么得出结论的。我相信医生整个诊断的过程是非常复杂的,因为它绝对不会是一个简单的线性关系。但医生给我们解释它逻辑的时候,一定是用最简单的话来完整地表达整个逻辑。因为如果太复杂的话,我们也不一定能够听懂。
实际上,医生解读健康报告这个案例也在给我们带来一些提示。虽然我们的模型整体上非常复杂,但我们或许可以在局部用一些线性模型或者树型模型等易解释的模型对它做一些逼近。如果逼近比较成功的话,那么我们至少在一个局部可以根据这些简单的模型来解释为什么复杂模型能够得出这些结论。
以上就是建模的整个流程与注意事项。
CIO之家 www.ciozj.com 公众号:imciow