Machine Learning—决策树实际应用

Decision Trees algorithm(决策树算法)是一个分类和回归算法,能够被用于连续值和离散值的预测。

对于离散值,算法将基于input columns(输入字段)之间的关系做预测。它用输入字段的states(值)预测被预测字段的值。例如,预测哪些客户更可能购买某个产品?

对于连续值,算法将用线性回归决定决策树的分叉。

如果有多个预测字段,算法将为每个预测字段分别建立独立的决策树。

本文将讨论前者的应用。用X公司ITIL(Information Technology Infrastructure Library)数据,对模型进行training(训练),根据模型结果,回答下列两个问题:

1、所有Service Level Agreements Performance KPI未达标的tickets missed(在目标时间内未解决的问题)的可能性是多少?

2、tickets missed的影响因素有哪些?

算法基本原理

Decision Trees算法创建模型时,生成一系列分叉树,每个分叉代表一个节点,当发现输入变量与预测变量有重大相关性时,增加一个节点。

例如,如下图所示,不同年龄购买某产品的可能性不同,Decision Trees算法会根据年龄增加节点。

创建模型

创建模型之前需要准备数据,首先,把ITIL源数据通过ETL(Extract, Transform, Load)工具清洗、转换、加载到Database(数据库)里,Database可以是关系的或者非关系型的,然后,探察数据,接着,建立模型,用历史数据Training模型,最后,验证模型。详细开发过程,不在本文描述,可参考文档:https://docs.microsoft.com/en-us/sql/analysis-services/data-mining/data-mining-ssas。

我们将用Decision Trees(决策树)、Clustering(聚类)和Naive Bayes(贝叶斯)三个算法分别建三个模型,它们的inputs和outputs(输出字段)完全一样,参数也都是按照Default(默认值)设置,如下图所示。

Decision Tress, Clustering and Naive Bayes

并行Training完3个模型后,用Lift Chart选择最优的算法。Lift Chart总共有5条曲线,分别代表随机模型,理想模型,3个算法模型。其中Decision Trees的得分最高,为0.85,所以,我们将选择Decision Trees作为最终模型的算法,如下图所示。

Lift Chart for Decision Trees, Clustering and Naive Bayes models

定制模型

Feature Selection特征值选择

Feature Selection是Machine Learning(机器学习)的一个技巧或工具,用于减少inputs,使模型适合训练和分析。它不仅仅用于减少inputs,也适合分析师或模型选择inputs。

特征值选择在建模中很关键,主要有两个原因:

1、噪音字段会使模型发现有意义的规律变得困难。

2、为了发现高质量的规律,算法通常需要很大的训练数据集,但在应用中很小的数据集有价值。

SSAS(SQL Server Analysis Service)在训练模型前,会执行特征值选择。总体上,通过计算每一个Attribute(字段)分数,只选择分数高的Attribute,当然,这个阈值是可以调整的。

Decision Trees有三个参数供调整:

MAXIMUM_INPUT_ATTRIBUTES 最大输入字段,默认值255

MAXIMUM_OUTPUT_ATTRIBUTES 最大输出字段,默认值255

SCORE_METHOD 三种评分方法:Shannon's Entropy, Bayesian with K2 Prior, Bayesian Dirichlet with uniform prior(默认值)

三种评分方法的原理,请参看https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2012/ms175382%28v%3dsql.110%29。

本案例中,inputs大概160个,但我们通过手工选择和工具自动选择相结合的方式,最终选择了9个字段,如图Decision Trees, Clustering and Naive Bayes所示。

首先,依据评分从大到小排列inputs,然后,根据业务需求,选择有业务价值的inputs。

例如,

Caller Country, Caller :地点太细,地区太大,选择国家比较合适

Restate相关字段:这些字段跟模型需解决的问题不相关,都可以删除

TTR_Dr等字段:这些字段用于计算某个SLA的中间字段,也都可以删除

Over-fitted过度拟合

在建模中会遇到一个普遍的问题,模型对数据集的微小变化过于敏感,导致过度拟合,过度拟合的模型没有普适性。为了避免这个问题,我们可以设置MINIMUM_SUPPORT参数。

默认值10(个数),本案例中设置0.01(1%),树的层级从15减少到11,节点也明显减少,这样易解释数据的业务含义(模型结论中将详细讨论),如下图所示。

MINIMUM_SUPPORT参数调整前(10)

MINIMUM_SUPPORT参数调整后(0.01)

扩展性和性能

SSAS Decision Trees通过特征值选择、Bayesian scoring控制树的增长、动态分组inputs决定最重要的值来提高性能,而且training过程能并行处理单个模型。但是,如果性能问题很严重,也可以通过以下方式来提高性能。必须提醒的是,模型结果也将改变。

1、增加COMPLEXITY_PENALTY值,限制树的增长

2、减少可预测字段的数量,限制树的个数

3、增加MINIMUM_SUPPORT值,避免过度拟合

4、通过分组,Attribute离散值控制在10个以内

模型结论

如果用6年的历史数据训练模型,

tickets missed的可能性:4.92%

主要影响因素:

Case 1: RSLV SUPP SPLR NM not = 'HP' and Source Of Call not = 'Phone' and Resolution Tool = 'OVSD'

明细数据主要分布在早期(2012、2013、2014),如下图所示。

Closed_Date = ALL

事实上,根据业务需求,OVSD等将逐步由SM7代替,历史数据参考意义不大。所以,为了分析最近几年的数据,模型中增加过滤器(Closed_Date >= 20150101),重新训练模型后,

tickets missed的可能性:2.97%

主要影响因素:

Case 1: Source Of Call = 'E-mail' and Service Line = 'server management'

Case 2: Source Of Call = 'E-mail' and Service Line = 'global service desk' and Caller Country = 'France'

换句话说,E-mail和server management类型的tickets更可能missed,或者E-mail、global service desk和France类型的tickets更可能missed。

业务分析师分析这些影响因素后,可继续向下钻取,探察明细数据,例如,哪个SLA?哪个Workgroup?如下图所示。

根据模型结果,调整策略,部署资源,减少tickets missed,减少罚金(未达标将罚款)。

Closed_Date >= 20150101

知乎:https://www.zhihu.com/people/cao-tian-fa

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G01KMM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券