基于Stacking算法的员工离职预测分析与研究*

2019-04-17 06:09强,翟
关键词:分类器森林预测

李 强,翟 亮

(兰州财经大学 电子商务综合重点实验室,兰州 730020)

0 引 言

员工离职不仅造成企业人力资本投入的浪费,而且会给企业发展带来诸多风险,如重要客户流失、商业技术泄密、企业竞争力下降等,这些风险不仅会造成企业财产的损失,甚至会危及企业生存。因此,对员工离职问题研究就具有十分重要的理论价值和现实意义。国内外学者对于员工离职现象开展了大量研究工作,其主要包括离职因素研究、离职行为预测和员工挽留机制研究等。夏功成,胡斌,张金隆等[1]综合有关员工离职问题的研究,通过结合常识和专家知识与概率分布理论,采用定性模拟技术和QSIM算法,根据有关离职行为的特征,构建出员工离职过程模型;皮常玲,郑向敏等[2]以酒店新生代员工为研究对象,针对员工的频繁离职问题,采用问卷调查和数理统计方法研究工作价值观对离职倾向的影响,得出功利导向和长期发展等工作价值观特征对离职倾向影响较为突出的结论;刘玉敏、李广平[3]以用工单位的劳务派遣员工为研究对象,针对劳务派遣员工高离职率现象,采用层次回归法分析用工单位的组织支持感与离职倾向之间的关系,研究发现用工单位可通过改善与派遣员工之间劳动关系来获得更高绩效水平。随着机器学习算法在电信产业、银行业、电子商务等领域的广泛应用,国外一些学者开始使用机器学习方法实现员工离职预测[4-5],Edouard Ribes[6]等提出,客户流失预测[7-9]与员工离职预测具有较高的相似性,因此基于客户流失预测研究使用决策树、SVM、随机森林等机器学习算法对员工离职问题进行预测。

已有研究的定量方法分析,多采用统计方法,特征选取范围界定不够明显,未将影响员工离职的其他因素纳入模型,模型预测能力将受到影响;已有研究的定性方法分析,主要探究与离职倾向相关的因素,并提出相应的方法进行改善,处理量化数值的影响因素时,未明确刻画出其影响程度,降低了员工离职的预测能力。借鉴上述研究方法,分别使用决策树、随机森林、Adaboost算法构建模型,并提出基于Stacking集成学习算法组合Adaboost和随机森林算法构建LRA员工离职预测模型。最后,对影响员工离职的因素进行分析,有助于帮助企业决策者调整管理策略、降低员工离职风险、作出正确的决策。

1 算法介绍

1.1 Adaboost算法

Adaboost是集成学习领域Boosting算法[10-11]中最具有代表性的算法。算法通过改变训练数据分布,针对同一个训练数据集,训练不同的弱分类器,再将若干个弱分类器集合成一个强分类器来实现。提高预测准确率是分类算法研究的持续主题,Adaboost算法能显著提高分类准确率[12],使其在机器学习领域得到极大关注。算法过程如下:

(2)使用带有权值分布的Dm训练数据集,在第m轮训练后得到的基本分类器Gm(x):χ→{-1,1},(m=1,2,…,M其中m代表训练轮数),其中Gx(m)为在第m次训练得到的基本分类器。

(3)计算Gm(x)在训练数据集上的分类误差

其中,

(4)计算Gm(x)的系数

(5)更新训练集的权值分布

Dm+1=(wm+1,1,wm+1,2,…,wm+1,i,…,wm+1,N)

(其中i=1,2,…,N)

其中Zm是规范化因子,

其目的是使得Dm+1成为一个概率分布。

(6)构建基本分类器的线性组合

(7)得到最终分类器

线性组合f(x)实现M个基学习器的加权表决,αm表示基本分类器Gm(x)的重要程度。

1.2 随机森林(Random Forest)算法

Breiman于2001年提出的随机森林[13]是集成学习Bagging算法的一种衍生算法。算法通过将若干CART决策树进行集成,最终结果由每个基学习器投票产生来实现。随机森林算法流程如图1。随机森林通过如下特点提升集成的泛化性能:

图1 随机森林算法流程

(1)样本扰动。通过自助采样法[14]对初始数据集进行采样得到数据子集,实现基学习器的多样性,在模型的构建过程中引入随机性。

(2)属性扰动。通过基学习器(这里的基学习器为CART树)的每个节点,先从这个节点的所有属性集合中,随机选择一个包含有N个属性的子集,接着从这个属性子集中,选择一个最优的属性进行划分。关于N值,Breiman的论文[13]建议取值N=log2d,N值代表随机性引入程度,d为属性个数。采用这种方法,不仅关注单棵决策树分类器性能,也减少了每棵决策树之间的相关性,提高组合分类器的性能,增加算法对噪声的鲁棒性。

