一些业务场景中的模型应用简介

2021-11-17 · 4983 words · 10 minute read R

本文将建模参与者简单划分为技术方(IT)和业务方,由于内容上主要针对的对象是业务方,因此整体上行文和用词倾向于用业务可接受的逻辑和语言,并且算法相关的内容也简化了许多。

一、什么是模型?

若业务方与IT一起合作建模型,业务方需要对模型涉及的概念有怎样的了解?

1.1.什么是模型?

模型是针对不同的业务目标、选择合适的方法来求解(答案),一般可用来分析、挖掘或预测,是为不确定性作确定性度量。模型输出的结果一般是提供决策依据而不是决策本身。

实际业务中使用的模型,从实现方式上可分为两个大类:

  1. 规则类模型:搜集数据,梳理业务,人为定义因子和标准,人为制定规则

  2. 算法类模型:搜集数据,梳理业务,人为定义因子、调试算法,机器计算出规则

规则类 算法类
人指定规则 人指定学习方法,机器自动学习得到规则

1.1.1.规则类模型

实际业务中应用的规则类模型一般要复杂得多,此处为了便于说明进行简化举例。假设业务方需要做一个简单的预警,以下三个因子可满足预警的要求,通过这三个因子可搭建一个规则类模型。

- 因子含义 基础标准 方式1-因子占比 方式2-因子占比
因子1 是否…… 100% 30%
因子2 ……件数 >=3 100% 40%
因子3 ……件数 >=3 100% 30%

常见方式有两种:

  • 方式1:选出因子,给每个因子定个标准,单个因子超过标准则预警。此例子中模型有三条规则:因子1为是则预警;因子2件数>=3则预警;因子3件数>=3则预警。

  • 方式2:给每个因子设置一个占比,所有因子乘以因子占比后加起来超过一个整体标准则预警。此例子中,假如设定整体标准为超过60%,模型仅1条规则,例如’因子1为否’+‘因子2件数>=3’+‘因子3件数>=3’=70%可预警。

这两种方式并无绝对的优劣之分,只是应用的场景不同。例如方式1,因子的含义足够复杂且单个因子之间毫不相关,业务上确定只需要单个因子超标就预警;方式二,因子的含义相对简单,且大量存在多个因子都超标的情况,那么就多个因子组合起来超过一个整体标准才预警。

常见误区有两种:

  • 误区1:比如为了抓坏样本时,建模只看坏样本数据。抓坏样本应该是看坏样本与好样本的区别,应着重找出坏样本不同于好样本的地方,而不仅仅只是看坏样本自身的特点。

  • 误区2:缺少可以量化的、用于评价模型效果的指标。规则制定好了以后一定要同时制定出针对模型效果的评价指标,这既是监测维护模型的根本,也是调优的基础。

遇到复杂的问题时可以不断增加新的规则去解决,但积累越来越多的规则一定是最好的解决方法吗?

1.1.2.算法类模型

在建立算法类模型的过程中,许多由人来决策的步骤通常会更依赖由算法来提供决策依据。为了便于说明和对比,将建模步骤简化如下:~圆圈是需要业务方深度参与,方框是需要IT深度参与~

  • 设定目标:建立模型通常要设定明确、合理的目标,即评价模型好坏的具体指标,达标才能正式上线投产,后续监测维护也有方向。

  • 选因子:比如业务方搜集了一百个因子,运用算法来计算出每个因子影响结果的重要性大小,选出最重要的因子。

  • 用因子:如前面例子中将“因子2件数”的标准定为“>=3”,在此步骤中可能会将“因子2件数”拆分成“小于3”、“3-5”、“大于5”等多种情况,具体怎么用因子也可以让算法来提供依据。

  • 评价模型好坏:可以直接用算法的评价指标,也可以根据业务情况来定。

1.1.3.规则类模型VS.算法类模型

  • 两者都会遇到的问题:

    • 影响结果的因素始终在变化

    • 数据本身在不断变化

  • 两者没有绝对优劣之分,但应用的场景一定不同:

- 规则类模型 算法类模型
可解释性 模型本身完全可以解释,给业务人员使用或者向领导汇报都容易 除了回归类算法建立的模型以外,模型本身大多难以解释,需从外部解释
复杂度 有限 无限
耗时 快,指标或因子选好后,模型基本成型 慢,选因子、用因子、选算法、调优参数都费时间
可扩展性 某次指标模型测算仅针对某一个时点 后台计算框架搭好可反复使用,满足某些条件时模型可迁移

正是因为实际业务是一直在变的,所以建模绝对不是一劳永逸的,不管是建立规则类模型还是算法类模型,后续都要跟踪维护,才能保证模型的效果维持稳定。

