从Kaggle网站上获取了一个公司一年内的员工离职情况,这份数据一共有1470份样本(记录),其中237份为离职样本,共有35个属性,包括年龄、性别、收入等。现在通过在Rapidminer软件上采用决策树、随机森林、支持向量机(SVM)三种机器学习算法,以及逻辑回归算法对员工离职原因进行挖掘,在35个属性中筛选出主要原因后再通过Tableau软件进行可视化分析。
目标:通过训练模型调整参数尽可能使得模型有实际应用意义(可迁移性);在较多的数据属性中挖掘关键的变量(影响员工离职的因素)并做可视化分析。
二、结果概览(部分) 三、机器学习挖掘过程 1.数据预处理①数据的分离与抽样
由于该数据集中正例与负例的样本数量存在不均衡的情况,因此将原数据集根据预测值分为两个数据集,并且对样本量较多的负例进行抽样,抽样后再与正例的数据集进行连接。
②属性筛选
有一些属性没有方差,对实际的预测没有意义,例如“over 18”指的是员工年龄是否超过18岁,而数据集中所有样本的这一属性均为“Yes”,因此需要把这些无意义的属性筛选出去。
③设置标签
将是否离职设置为标签。
2.决策树①流程
②参数优化算子
参数
范围
生成指标
Gain ratio,information gain,gini index,accuracy
层数
5-10层
信度
0.1-0.5,10个
最小信息增益率
0.01-0.05,10个
③模型运行性能指标
经过多种参数优化后,决策树的结果准确率达到70%,达到合格水平,AUC值为0.662,只比0.5高了一点,所以该模型的拟合效果一般,泛化应用意义不大,但是其生成的决策树解释力较强,可用于员工离职原因的分析。
PerformanceVector:
accuracy: 70.21%
precision: 69.46%
recall: 84.67%
AUC: 0.662
④模型运行结果
在属性权重图中,过去一年培训次数、年龄、环境满意度权重占比较高,表明这些属性在决策树分支中出现次数最多,在存在某些条件的情况下往往是决定是否离职的较为关键因素。决策树结果表明,过去一年培训次数往往与工作角色、工作年数组合起来考虑,尤其是当工作角色为经理、总监这类高级管理人员时,如果培训次数较少可能造成较高的员工流失率,这可能是因为这类员工需要不断提升自身知识储备和能力来适应岗位需求的变化。
⑤生成决策树
决策树的分支中,“是否加班”成为决策树分支的第一个节点,决定了后面决策树的走向,说明加班是对离职造成影响的重要原因之一。从决策树后续分支来看,加班对离职的影响程度还受到其它因素的综合作用。
在不加班的员工中,如果环境满意度、人资关系满意度较低,离家距离较远,也可能导致离职,并且这些因素也会与工作角色共同产生影响。
在加班的员工中,不同的工作角色离职的原因也会有所区别,比如销售主管更在意股票期权级别、培训次数等;而技术人员在意工作参与程度。
以上决策树的因素分析也说明企业需要针对具体的工作岗位了解员工的离职因素,制定相关合理的政策应对员工流失,尤其是要保留住高级和关键的员工。
3.随机森林①预实验-确立最佳参数设置
负例“no”样本数不变,保持237个样本;正例样本“yes”抽样300个。
运用Optimize Parameters算子,对随机森林的三个主要参数进行调节:树的最大深度(Maximal depth),树的总数(Number of trees),决策树生成的指标(criterion)。
树的深度设置
100,150,200,250,300
最大深度设置
5层-20层
决策树生成指标
Gain ratio,information gain,gini index,accuracy
运行流程如图
最佳参数设置解读
a.树的数量
以树的数量为横轴,分别以准确率和AUC值为纵轴,左图颜色代表树的层数,右图颜色代表树的生成指标。
可以看到,准确率和AUC值与树的数量并没有必然的线性联系,但是从颜色分布上,准确率和AUC值可能与树的层数和生成指标更加相关,这一点将在后续讨论。
b.树的深度
以树的深度为横坐标,分别以准确率和AUC值为纵坐标,散点颜色代表树的生成指标,作图如下。
从左图来看,当生成指标为gain ratio时,准确率与树的层数有一定程度的正相关关系,即总体来说,树的层数越多,准确率就越高。在其它的三个指标的条件下,准确率与树的层数关系并不明显。
从右图看,AUC值与树的层数之间的关系并不明显,散点较为分散。
c.生成指标
以指标为横坐标,准确率和AUC值为纵坐标,颜色代表树的深度,作图如图所示。
左图,当指标为gain ratio时,准确率分布较为分散,与树的层数有关,与上文结论一致。其余三个指标下的准确率分布都较为集中。
右图,四个指标的AUC值分布的方差较为相近,最大值和最小值的分布有所差异。
②正式实验
在前面的预实验中发现,准确率和AUC值与树的棵树之间的联系性较弱,与树的层数、决策树生成指标更加相关,在正式实验中,参数优化加入了confidence和minimal gain,为了避免运行时间过长,这次不再加入树的棵树这个参数,默认100棵,此次设置的参数如下:
参数
范围
树的层数
5-10
生成指标
Gain ratio,information gain,gini index,accuracy
剪枝信度
0.1-0.5,5个
剪枝最小信息增益率
0.01-0.05,5个
③模型性能指标
通过参数优化设置,随机森林的预测效果也较好,准确率达到了76%,AUC值也超过了0.8,说明模型拟合效果和鲁棒性都比较好,有应用价值,但是对正例的预测召回率不佳。
PerformanceVector:
accuracy: 76.16%
precision: 75.25%
recall: 86.00%
AUC: 0.813
④运行结果
年龄、离家距离、收入属性权重高,说明在随机森林的100棵树中,这三个属性在决策树分支中出现频率最高,也就是在某些条件已经存在时,这三个因素构成了对离职的较为关键原因。这符合逻辑常识,离家距离越远、每月收入越少,员工流失的可能性就越大,年龄这个因素则需要与其它因素结合起来进行考虑。
4.支持向量机①流程
②核函数设置
运用optimize parameters调整核函数
运行结果
最优结果的核函数为anova函数,下图为最优情况的混淆矩阵以及性能指标。
④惩罚系数C值与gamma系数的设置
继续优化参数,将两个参数的范围均设置为0-10,并在这个范围内按照线性等距设置20个可选项:
⑤最优结果-模型性能指标
通过合适的核函数选择和参数设置,支持向量机的模型拟合效果较好,达到了较高的准确率和AUC值,说明模型泛化能力较好,有可应用价值。并且支持向量机的优点是对样本量少的数据和属性很多的数据也有较好的分类效果,但是对分布不均衡的数据样本可能会造成很严重的偏向性问题。例如在本次报告中,支持向量机对与正例的预测召回率较低,这可能就是由于正例样本较少造成的。
样本的不均衡性会影响各个类别的预测效果,支持向量机对不均衡样本是比较敏感的,我们发现,当降低负例的抽样个数时,正例的预测效果会显著上升,因此每个类别的预测效果受到样本数量对比作用的影响。
PerformanceVector:
accuracy: 78.96%
precision: 78.38%
recall: 87.00%
AUC: 0.844
⑥运行结果
属性权重
在支持向量机的权重属性结果中,工作过的公司的数量、出差频率高以及加班对预测员工离职有正向影响;工作参与程度、年龄、工作满意度则是预测员工不离职的因素。
5.Logistic回归①流程
先将总数据集进行数据预处理,删除与实验无关属性,将数据集分成确认离职集和没有离职集,由于两个集和分布比例不均,用Sample算子从没有离职集合中随机抽取300份数据再用Append算子合并,并用Set Role算子对是否离职这一属性进行标签,再用Logisitic Regression和Cross Validation算子进行回归和检验结果,根据初始生成结果,删掉p值较大的属性,反复迭代多次,直到准确率和AUC值不再增加。
最终筛选排除的属性如下表格所示,有“加薪百分比、在公司工作年数、教育、教育研究领域、每月收入、股票期权级别、部门”。考虑原因如下:加薪百分比可能与员工晋升有关,保留员工晋升属性即可。离职与个人教育方面相关性也不大,教育水平高或低都会离职。股票期权级别显著性不高可能是因为公司一直没有行权的原因。并且员工离职在各部门当中都普遍存在。值得注意的是,属性“在公司工作年数”虽然显著,但排除后模型的准确率提高,说明该属性在本次员工离职预测模型中并不适用。
②结果性能指标
accuracy: 78.41%
precision: 80.84%
recall: 81.33%
AUC: 0.842
p-value排序(可近似看作属性权重排序)
四、模型性能对比-Tableau可视化1.决策树预测效果在这几种方法中最差,包括准确率、AUC值、召回率、精准度都是最低,尽管运用了预剪枝和后剪枝防止过拟合,并且通过参数优化进行了调整,但是最终模型的预测结果依然十分受限,这可能是因为这份数据集属性较多较为复杂,决策树很难充分完全的捕捉到复杂信息,层数太少可能导致欠拟合,丢失掉很多有用信息;层数太多又会导致过拟合,因此决策树对这份数据的预测效果欠佳。但是决策树的优点在于其可解释性非常强,通过生成的决策树能够对员工离职的因素做分析并提供参考。
2.综合来看,逻辑回归和支持向量机的综合表现是最好的,在准确率和AUC值方面均达到较高水平,表明模型有一定程度的可迁移性和应用性;另外,这两个模型在召回率、精准度的表现上各有优势,如果希望召回率更高(实际离职的员工中被提前发现的比率高),则更可能选择支持向量机;如果希望精准度更高(预测为离职的员工中实际离职的员工所占的比率),则更可能选择逻辑回归方法。
后续原因分析假设检验、可视化内容可看下篇:http://t.csdnimg.cn/vVeoc