文章目录
- 必备技能
- 数据人员如何创造价值
- 完整的指标体系构建
- 数据监控集报表设计
- 设计一份优质的数据分析报告
- 基于互联网大数据的应用
- A B 测试
- 用户画像
- 完整的数据挖掘项目流程
- 1. 分析问题,明确目标
- 2.模型可行性分析
- 3.选取模型
- 4.选择变量
- 5.特征工程
- 6.建立模型&效果评估
- 7.模型上线&迭代
内容整理自《拿下offer 数据分析师求职面试指南》—徐粼著 第五章数据分析师实战技能
其他内容:
【数据分析师求职面试指南】必备基础知识整理
【数据分析师求职面试指南】必备编程技能整理之Hive SQL必备用法
【数据分析师求职面试指南】实战技能部分
必备技能
数据人员如何创造价值
- 基于历史数据和业务背景构建指标体系或者模型。
- 基于指标体系,监控线上业务数据并制定相应的监控规则。
- 输出数据分析报告或者提供可执行策略,推动业务的发展。
完整的指标体系构建
Q1:要构建一套指标体系,整体思路:
构建指标体系应该“纵向”和“横向”相结合
- 纵向指的是梳理出分析问题的整个流程,比如对于电商产品,需要分析出用户从进入网站到最终下单的整个流程;对于工具类产品,则需要关注用户使用过程中的体验以及用户流失情况。
- 还需要横向拓展不同的维度,如基于用户画像的人群分类、根据不同业务背景的时间拓展以及业务线的划分。
最后将纵向和横向的结果相结合,就得到了一套完整的指标体系。
Q2:用户行为的核心节点有哪些?如何有针对性地设计指标?
了解用户行为的核心节点,实际上就是纵向分析的过程。互联网公司大多针对C端用户进行分析,这里就以C端用户(consumer (消费者))为例进行介绍。对于C端用户,核心的三个节点是新增、活跃、留存/流失,大多数分析都是围绕这三个节点进行的。
可以看到,针对新增、活跃、留存/流失这些节点,可以纵向设计出很多指标,但主要是绝对数量和百分比。
- 对于新增用户,指标有新增用户数量、新增用户留存率、新增用户活跃率等。
- 对于活跃用户,指标有活跃用户数量、活跃用户中的新增用户数量、活跃用户中的老用户数量等。
- 对于老用户,指标有老用户数量、老用户流失率、老用户唤醒率等。
- 对于流失用户,指标有流失用户数量、流失用户与新增用户比率等。
这样就可以针对用户的整体行为节点进行比较完整的指标设计,其中活跃用户部分是需要重点关注的,通过对从新增到流失整个流程指标的构建,可以清晰地看出在哪个环节最终活跃用户数增加了或者减少了。
Q_4:对于活跃用户,应该如何进行相应的指标设计及路径分析?
对于活跃用户,要研究其活跃行为,从而提高用户的体验。针对不同类型的产品,需要进行相应的细分设计。
比如对于电商产品,需要关注的是从来访用户到用户最终成功支付的整个流程,如图5-2所示。
可以看到,针对这个流程的每一步都可以统计出相应的用户数量以及上一步的转化率,比如来访用户数量、点击用户数量、加入购物车用户数量、下单用户数量、支付用户数量、最终成功支付用户数量,以及各种转化率,如点击/曝光转化率、下单/点击转化率、下单/加购转化率、支付/下单转化率、成功支付/支付转化率。这些指标就构成了一个完整的纵向指标体系,通过这些指标可以清晰地看出哪个环节存在问题。
对于电商产品,除了要关心用户数量,金额也是要关心的指标。从加购开始,每个环节在用户数量的基础上都需要增加金额指标以及相应的客单价指标。
对于短视频,需要分为视频的观看者和视频的发布者两个独立的用户群体进行分析。
对于视频的观看者,需要考虑的是各种行为数据,相对路径比较短,如图5-3所示。针对用户的这些行为设计相关的指标,比如观看视频的数量、整体时长、点赞视频占比、评论视频占比等,这些指标刻画了用户观看视频的体验情况。
对于视频的发布者,则需要关注整个流程,看在某个环节的转化上是否存在问题,造成发布的视频数量减少,如图5-4所示。
*以上就是构建指标体系的纵向部分,其中包括了用户从新增到流失/留存的整个流程,这是比较通用的指标体系建立方法。(面试前需要对所要应聘部门的业务有所了解,梳理出产品中用户的生命周期以及活跃用户的行为情况。)
Q_5:有了明确的用户行为路径及相关指标后,如何进一步分析?
除了纵向分析,还需要横向分析,横向分析是指对于同一个指标,基于不同的维度进行相应的拓展,常用的维度包括时间维度和用户维度。
Q_6:针对时间维度的分析,需要注意的点有哪些?
对于时间维度,常用的分析方法是关注最近一段时间的数据,时间的长短要根据业务的具体特性来确定。对于一些高频的App或者功能,通常关注最近1~7天的整体数据情况即可,也可以是自然周。对于一些相对低频的App或者功能,则需要将时间拉长,关注最近15天、30天、90天甚至更长时间的整体数据,也可以是自然月、季度甚至自然年。
另外,与时间维度相关的有同比和环比的概念。因为单纯地关注一段时间的数据并不能很好地看出趋势情况,需要与之前的数据进行对比。对于同比和环比的概念,在实际应用中不需要进行很明确的划分。常用的对比方法是对比当日与上日、本周与上周、本月与上月的数据。对于一些周期性比较强的产品,则需要先确定产品的周期,比如有些产品会受到周末的影响,此时比较合理的对比方法是用本日的数据与上周同一日的数据进行对比;有些产品会受到大型节假日的影响,此时针对节假日数据,就需要与上一个大型节假日的数据进行对比。
对于一些对实时性要求高的产品,需要将数据指标细化到小时级别。
除了时间维度,还有一种常用的拓展方法,就是基于用户画像的用户维度进行拓展。用户画像是互联网公司中常用到的分析工具,通过用户画像可以有效了解各个群体的行为情况,也可以基于用户画像拓展出相应的指标。
Q_7:列举常用的用户维度拓展方法。
有很多通用的用户维度拓展方法,比如对于用户所在地,可以分为城市、省份,甚至华东、华南等大区;对于用户的基本属性,可以分为年龄、性别、职业等;对于用户使用的设备情况,可以分为终端类型、客户端版本、厂商、机型等;对于新老用户,也可以拓展出一些指标。对于新用户,需要关注的是用户来源渠道,通常分为自然新增用户、活动新增用户、广告新增用户等渠道,通过对渠道的划分,可以在一定程度上避免一些大型活动对新增用户分析带来的影响;对于老用户,根据用户的生命周期进行划分,通常分为有效用户、活跃用户、忠诚用户、沉睡用户和流失用户,可以对产品整体趋势有一个清晰的了解。
Q_8:×××最近有所下降,如何进行分析?
针对这个问题,需要充分利用前面所讲的指标体系,按照如下步骤进行分析。
(1)梳理与该问题相关的流程,确定纵向指标体系。比如是支付金额有所下降,就需要梳理:曝光→点击→下单→支付这样完整的用户路径,以各个环节的转化率和用户量为核心指标。
(2)针对核心指标,确定所要对比的时间维度,比如基于所要分析的产品确定与前一天或者前一周的数据进行对比,发现问题所在。
(3)确定问题所在的环节后,针对该环节以用户维度进行拓展,如基本属性、所在地、设备情况、新老用户等,确定引起该问题的用户群体,并针对这部分用户进行相应的策略调整。
除了上述问题,对于“新版产品或者某个运营活动上线后,如何评估效果”等问题,也可以采用相同的方法进行分析,只做微调即可。
总结起来,整个思路就是:梳理路径→确定对比的指标→选取对比的时间维度→针对问题环节拓展用户维度。
数据监控集报表设计
前面介绍了指标体系的构建,通过指标体系可以有效地指导产品人员和运营人员进行决策。但是真正执行时还需要基于指标体系来构建有效的数据监控体系,将指标体系落地,其最重要的产出就是报表。🐶
Q_1:现在需要监控数据并设计相应的报表,应该考虑哪些问题?
实际上,关于数据监控及相应报表的设计,有很多需要思考的地方,可以总结成三个问题:看什么、怎么看、给谁看。
监控数据和设计报表的基础就是前面构建的指标体系,但是仅仅将指标简单地罗列出来显然是不够的,下面就以一个产品的日常数据报表为例来介绍“看什么”。
Q_2:如何避免在报表中简单地罗列数字,提高信息量?
假如一个产品的基本数据报表包含了活跃用户数、新增用户数、老用户流失率等指标,这样的数据报表给人的感觉更像是流水账,起不到任何对数据进行监控的作用,其中的指标是好还是不好,不能很直观地看出来。
因此,需要根据实际情况在报表中增加对比数据,与1天、7天或者30天前的数据进行对比,这样能够快速、直观地了解数据的变化。能够很快地通过报表数据清晰地了解指标的变化情况,相比于单纯地展示数据,可读性大大增加
同时,可以将周同比数据中低于5%、高于5%或者其他阈值的数据,用不同的颜色进行标注,通常用红色标注高于阈值的数据,用绿色标注低于阈值的数据。
可以看到,经过两次调整,报表的可读性得到了有效提升,同时增加了传递的信息量。在日常工作中应根据业务变化,不断地对报表内容以及数据监控的策略进行相应的调整,包括对比的数据和阈值等,以适应业务发展的需要。另外,报表不仅仅是表格形式,折线图、柱形图等图表也可以用作数据监控报表。
在解决了“看什么”的问题后,接下来要考虑的就是“怎么看”。
Q_3:常用的报表输出方式有哪些?
一种方式是通过数据看板平台输出
另一种方式是通过邮件发送报表。相比于数据看板,邮件报表所能传递的信息量要少一些;但由于邮件是日常工作中不可或缺的一部分,不同于数据看板需要主动关注,邮件报表属于“被动接收”,传递信息更加快速、直接,通常都会设置为定时任务,在固定时间发送报表给相关人员。
接下来要考虑的就是“给谁看”,这是将报表功能最大化的核心问题。
报表的受众主要分为三类:领导层、业务层和客户,三者虽然都要关注报表数据,但是关注点不同,因此要基于各自的需要提供相应的数据和展现方式。
Q_4:针对不同的人群,如何设计相应的报表?🐕
领导层,提供给领导层的一定是最核心的指标数据,并且要采用最直观的展现方式。由于领导层每天要接收大量的来自不同业务线或者部门的信息,需要在短时间内获取最直观的业务数据,以便制定下一步的策略。因此,提供给领导层的通常是邮件报表,并且在邮件报表中选取最核心的指标数据,将变化趋势直观地表现出来,使领导层对核心数据的变化情况一目了然。(就是说不要弄花里胡哨的东西)
业务层,不同于领导层关注最核心的指标数据,业务层需要对所有的相关数据都能够做到及时监控和分析,因此提供给业务层的数据务必要全面,能够将各个维度的信息都展现出来。所以,通常将提供给业务层的数据集中展现在数据看板中,并且可以根据需要进行实时或者准实时更新,当数据出现波动或者异常时,能够第一时间通知到业务方进行排查。
客户,比如电商公司提供相应的报表给店铺或者供应商,指导其进行策略调整,也会采用数据看板,但是信息量会有所减少,因为要排除敏感数据和次要信息,主要围绕如何帮助他们提高销售额或者达到其他目标而更加有针对性地展示相关数据。
如果在简历中提到有过设计报表的经历,那么在面试中通常会被要求介绍相关工作内容,因此需要候选人多多思考这方面的内容,避免给面试官留下“流水账”的印象。
设计一份优质的数据分析报告
这里要讲的数据分析报告,能够聚焦于某个点给出分析数据,比如新功能上线后的数据分析报告、运营活动效果的分析报告等。
关于数据分析报告的设计,需要考虑一个最核心的问题,就是如何提高质量。
Q_1:如何提高数据分析报告的质量?
(1)明确整体分析思路😄。好的数据分析报告都依赖于一个明确的思路,需要在开始设计报告前就整理出一个基本的框架,然后在设计过程中进行适当的添加。切勿在开始设计数据分析报告前不做规划,“边做边加”,否则效率会大打折扣。
举个例子,现在分析一次电商营销活动的效果,首先需要对分析维度进行拆解,如分为活动的整体效果、各个商品的销售情况、各类人群的销售情况。然后需要确定衡量这次活动的核心指标,如点击率(点击人数/曝光人数)、支付转化率(支付人数/点击人数)、点击单价(支付金额/点击人数)、客单价(支付金额/支付人数)等。
以上就是一次电商营销活动效果分析报告的设计思路,包含了对分析维度的拆解(也称为下钻)和核心指标的确定,有了一个清晰的框架,接下来就可以基于此进行数据的提取、分析以及可视化操作了。
整体分析结构
(2)结论提前,清晰明了。 在一份数据分析报告中,运营方和决策层最关心的就是结论以及相应的策略,这是报告中最有价值的部分。
但也不是说简单地将所有的结论罗列出来就可以了,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TakS75Tk-1678355012001)(images/5d683eedda955cd288ca2d898f35fd3.jpg)]
这种结论看起来像流水账,出现了太多的数据,并且很多是没有价值的。比如男上装等四个品类的占比,这样的数据罗列毫无价值,而是应该给出和一个标杆进行对比的数据。再比如“女性用户整体指标符合预期”,其本身并不具有特别大的价值,在结论中应该主要关注那些变化比较明显的点。对结论进行合理的修改,修改后的结果如图所示。
可以看到,剔除了一些无关紧要的数据,在整体结论中只放最核心的问题或者闪光点,并且给出相应的策略。
(3)注意图表的信息量。作为支撑分析的论据,需要在数据分析报告中使用大量的图表,但是很多时候会存在图表的信息量过少或者过多的情况—如果信息量过少,则无法很好地展示数据;如果信息量过多,则会影响他人的理解,无法直观地看数据。
以上图中提到的“男性用户点击率比平均水平低”这个点为例,证明这是造成男上装销售额偏低的主要原因,可以使用漏斗图,看各个环节的转化率,并且能够与历史数据进行对比
基于互联网大数据的应用
A B 测试
目前在互联网公司中AB测试具有不可替代的作用,也是数据分析师需要掌握的重要技能。由于AB测试涉及很多统计学知识,因此需要花一定的时间来仔细研究。
Q_1:简述AB测试。
AB测试是指为了评估模型/项目的效果,在App/PC端同时设计多个版本,在同一时间维度下,分别让组成成分相同(相似)的访客群组随机访问这些版本,收集各群组的用户体验数据和业务数据,最后分析评估出最好的版本正式采用。
AB测试的整个过程分成三个部分:试验分组、进行试验、分析结果。
直观上看,分组是整个测试中比较简单的部分,但实际上它是测试中最重要😄的一个环节,如果分组不合理,之后的试验都是徒劳。
Q_2:介绍常用的AB测试的分组方法。
常用的分组方法包括基于设备号、用户唯一标识(如用户id等)的尾号或者其他指标进行分组,如按照尾号为奇数或者偶数分成两组,在分组过程中不需要对这些唯一标识进行处理。另外一种方法就是基于这些唯一标识,通过一个固定的Hash函数对用户唯一标识进行Hash取模、分桶,将用户均匀地分配至若干个试验桶中。可以将桶简单地理解为小组,通 常会分为100个组或者1000个组,相比于直接基于唯一标识进行分组,这种方法能够进一步将用户打散,提高分组的效果。
上面介绍了将用户进行分组的方法,在进行单个试验的情况下,可以将通过Hash函数得到的桶编号1~100,在试验中将编号1~50分为A组,将编号51~100分为B组, 然后进行对比。但是在实际工作中,通常会出现多个试验并行的情况,并且由于网站或者App的流量是有限的,同一批用户可能会同时作为多个试验的数据源,此时进行分组就要全方位地考虑目前正在进行的试验情况。
Q_3:面对多个试验并行的情况,如何保证分组的合理性?
这里需要引入==“域”==的概念。对于所有的用户,需要在所有的试验开始前将其划分为不同的域,不同域之间的用户相互独立,交集为空。对于一些比较重要的试验,可以专门为其划分出一部分用户,在该试验进行期间,不会针对这些用户进行其他试验,这称为“独占域” 。在进行试验时,只需要基于这些用户的Hash值分组即可。
与“独占域”对应的是“共享域”,即针对域中的用户会同时进行多组AB测试,此时在分组的时候就需要考虑分层。为了方便理解,这里将每一个试验作为单独的一层,根据试验开始的时间,将试验按照从上层到下层的顺序进行排列,下一层试验进行分组时,需要将上一层试验各个分组的用户打散,如图5-17所示。😄
可以看到,第二层分组开始时,充分考虑了第一层的各个分组,将第一层各个分组的用户随机选取50%进入第二层的分组中,这样保证了第二层用户的随机性。依此类推,各个层在分组时都需要将上一层分组的用户打散。
综上所述,分组情况总结如图5-18所示。
需要注意的是,在同一个共享域不可以同时进行过多的试验,即使基于正交的方法可以保证随机性,但通常最多也不要超过7个试验同时进行,同时也要思考是否有办法验证分组的随机性。
对用户进行合理的分组之后,接下来就正式进入AB测试的实施阶段了。
Q_4:如何充分证明AB测试分组的随机性?
在AB测试中,理论上,即使通过基于正交的方法可以保证用户分组的随机性,但是为了防止意外情况的发生,还需要引入==“AA测试”==的概念,进一步保证分组的随机性。通常分组情况如图5-19所示。
以上就是一个典型的试验分组策略。通常用A版本表示老版本,B版本表示新版本,按照6∶4的比例进行划分,同时从A版本中划分20%的用户进行AA测试。最终验证结果时,首先要保证AA测试通过,确保分组的合理性,然后看AB测试是否通过;如果AA测试没有通过,那么AB测试的结果就没有任何意义。
Q_5:简述AB测试背后的理论支撑。
这里需要考虑AB测试所运用的核心原理:根据中心极限定理,当数据量足够大时,可以认为样本均值近似服从正态分布。然后结合假设检验的内容,推翻或接受原假设。
最后要做的就是分析试验结果,这一部分要用到中心极限定理和假设检验。
Q_6:如何通过AB测试证明新版本用户的转化率高于老版本用户的转化率?
用户画像
用户画像是互联网公司大数据体系中非常重要的一个部分,通过用户画像,可以对用户进行全面分析——既可以利用用户画像“千人千面”地推荐相关产品,又可以基于用户画像分析产品目标用户,以及针对不同属性的用户采取不同的召回策略。
关于用户画像数据的计算、获取、存储有一套比较完善的系统,称为数据管理平台(DMP)。这部分内容只要了解即可,数据分析师关注更多的是用户画像数据的加工和应用。
在获取用户画像数据的过程中,与数据分析师工作密切相关的内容如图所示。
Q_1:用户画像的数据源有哪些?
用户画像的数据源主要有两种,其中一种是用户基本属性数据,如性别、年龄、地域等;另一种是用户行为数据,如浏览、下单、观看等。
用户基本属性数据往往会存在缺失或者不准确,这部分数据大多来自用户注册时所填写的信息,并且不是强制性填写的,所以会存在一定的偏差。
用户行为数据则体现出用户近期的一些行为,对“近期”的定义要参照不同的产品属性,比如对于旅游类低频App来说,最近30天或者更久的数据都是需要关注的;而对于短视频这种产品,则通常需要关注30天甚至7天之内的数据。
Q_2 :获取到用户画像数据后,如何加工呢?
一是通过分析计算,比如分析用户最近一段时间的消费金额、消费频次等,获得其活跃度以及相应的偏好,或者通过分析用户近期的登录地址或者订单地址等判断其所在地。
二是建立相应的数据挖掘模型,预测用户基本属性,如性别、年龄等,有效弥补基本属性数据的缺失以及偏差。比如在电商领域,可以根据用户近期浏览婴幼儿类产品的情况,再结合深度学习模型判断该用户(或其家人)所处的孕期,之后进行更加准确的商品推荐。
通过数据加工,可以获得一个完善的标签池,其中包含了大量的用户属性信息。比如对于用户小王,通过标签池,我们可以了解到小王的性别、年龄、居住城市以及该城市的等级(一线、二线、三线)等,同时也可以了解到小王近期的活跃度,并且会基于活跃度划分相应的等级,小王的一些偏好也能通过计算获得,如小王喜欢看的视频类型、关注的商品类型、对价格的敏感度、对不同类型活动的喜爱程度等。
很多人对用户画像的理解可能就限于此,认为用户画像只是丰富标签池的过程,所谓的基于用户画像分析也不过是将所有的标签数据进行对比,得到相关的结果,比如男性用户和女性用户的占比以及各自的转化率等。实际上,这只是对标签数据的应用,还不能算是用户画像层面的应用。只有根据需要将这些标签数据进行有效的整合,重复使用这些数据,才能算是用户画像层面的应用。🐶
Q_3:如何利用标签池中的数据,根据用户画像进行相应的分析?
举例说明,假如现在有一个新产品需要推荐,目标用户是大城市的白领女性,这时就要通过标签池中的数据来刻画“大城市的白领女性”这一特征。
首先预测性别,筛选出女性用户,居住在一线城市,然后排除对价格敏感度较高的用户,并且要求近期活跃度偏高。同时这部分用户通常对品质要求比较高,因此可以基于此选取出在商品偏好中品质占比较高的用户,这样就可以刻画出“大城市的白领女性”这一用户群体,并且将后续的活动消息优先发送给这部分用户。
用户画像在互联网公司中应用非常广泛,候选人需要对用户画像有深刻的理解。
完整的数据挖掘项目流程
在工作中运用的数据挖掘模型要求更加敏捷且可操作性强,也因此需要更加全面地评估模型并选取合适的模型。一个完整的数据挖掘项目流程分为如下7步。
1. 分析问题,明确目标
这里以一个风险订单识别模型为例,实际上很多互联网公司都是中间商,需要连接用户与供应商,将用户的订单提供给供应商,由供应商履行订单。但是在这个过程中,很容易会因为各种原因使得订单无法顺利完成,这样的订单可以称为风险订单。
通过数据挖掘模型,可以提前预估订单风险的大小,采取有效措施规避风险,减少风险订单的数量。这样既可以减少经济损失,又可以提升用户体验。
2.模型可行性分析
并不是所有的问题都需要使用数据挖掘模型或者能够通过数据挖掘模型来解决。在建模之前需要进行可行性分析,没有进行可行性分析就盲目地套用模型,最终很可能会导致白白地费时费力。
Q_1:在建模之前,需要从哪些方面分析可行性?
上述风险订单识别问题最终可以被转化为二分类问题,将历史上的风险订单标记为1,将非风险订单标记为0,通过模型对所有订单的风险性进行打分,打分区间为0~1。通过模型训练得到阈值,对超过阈值的订单进行人工/自动干预,这样就将业务问题转化为了使用模型可以解决的问题。
当然,虽然可以用模型来解决问题,但是也要考虑两个重要因素,即KPI和历史数据量。
KPI(关键绩效指标):在建模前需要明确业务方为项目制定的KPI,并且计算为了实现KPI模型要达到的准确率、召回率等。如果通过计算得知模型所要达到的效果是难以实现的,那么显然需要调整KPI或者进行其他操作。
历史数据量:这是一个重要的判断模型是否可行的因素,再强大的模型,也需要通过训练足够的历史数据,从中进行学习,最终才能输出相应的结果。当历史数据量非常少时,需要考虑补充数据或者选取对数据量要求较低且复杂度较低的模型。判断模型可行性的流程如图5-24所示。
3.选取模型
前面对一些常见的模型已经做了介绍[1 基础知识]
4.选择变量
在确定了模型之后,下一步要做的就是提取并选择变量。准备变量的过程也是非常重要的,通过讨论变量可以使大家对业务有更深的理解,常见的步骤包括:
- 通过PRD文档、业务方需求文档,建立变量池;
- 组织变量讨论会,拓宽对业务的认知,丰富变量池 ;
- 借助SQL语句从数据库中提取变量,一小部分数据由业务方直接通过表格提供。
Q_2:常见的变量分类方法有哪些?
T+1变量:前一天或更早的数据,主要是历史数据,对时效性要求不高。例如:用户、供应商标签画像数据,包括用户信用等级、供应商合作等级、规模大小等;用户、供应商历史风险订单及其他相关数据,如供应商被投诉情况等。
实时变量:短时间内获取的最新数据。通常延迟在5分钟之内,对实时性有较高要求。比如用户当天的行为数据,如App的打开、操作数据,在条件允许时可以使用GPS数据。还有供应商实时库存紧张程度,通常用0~1之间的值来刻画。
可以参考此前指标体系的拓展方法,对变量也进行相应的拓展,如以时间、用户等维度进行拓展,如图5-25所示。
5.特征工程
在选择好变量之后,对这些变量进行处理,称为特征工程。
Q_3:在数据挖掘项目中特征工程包括哪些方面?
(1)验证逻辑:这是特征工程中必要的步骤,特别是在添加某一变量使模型效果得到了极大提升之后。常见的逻辑错误如下:
- 因果关系倒置,将结果作为变量放入模型中,例如,通过用户评论情况判断订单是否被履行,实际上是后置数据,只有订单被履行的用户才会发表评论,相当于用结果证明过程。
- 忽略模型上线后变量计算时效性.
- 在取数过程中出现错误
(2)缺失值处理:对于一些模型(如XGBoost模型),在符合逻辑、确保缺失值具有一定意义的前提下,可以不做处理,其他情况都需要进行处理。在风险订单模型中,通常服务统计指标缺失的供应商为低频供应商,保留其空值,在一定程度上反而是最好的处理方法。
常见的缺失值处理方法如下:
- 用特定值表示(如-9999)。
- 统计插值(均值、中值、众数),适用于数值型变量。
- 模型插值:SKNN,参考最临近的k个值进行填补;EM聚类,选择不存在缺失值的变量进行聚类,根据所在类的其他值进行填补。
(3)异常值处理:判断业务逻辑在取数计算过程中是否出现错误,Hive取数时的join操作可能会因为一对多的对应关系而出现重复数据,需要随时验证数据的唯一性。
- 统计方法:3σ、盒形图、分位数。
- 模型方法:iForest(孤立森林),每次随机划分属性和划分点(值)时都是随机的,计算样本所处节点的深度,深度越小越可能为异常值。
常见的异常值处理方法如下:
- 删除异常数据所在的记录。
- 将异常值记为缺失值,用填补缺失值的方法进行处理。
6.建立模型&效果评估
建立模型和效果评估这部分内容在前面的Python、R的章节中都有所介绍,这里不再赘述。
7.模型上线&迭代
模型线下训练好之后,接下来需要做的就是正式上线。
Q_4:在模型上线前以及上线后,都需要做哪些工作?
在模型正式上线前,通常需要将模型封装成特定的模型文件交由开发部门,开发部门定时调用模型文件。当然,有些模型如线性回归模型上线时,就无须交付模型文件,只需提供变量对应的参数即可。目前比较常用的方法是将机器学习/数据挖掘模型打包成PMML文件。
==PMML(Predictive Model Markup Language)==是一种通用的基于XML的预测模型标记语言,由DMG组织发布,使用它能够做到:
- 任何语言都可以调用模型。
- 不存在调用的通信消耗。
- 直接部署上线,无须二次开发。
- 支持数据转换,比如标准化与one-hot编码等。
在模型上线前需要提前制定好监控策略,保证模型效果在可控范围内。
实际上,模型上线只是整个环节中的一环,并不代表项目结束,还要针对模型上线后的表现进行迭代及修正。随着模型的上线,此前很多有着非常重要作用的变量其重要性逐渐减弱,比如具备某一类属性的供应商因为模型的上线而被重点监控,该属性之后所起到的重要作用会有较大的减弱。
我们需要时刻保持对模型的迭代,并在相应的代码管理平台及时更新代码,做好模型版本编号,以此形成一个完整的闭环,如图5-26所示。