1.2.什么是特征?

特征,在不同领域有不同的名称,有叫“变量”,有叫“指标”,也有叫“因子”。特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。

  • 大范围搜集:尽可能找出所有对结果有影响的因素

  • 数据质量校验:主要是梳理清楚数据是从哪来的,怎么来的,弄清楚数据稀疏、缺失、不完整等情况,有没有意外的IT问题导致的数据错误,这一步是防止潜在的严重问题。

  • 多维交互、衍生:数据的类型分三种:类别型(如购买动机为本人、为子女、为配偶)、数值型(如商品件数、购买金额)、时间(如时间点、时间间隔、频次)。交互就是如客户为本人购买件数,客户为本人购买间隔天数,客户为本人在某段时间内购买的频次;衍生,就是再加上最大值、最小值、求和、平均等,比如客户为本人购买商品金额的均值。

  • 特征合并、降维:比如PCA(主成分分析)/LDA(线性判别分析),一般不用。

  • 去掉不相关:去掉对结果没有影响或影响极小的特征。

  • 过滤掉冗余:同时存在多个特征对结果有一样的影响,只留一个

  • 逐步回归:把特征一个一个放到模型里,每增加一个就评估下有没有提升整体效果,有就留下,没有就去掉,直到选出最佳的特征子集。

  • 学习器自动选:相当于预建模,就是字面含义自动选。

1.3.什么是算法?(大方向)怎样选择合适的算法?

算法就是用于求解的计算方法,比如1+1=2,这里的加法可看作求精确解的算法。又如要根据一个人的身高、体重、爱好等预测性别,用逻辑回归预测此人有70%概率是男性,用随机森林预测此人有80%概率是男性,这就是用不同的分类算法求近似解。

在机器学习这个大的领域中有相当多的分支,专门用来处理不同的情况:

  1. 涉及文字、语音、图像识别的需运用深度学习算法;

  2. 若包含文本,需运用文本挖掘类算法;

  3. 若是时间序列类数据,运用时序类算法;

  4. 若非类别预测,而是如寻找事物之间的关系或关联,需运用关系网络或关联规则类算法;

  5. 有无标注标签:标签:就是历史已有或未来待预测的结果。用有标签的数据建模就从有监督算法中选,常见的有逻辑回归、决策树、XGBoost等;用无标签的数据建模就从无监督算法中选,常见的有各种聚类、异常检测。有监督与无监督最大的区别是,在机器自动学习的过程中,有无使用标签来判定学习效果。

  6. 聚类,即“物以类聚、人以群分”,通常通过计算样本之间的距离来判定样本的类别,距离越近的聚为一类,最终聚类簇内部距离最小而簇与簇之间距离最大时聚类完成。

  7. 分类,通常有二分类、多分类两种。二分类即所需分类的类别只有两个,比如性别只分男、女,有无欺诈只分有欺诈、无欺诈。多分类即所需分类的类别有多个,比如年龄可分为青年、中年、老年等等。

1.4.怎样选择合适的算法?

业务中应用的模型最常见的是二分类问题,以此为例。

  • 综合考量三点:

    • 数据量:数据量较少时,不要用复杂度太高的算法;
    • 好坏样本比例:好坏样本比例越均衡,问题越容易,比例越不均衡,问题越难。
    • 可解释性:只有回归类的算法建立的模型本身可以解释。
  • 分类算法优缺点:

    • 逻辑回归:可解释性最好,模型可以转换为规则,复杂度最低、效果最差;
    • XGBoost:模型本身不可解释,复杂度最高、效果最好
  • 具体怎样选:

    • 若是要求模型本身可解释,就只能选逻辑回归。
    • 若是不要求模型本身可解释且数据量不少的话,直接用XGBoost,再搭配一些机器学习可解释算法如LIME,从外部解释模型。
    • 若是不要求模型本身可解释且数据量少的话,就将传统分类算法挨个试一遍,选效果最好的用。

二、怎样建立模型?

以业务场景中的模型应用为例,哪些步骤需要IT完成、哪些步骤需要业务方完成

2.0. 制定明确、合理的目标