1.3 Stacking算法

Wolpert于1992年提出Stacking算法,也被称为Stacked Generalization[15]。与Bagging和Boosting算法采用相同类型的基学习器的区别是:Stacking算法采用一种特殊的结合策略,可以结合不同类型的基学习器进行学习。算法可简要描述为:将基模型的输出结果当作新特征,输入到其他模型中,采用这种方法实现模型的堆叠,即将第一层的模型输出结果作为第二层模型的输入特征,第二层模型的输出结果作为第三层模型的输入特征,依次类推,以最后一层模型输出作为最终结果。在两层结构的Stacking算法中,周志华[16]等将第一层基学习器称作初级学习器,而将第二层中用于结合的学习器称作次级学习器。使用二层结构的Stacking算法并以5折交叉验证为例,阐述Stacking算法过程,具体步骤为:

(1)将数据集划分为5部分,每次使用其中的1部分做验证集,使用其余4部分做训练集,得到5个个体学习器的输出结果;

(2)对于训练集,每次训练得到一个模型,则使用该模型对验证集进行预测,将预测结果作为验证集所对应样本的第二层输入特征,依次进行,经过5次遍历,每个训练样本就能得到输出结果以此作为第二层模型的输入特征;

(3)对于测试集,每次训练出一个模型时,都要对整个测试集进行预测,最终测试集的每个样本会产生5个输出结果,将这些结果取平均输入到第二层;

(4)最后采用另外一个次级学习器对步骤(2)中得到的预测结果进行训练,采用步骤(3)得到的结果作为测试集进行预测

1.4 LRA员工离职预测建模方法

1.4.1 LRA模型框架

LRA(Logistic-RandomForest-Adaboost)模型采用以随机森林、Adaboost作为初级分类器,Logistic作为次级分类器,5折交叉验证构建模型,模型框架描述如图2。在原训练集上使用随机森林、Adaboost进行训练并在交叉验证集上进行预测,分别得到一组预测值,这些预测值将作为次级学习器的新的训练集;对于测试集而言,每一次在原训练集上得到的模型都要在测试集上进行预测,在5折交叉验证中,测试集上要进行5次预测,将这5次预测的结果取平均,就得到新的测试集,这个测试集将作为次级学习新的测试集。最后,使用Logistic次级学习器在新的训练集上训练,在新的测试集上进行测试,便得到了最终的预测结果。

图2 LRA模型(以5折交叉验证为例)

1.4.2 LRA模型分类算法流程

根据图2模型框架,以及相关理论知识,现将LRA模型分类算法操作步骤描述如下:

(1)初始化。训练集T={(x1,y1),(x2,y2),…,(xN,yN)};

初级学习器Adaboost、RF(Random Forest);次级学习器 Logistic;交叉验证集数k=5。

(2)对随机森林和Adaboost分别使用网格搜索法进行5折交叉验证,T1,T2,…,T5=k_Fold(T,k=5),分别获得随机森林和Adaboost的最优参数组合。

(3)训练初始学习器

① ForTjinT:

② 分别使用5折交叉验证中的4部分作为训练集进行训练,剩下的1部分作为测试集进行预测,得到初始学习器随机森林和Adaboost和每一部分的预测结果

Adaboostclf[j]= Adaboost(T-Tj)

RFclf[j]=RF(T-Tj)

③ 5折交叉验证中,每一部分预测得到的初始学习器随机森林和Adaboost都要在原数据集的测试集上进行测试,得到的测试结果构成新的测试集,并将得到的新的测试结果和②中所得到的预测结果存放起来,构成次级学习的训练集和测试集:

Meta={}

ForxiinTj:

si1= Adaboostclf[j].predict(xi)

si2= RFclf[j].predict(xi)

Meta.append((si1,si2),yi)

(4)使用次级学习器Logistic对步骤③得到的训练集和测试集进行训练和测试,得到最终的预测结果。

2 实验及结果分析

使用某企业人力资源部门的1 100条员工统计数据,包括年龄、性别、受教育程度、薪资、加班情况、收入等36个原始特征,数据可理化属性统计见表1。针对使用的数据,进行数据预处理[17]和特征选择[18]的过程以及步骤简述为

(1)对数据进行清洗,清除掉对算法和建模无关的数据。包括员工ID、员工姓名、家庭住址等4个特征;

(2)对于字符串形式的特征,转换为标称型指标。包括将性别、差旅情况、加班与否等8个特征,转换为对应的标称型指标;

(3)对于连续性特征,进行离散化处理。包括将年龄、公司距离、收入等15个特征等距离散化划分为指定的n组;

