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
领取专属 10元无门槛券
私享最新 技术干货