在正式建模型之前,一定要充分了解业务现状和数据情况,制定出明确、合理的目标。例如:要预测某项业务中可能出现的坏样本,那么整个建模目标就需要细化出以下几点:

  • 1.给坏样本具体的定义。

  • 2.明确数据的范围和具体维度:

    • 维度:区分清楚要建模的具体维度是到商品维度、客户维度,还是销售人员维度、事件维度。
    • 范围:区分清楚所要预测的业务时点,假如做投诉预警,那么明确是在客户购买的时点预警,还是销售人员离职前的时点预警,或是客户电话投诉的时点预警。
  • 3.了解建模的难度:坏样本占总体样本比例为1/2、1/10、 1/100、 1/1000时,坏样本占比越低,建模越难。

  • 4.衡量可以接受的阈值:假如确定好了对客户维度进行预警,模型给每个客户进行评分,评分高的需要被抓出来,那么评分高于多少才是“高”?一般可以定一个阈值,高于阈值的即评分高,要被当做坏样本抓出来。定前0.5%?前3%?前10%?阈值太高,被预警的量会太少;阈值太低,被预警的量太多,又会对业务方造成压力。

  • 5.确定模型目标:究竟是更想要在确定的阈值范围内尽可能抓出更多坏样本(精确率),还是更想要从所有坏样本中尽可能找出更多坏样本(召回率)?是否需要明晰出模型内部运行的具体规则?

  • 6.明确模型预测结果的具体应用场景:预测结果如何追踪验证?预测究竟是为降低某项成本还是提高某种效率?

2.0.1. 精确率/召回率

- 实际坏样本 实际好样本 -
预测坏样本 120 120 240
预测好样本 80 680 760
- 200 800 1000
  • 精确率:

    • = 120240 = 50%
    • 预测坏样本且实际坏样本数(120) / 预测坏样本总数(240)
    • 精确率越高,表示对坏样本抓得越准
  • 召回率:

    • = 120200 = 60%
    • 预测坏样本且实际坏样本数(120) / 实际坏样本总数(200)
    • 召回率越高,表示对坏样本抓得越全

2.0.2. 验证目标的常见误区

假如(2.0.1)中的图是建模时设定的目标,而下图是建模完成后验证是否达标。

- 实际坏样本 实际好样本 -
预测坏样本 7000 4500 11500
预测好样本 3000 5500 8500
- 10000 10000 20000
  • 目标精确率为50%,验证精确率:7000/11500 = 60.86%,达标。

  • 目标召回率为60%,验证召回率:7000/10000 = 70%,达标。

但实际上并未达标,因为有以下两个误区:

  • 误区1:设定目标时好坏样本比例为800:200=4:1,验证时好坏样本比例换成10000:10000=1:1,这是降低验证难度,最终实际应用时模型效果依然不会达标。

  • 误区2:设定目标时预测坏样本的比例为240/1000=24%,验证时预测坏样本的比例换成11500/20000=57.5%,这也是降低验证难度。

2.1.基本建模流程

图中圆圈标记的需要业务方深度参与的,方框标记的需要IT深度参与

  • 业务目标

    • 收集因子,确定数据范围,给出标签的具体定义
    • 根据实际业务情况来制定目标,设定具体的召回率、精确率目标
    • 阈值范围代表需要付出的用于验证结果的成本
  • 算法选择

    • 好坏样本比例,样本类别不平衡
    • 可解释性
  • 特征工程

    • 根据业务逻辑搜集因子
    • 离散化处理(用因子),筛选关键因子
  • 应用维护

    • 好坏样本比例变了
    • 某些重要特征的重要性降低了

2.2.应用案例

(同一个特征,离散化处理不一样最终对结果的影响程度也会不一样,缺失) (模型分层与融合,缺失)

2.3.XGBoost+LIME

(运用LIME算法可以展示出,每个样本的结果具体受到哪些特征的影响、是正影响还是负影响、影响程度多大等等,缺失)

三、建好的模型应该怎么用?

3.1.模型预测的结果应该怎么使用?

实际应用时,模型提供的是决策依据而不是决策本身,预测的结果最终应融入业务中。

(缺失)

3.2.模型的验证成本

(缺失)

3.3.关于建模型的几点建议

  • 建议1:简单问题不需要建复杂模型来解决

    • 可以用简单方法解决的问题,不需要建模型

    • 业务形式或规则固定、能直接用运营手段干预解决的问题,不需要建模型

  • 建议2:正式建模之前的探索性数据分析很重要

    • 详细的数据探查很重要,建模型需要数据,缺少数据或者数据质量太差难以建成好用的模型

    • 指标搜集尽可能全面,不要遗漏特征,若要最终效果符合预期,影响最终结果的因素需包含在数据中

  • 建议3:模型建立完成后,需追踪效果

    • 定期人工或自动化监测应用效果,例如每天、每月、每季度、每半年

    • 周期性重新训练模型,例如每一年或每两年

  • 建议4:不要为了建模而建模、为了预测而预测

    • 模型一定要与业务结合才能起作用,要明确模型解决的是什么问题

    • 建模前一定要先梳理清楚具体目标、怎么使用、后续如何监测、以及何种情况需要改进

必须将数据付诸行动,数据才有价值