(4)对于只能接受定量特征作为输入的机器学习算法和模型,使用哑变量处理的方式将定性特征转换为定量特征。包括部门名称、受教育背景、职业角色等9个特征进行哑变量处理。

表1 员工数据理化信息

(5)将经过离散化等技术处理后的特征进行合并,得到的新数据集,共计122个特征。

(6)对特征数据进行归一化[19]处理。采用最大最小归一化方法,将所有特征归一化到[0,1]区间,计算公式描述为

如年龄为“30岁”,进行归一化处理:xnormalization=(30-18)/(60-18)=0.286。

(7)采用基于树模型的特征选择[19]方法,从122个特征中选择出51个特征,以此作为模型的输入特征。

(8)采用随机数据划分,将数据划分为80%的训练数据和20%的测试数据。基于随机森林、Adaboost、决策树机器学习算法,分别在训练集进行训练建立模型后在测试集进行测试;并且采用基于Logistic模型作为次级学习器的Stacking算法将Adaboost和随机森林模型进行结合建立LRA模型,对测试集进行预测。

实验中,使用准确率、查准率(精确率Precision)、查全率(召回率Recall)、F1值指标来衡量模型性能。其中,LTP代表离职员工样本分类正确数,LFN为离职员工样本分类错误数,LTN代表未离职员工分类正确数,LFP代表未离职员工样本分类错误数。将准确率(fACC)公式描述为

查准率(精确率)公式描述为

查全率(召回率)公式描述为

F1度量公式描述为

各模型的准确率、查准率、查全率以及F1度量输出结果见表2。通过集成学习算法所构建的模型中,Stacking算法可以集成不同类型的基学习器进行学习,这一点相对于集成同类型基学习器的Adaboost和随机森林有所不同,对预测准确率的提高有所帮助。实验预测结果显示,基于Stacking算法构建的LRA模型预测准确率较Adaboost和随机森林模型有所提高在数据上证实了模型可行性。F1度量是精确率和召回率的综合评价指标,是查全率和查全率的调和平均反映出模型性能有效性和稳健性。

表2 各模型性能度量指标值

因此从F1度量值分析:决策数模型的F1度量值最低,为0.297 8;LRA模型F1度量值最高,达到0.526 3,较决策树模型的F1度量值提高0.2左右;Adaboost和随机森林模型得到的F1度量为0.523 8和0.405 4,均高于决策树模型的F1度量,模型Adaboost的F1度量高于随机森林模型,但略低于LRA模型。因此,LRA模型的稳健性较其他模型更为突出。

根据表2可看出,LRA模型相关的度量指标均证明了模型可靠性,因此可使用模型进行员工离职倾向预测。对LRA模型预测结果进一步分析,将输入模型的特征进行重要性排序,得到与离职倾向相关的主要因素。根据最具影响力的离职因素重要性排序图,如图3所示,影响离职的主要因素为:加班、工龄(0~3年)、收入、职业级别等。这些影响因素与该企业员工离职行为的实际情况较为符合,对组织管理实践具有重要的指导意义。企业决策者可以根据这些重要的影响因素制定相关的政策:

(1)减少加班次数,降低员工离职意愿;

(2)高度关注工龄在0~3年的员工工作诉求,稳定员工队伍;

(3)制定合理的薪酬制度,提高员工相应的收入待遇,激发员工的工作积极性,以保证为企业发展贡献力量;

(4)关注业务发展的同时,应留有足够的精力重点关注员工的需求,提高员工工作与生活平衡度和工作满意度等;

(5)完善与离职倾向相关的各项制度,采取一系列干预策略减少职业级别较高的管理层员工的离职意愿,尽量避免因这部分员工离职所造成企业的损失。

图3 影响离职的因素

3 结 语

介绍了随机森林和Adaboost集成学习算法,并基于Stacking集成学习构建LRA员工离职倾向预测模型,模型克服了现有员工离职倾向预测方法存在的不足,结合企业相关人力资源数据,对原始数据进行数据清洗工作后建模、调参得到模型的最优参数组合后进行预测。实验结果表明,LRA模型对于员工离职分析具有一定的指导作用,以数据为驱动的员工离职预测方法主要基于客观实验,不受主观因素的影响,因此提出的方法可以集成于支持决策系统中,用于辅助提高人力资源决策者的员工离职行为预测能力;更进一步,对影响员工离职的主要因素进行分析,可以帮助企业决策者针对员工离职倾向采取相应的应对方案,或是制定政策努力留下优秀的员工;或是采取措施,最大限度地避免因员工离职带来的企业损失。

猜你喜欢
分类器森林预测
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
基于差异性测度的遥感自适应分类器选择
基于实例的强分类器快速集成方法
不必预测未来,只需把握现在
哈Q森林
哈Q森林
哈Q森林
哈Q森林