【Automated Analytics】SAP自动分析背后的t
本文共5515字。
原文:How does Automated Analytics do it? The magic behind creating predictive models automatically.
看完这篇文章,你能知道这三个问题的答案:
- 数据分析工具怎么能自动生成预测分析模型?
- 数据分析的步骤怎么就能自动完成?
- 数据模型,真的不需要一个数据分析大咖,耗费大量的时间精力来调教吗?
SAP 预测分析(Predictive Analytics,下称PA)的自动分析(Automated Analytics,下称AA)模块,可以让非统计专业的你,无需了解各种复杂的机器学习模型,弄懂各种奇怪的数学公式,在迅雷不及掩耳的时间内,创建一个非常给力的预测分析模型。值得一提的是:AA创建的模型,可以用在绝大多书的业务场景中。
接下来让我们把话筒交给完成自动替你完成预测分析过程的AA。
Automated Analytics(AA)模块介绍
AA是PA软件中非常重要的组成部分。借助AA,我们可以实现下列的算法:聚类、分类、回归、时间序列分析。
AA的目标只有一个:尽可能地简化建模的过程,自动化建模过程中可以被自动完成的步骤,然后创建一个非常给力的模型。由于建模过程的自动化程度非常高,所以你无需具备很深的数据科学背景,也可以创建一个强大的模型。
BTY:AA的幕后功臣来自于SAP在2013年收购的KXEN
而AA的方法论基于Vladimir Vapnik在结构风险最小化(Structural Risk Minimization)领域的研究。站在了VV这位大拿的肩膀上,我们可以现在非常小的计算性能消耗的基础上,建立一个高效的预测分析模型。
译者插个嘴:猜猜机器学习领域最给力的分类算法之一:SVM的发明人是谁?就是Vladimir Vapnik
下面我们以分类算法为例,透视AA背后的原理。
创建变量
PA模型其实是基于一个最基本的假设:历史数据值得参考。通过分析历史数据,可以预测未来的趋势。正是基于这一个假设,PA分析才能发挥其作用,如果分析的主体是随机事件,那就无法使用PA模型了。
假设:一家零售银行希望优化其市场营销策略,(结合PA)可以找到一个非常好的切入点:找到对某一件金融产品感兴趣的同一类顾客。这一切入点就需要根据现有客户的历史数据,借助分类模型来对客户进行分析,找到购买这一金融产品的顾客都有什么共同点。分类的思路有很多种,例如:
- 人口统计学数据(年龄、居住地、婚姻状况)
- 行为历史数据(借贷状况、信用卡使用记录)
接下来我们介绍一个新概念:目标变量(target variable)。我们不给出一个特别官方的定义,而是结合实例来让大家对这个新概念有一个比较感性的认识。在这个案例里面,目标变量是揭示一个顾客是否会购买这个产品的指示量。通过分析历史数据,AA训练出来的分类模型通过找到最优的目标变量,计算新顾客购买这一个产品的概率。
举个栗子:我们通过AA的分类模型分析历史数据,发现以下规律:
- 35岁以下,单身的年轻女性,会有80%的可能,购买金融产品A
- 35岁以上,已婚的年轻女性,只有20%的可能,购买金融产品A
上面这个例子,我们的目标变量,有两个:年龄和婚姻状况。
如果现在有一条新顾客数据录入到系统中:王XX,女,32岁。那我们是否应该向其发送推销产品A的信息呢?根据上面的目标变量,我们应该向甘梅推送信息,她购买这件产品的概率是80%。
再举个栗子:我们通过AA的分类模型分析历史数据,发现以下规律:
- 35岁以下,单身且居住在朝阳区的年轻女性,会有90%的可能,购买产品A
- 35岁以上,已婚且居住在海淀区的年轻女性,只有10%的可能,购买产品A
上面这个例子,我们的目标变量,有三个:年龄、居住地和婚姻状况。
如果现在又有一条新顾客数据录入到系统中:王XX,女,32岁。那我们是否应该向其发送推销产品A的信息呢?根据上面的目标变量,我们应该向甘梅推送信息,她购买这件产品的概率是90%。通过增加一个目标变量,我们提高了分类模型的准确度,幅度为(90%-80%)/80%=12.5%。
数据分析模型的效果,与历史数据能否充分体现顾客行为的特征密切相关。为了充分体现顾客的特征,在训练过程中,需要综合考虑多方面的因素(也就是多个目标变量)。正如我们上面的例子,新增了一个目标变量之后,模型的效果就提升了12.5%。PA里有内置的数据管理(Data Manager,下称DM)功能,用户借助DM,可以在数据分析过程中,统一管理分析过程中需要考虑的目标变量。
除了目标变量管理之外,DM还有许多非常强大的功能:
-
数据聚合
我们在进行数据分析的时候,面对的数据可能是非常具体的交易数据(如Sold to Party记录)。DM可以在数据分析之前就对数据进行简单的聚合:加总同一客户的交易记录,每笔交易的平均成交额等,利用这些简单的聚合功能,能提高PA模型的效果。 -
数据透视
透视模型分析高度聚合后的数据,可以非常直观地创建大量更加详细的聚合。我们继续以客户数据为例:通过解构聚合的数据透视模型,我们额可以将高度聚合后的客户交易数据,细分为不同类型:现金支取、信用卡付款、自动转账等。 -
时间处理
在分析数据的时候,时间维度非常重要。因此DM内置了不同时间维度的处理方法。无需敲代码,就能将数据划分为不同的时间维度:
-- 过去一个季度取现额度
-- 去年同一季度取现额度
-- 取现额度绝对值差异
-- 取现额度百分比差异
经过AA的分析之后,我们很快就能得出成百上千列详细描绘用户行为的数据。借助这些数据,我们可以细致地勾勒出用户画像,精确的用户画像有助于提高模型预测效果。在“变量选择”这一章,我们会解释PA是如何处理这么多列数据。PA的使用者不需要手动删除任何列,删除无关变量的工作,AA会代劳。
在进行模型训练之前,需要明确一个事实:模型会随着不同时间段的数据而改变。因此,模型需要现有一个时间戳的概念:PA在建模的时候,会选取某一时间点之前的数据用于训练模型,而这一时间点后的数据,会用于预测目标变量。时间戳这个概念,有利于PA无需人工干预,就可以创建很多模型。这一原理,我们会在“模型监控”这一章具体讲解。
训练模型 应用模型变量编码/数据分布
为了自动化创建预测模型的整个过程,非常重要的一点是:不要假设数据在预测变量或目标变量中是如何分布的。 大多数传统预测技术都基于对数据分布的假设。传统预测技术通常需要数据集是平衡的,这样才便于分类。 这意味着在训练数据集中,对于二分的数据集,一半记录应属于一个类,另一半属于另一个类。 在实际应用中,这种分布是非常罕见的。 想象一下顾客流失分析。 很可能只有一小部分,甚至极少数用户是流失用户。
AA旨在很好地处理此类不平衡数据集。 该方法是“无分布”的,意味着不对各种变量的分布做出假设。 自动分析通过将所有预测变量进行编码,将一个目标变量拆分为对目标变量具有类似影响的较小子集来实现此目标。
针对不同的变量类型,PA有相对应变量编码:
- 名义变量(如国家,材料或产品)通过将对目标变量具有类似影响的值,分组为同一类。 较不频繁的值被分组为更大且更强大的类别。
- 顺序变量(如交付状态、顾客忠诚度)的编码与名义变量类似。 除了名义变量需要考虑的因素以外,顺序变量还要考虑两点:变量的排列顺序、分组仅包含连续值。
- 数值变量则会被按不同单位进行排序和拆分,记录份额相等。 默认情况下,会创建20个单位,每个单位包含5%的可用数据。 对目标具有类似影响的连续单元组合在一起。 在每个组中,线性回归会将数据点转换为更可靠的函数。
这些转换可以在不假设数据分布的情况下进行预测。 同时,该模型变得更加可靠。
下面我们来详细分析一下这张图的含义:
首先,截图最上方标注了,这张图表分析的是预测不同年龄段的用户是否会进行购买。
- 图表的第一行,意思是有11.67%的用户的年龄在18-30岁之间
在这些用户里,有82.2%的用户不会买这个产品,有17.2%的用户会购买。 - 图表的第一行,意思是有5.73%的用户的年龄在58-95岁之间
在这些用户里,有72.98%的用户不会买这个产品,有27.02%的用户会购买。
对比上面两张截图,可以发现,系统根据数据分析的结果,自动将30-58岁分成了两个年龄段。
划分数据
AA会将用于训练模型的数据集划分为三部分:
- Estimation: 在此数据集上创建了各种模型。
- Validation: 在Estimation数据集上创建的每个模型都在此数据部分上进行验证。 将根据此验证的结果选择最佳模型。 下面的“模型选择”一章解释了该如何选择模型。
- Test: 所选模型不会在Test数据集中使用,Test数据集用于检测模型在新数据集中的效果。
PA提供了许多不同的数据分割(也称为数据切割)策略。 用户可以使用默认设置,该设置将数据拆分为用于估算和验证的集合。 但是,如果需要,用户还可以修改此配置,例如添加测试段或选择如何将各个行分配给不同数据集。
缺失值
缺失值是传统预测分析中一直都存在的难题。 许多算法无法处理此类缺失值。 因此,在这样的环境中的用户经常需要花费额外的时间来处理丢失的信息。 通常,可以尝试估计缺失值,或者可以删除整行甚至列。 但是,自动模式可以完全自动化处理缺失值。
场景一:
如果Estimation数据部分已包含缺失值,系统会为这些条目创建一个新类别。 现在,这个新类别与现有类别同等对待。 这也适用于数值变量。 对于每个数字列,具有缺失数据的所有单元格被放置到另一个组中,该组对目标的影响计算与每个数字箱或类别一样。
场景二:
如果估计数据部分完整而没有任何缺失值,但在应用模型时遇到丢失的单元格,则按如下方式处理:
- 对于连续变量,取变量的平均值填充缺失值。
- 对于分类变量,取出现次数最频繁的变量填充缺失值。
极端值
极端值有两种:
- 预测变量中的极端值:对于数值变量,它们可以是极低或极高的值,对于标称/有序变量,这些值可以是稀有值。
- 需要特例特办的某行或某列数据。
数值变量中的极端值被放置在bin中,用于编码变量的最小值或最大值。 名义/顺序变量中的极端值被放置在具有其他不频繁值的公共组中。
AA可以标记需要特例特办的某行或某列数据,以进行手动调查。 简单地说,如果预测值与实际值差距很大,则将行标记为极端值。
模型 / 变量选择
AA基于以下三个维度来选择最优模型:
-
准确
在PA里面,有一个指标用于描述模型的准确性:“预测能力(Predictive Power,缩写为KI)”。 该指标描述了解释变量所诠释的目标变量中蕴含的信息的比例。 KI越高越好。 为了提高KI值,可以尝试添加其他变量。 KI的可能值范围为0到1。 -
稳健
“预测置信度(Prediction Confidence,缩写为KR)”指标描述模型的稳健性。 它描述了模型在应用于新数据集时实现相同性能的能力。 添加其他数据行可以提高KR。 “KR”的可能值范围为0到1。如果值> = 0.95,则通常认为模型是稳健的。 -
简洁
涉及变量越少的模型,越简洁。
为了在准确,稳健和简洁之间取得适当的平衡,AA通过一个互动过程来找到最合适的模型。
首先在整个数据集上创建多个岭回归。岭回归配置了lambda参数,并且使用不同的lambda值创建了许多模型。 在这些模型中,选择具有“KI”和“KR”之和最大的模型。 然后进行迭代,试图找到更好的模型。
- 消除对模型影响最小的变量。在较小的数据集上生成一组具有不同lambda值的岭回归。
- 再次选择最佳模型。 如果此模型优于之前选择的模型,标记此模型为最佳模型。
- 回到步骤1),直到步骤3)中最佳模型的“KI”和“KR”之和小于之前。
最终,“KI”和“KR”值总和最高的模型成为所选模型,在准确性,稳健性和简单性之间实现最佳折衷。
模型的“KI”和“KR”值多重共线性
在训练和应用模型时,多重共线性通常是一个问题。 当两个或多个预测变量高度相关时,会出现多重共线性。 假设一个银行客户,我们知道月薪和这个人每月支付给储蓄账户的金额。 这两个变量Salary和Savings将高度相关。当然,也会有例外:一个人的工资越高,攒的钱就越多。
预测模型需要考虑两个或多个预测变量高度相关的情况,以确保变量不会对任何预测产生双重影响。 PA中的岭回归通过将合适的权重分配给变量,以便每个变量根据其实际的附加信息增益对模型做出贡献来解决这个问题。 在两个相关变量中,最重要的变量将产生更大的影响。 第二个变量的影响相应减少,甚至可能根本不包含在最终模型中。
模型解释
现在,我们现在知道自动创建预测模型的相关概念。 但是,了解单个模型仍然非常重要,PA提供了各种选项以帮助用户理解模型。
下面我们会结合几个例子来详细解释:
各种类型的模型图表即增益图表,包含三条线:
- 红色:随机模型
- 绿色:完美但无法实现的模型
- 蓝线:PA创建的模型
蓝线越接近绿色,模型越好
增益图表
所选变量及其在模型中的贡献/权重的概述。
变量所占权重
每个变量的概述,内容如何影响模型。 对目标的积极影响意味着成为目标的可能性增加。
58岁以上的人群的可能性最高 统计报告
混淆矩阵,用于计算可以通过特定努力识别的目标数量。
只有5%的潜在客户需要联系才能赢得23%的可能合同
导出为PPT,用于展示重要信息。
导出为PPT
模型部署
有两种部署模型的方式:
Persistence
该模型在给定数据集上应用一次,并将得到的分类分数永久写入数据库或文件。之后,任何其他进程或应用程序都可以使用这些值。 只有在重新应用模型时,才会计算新分数并再次保留。 这种评分可以在数据库中应用,而记录不必离开数据库。
当需要在应用模型和使用结果之间明确分离时,通常使用这种持久性方法。 例如,如果您想将分数提供给第三方(例如外部营销代理机构),则需要持久保存结果。
Semantic
PA同时支持将模型转换为不同编程语言的源代码。 然后可以将模型直接嵌入到数据库或应用程序中,并在需要时即时计算分数。 支持许多不同的编程语言,例如各种SQL风格,C,JavaScript,Java,Visual Basic或SAS。 例如,将模型作为新列嵌入数据库视图或存储过程中是很常见的。 每次使用该列时,都会根据最新的可用信息计算得分。 分数是实时的。
客户顾问现在可以直接在CRM使用PA的模型。 预测模型控制为客户建议哪些产品或客户离开另一家银行的可能性。
模型监测
由于用户的数据是实时更新的,而生成模型的数据则是固定的,随着时间的推移,模型的性能和稳定性会大打折扣。例如,银行将不断想要分析失去个人客户的流失风险。如果客户端的行为随时间而变化,则模型的预测能力将随之降低。由于预测模型基于历史行为模式创建,因此无法准确预测流失率。用户需要随时监测这些模型的预测能力。
PA的模型监控组建通过服务器组件自动执行,该服务器组件自动定期检查模型的预测能力。如果预测能力低于定义的阈值,PA会提醒用户重新校准模型。因此,用户在建模之后只需要维护需要重新校准的模型。
总结
希望本文档有助于理解自动分析背后的假设,以及如何在不需要统计学家的情况下生成强大的预测模型。
AA的背后,有一个非常全面的过程,通过这个流程可以找到适合该情况的最佳模型。 实现批量生产和部署预测模型。自动化建模与解释经过训练的模型的能力相结合,可确保用户充分了解并掌控PA这个强大的工具。
如果你想了解更多关于AA的那些事,可以参考这份文档:Automated Analytics User Guides and Scenarios