大数据分析案例-基于决策树算法构建员工离职预测模型

简介: 大数据分析案例-基于决策树算法构建员工离职预测模型

1.项目背景

       对企业而言,适当的人员流动以及新老员工的交替,可以给企业带来新的生命力与鲜适的生机。但是,过高的员工流失率,就会影响到企业的稳定性和健康发展。因为员工流动频繁,新员工重新熟悉工作岗位和企业环境,需要一定的适应周期,如此势必会浪费一定的时间成本和人力成本;同时,还可能会导致产品质量和生产效率的较大波动。我们通常将一般的企业的年离职率设置在8%为目标,而实际上许多的企业的员工流失率大都远远超出这个范围。富士康科技集团被誉为全球最大的代工工厂,中国内地有超过100万的工人,占总人力的85%以上。以富士康ccpbg-mit事业处烟台厂区为例,近5年的员工离职率平均在21.3%左右,其中离职员工主要为一线员工,入职时间不满一年。类似的事情在德尔福同样发生过。可见,制造企业,面临的流水线员工高频率流动、流失率居高不下的问题已十分严峻。我们为了解决问题,将分析企业员工离职原因,并且提出一些建议。


2.项目简介

2.1项目说明

本项目旨在分析该公司员工是离职数据,得出员工离职的原因,提出建议,最后构建员工离职模型,时刻关注员工情况,实现精准预测,及时做出调整,避免人员流失。


2.2数据说明

数据集来源于kaggle平台,是一家公司员工离职数据集,共有15000行,7列。具体字段信息如下:

属性名 属性描述
工资 薪资等级(低、中、高),object字符类型
满意度 员工对工作的满意度,float浮点类型
考核得分 员工的工作考核得分,float浮点类型
工程数量 员工的总工程项目数量,int整数类型
月工时 员工的月工作小时,int整数类型
工龄 员工的工龄,int整数类型
离职 员工是否离职(否0,是1),int整数类型

2.3技术工具

Python版本:3.9


代码编辑器:jupyter notebook


3.算法原理

       决策树( Decision Tree) 又称为判定树,是数据挖掘技术中的一种重要的分类与回归方法,它是一种以树结构(包括二叉树和多叉树)形式来表达的预测分析模型。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。一般,一棵决策树包含一个根节点,若干个内部结点和若干个叶结点。叶结点对应于决策结果,其他每个结点对应于一个属性测试。每个结点包含的样本集合根据属性测试的结果划分到子结点中,根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定的测试序列。决策树学习的目的是产生一棵泛化能力强,即处理未见示例强的决策树。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。



决策树的构建


特征选择:选取有较强分类能力的特征。


决策树生成:典型的算法有 ID3 和 C4.5, 它们生成决策树过程相似, ID3 是采用信息增益作为特征选择度量, 而 C4.5 采用信息增益比率。


决策树剪枝:剪枝原因是决策树生成算法生成的树对训练数据的预测很准确, 但是对于未知数据分类很差, 这就产生了过拟合的现象。涉及算法有CART算法。


决策树的划分选择


熵:物理意义是体系混乱程度的度量。


信息熵:表示事物不确定性的度量标准,可以根据数学中的概率计算,出现的概率就大,出现的机会就多,不确定性就小(信息熵小)。


4.项目实施步骤

4.1理解数据

首先导入员工离职数据集



查看数据大小



原始数据集共有15000行,7列


查看数据基本信息


从结果中看出,原始数据集中不存在缺失值,故不需要进行缺失值处理


查看数据描述性信息



从结果中可看出各特征的均值、方差、最大最小和四分位数等信息


4.2数据预处理

前面我们发现数据集不存在缺失值,所以这里我们对重复值进行删除



从结果中看出,重复的数据共有3044个


4.3探索性数据分析

4.3.1.分析满意度与离职的关系


通过箱型图我们发现,离职的员工对于工作的满意度显著低于在职员工的满意度,说明满意度是员工离职的一个重要因素,企业应当重视,增加员工的满意度,从双因素理论来说,企业在保证满足员工的保健因素外,还应当重视员工的激励因素。


4.3.2分析考核得分与离职的关系


通过箱型图发现,考核得分与离职之间的关系不是很明显,但是离职员工的最低考核得分比在职员工高且中位数也比在职员工高,说明离职的员工大部分还都是比较优秀的员工,这样的话企业更应该重视员工的离职情况,避免人才流失。


4.3.3分析工程数量与离职的关系


通过箱型图发现,离职员工的工程数量明显多于在职员工,说明员工离职的原因可能是因为工程数量太多,导致工作繁忙,压力大。作为企业,应该适当安排工作量,避免出现一个员工的工程数量过大。


4.3.4分析月工时与离职的关系


通过箱型图发现,离职员工的月工时也是明显大于在职员工的,也间接证明了前面说的工程数量,所以这是同样的问题导致,企业应当采取相应的策略来解决这一问题。


4.3.5分析工龄与离职的关系


从图发现,离职员工的工龄一般为3-5年,一般来说工龄越大离职的可能性越大,所有该企业应当在员工的工龄在3-5年的时候,多关注一下员工的满意度情况,采取一些策略,经最大可能减少人员流失。


4.3.6分析薪资与离职的关系


low_salary_dimission_rate = data[data['工资']=='低']['离职'].value_counts().values.tolist()[1]/sum(data[data['工资']=='低']['离职'].value_counts().values.tolist())
mid_salary_dimission_rate = data[data['工资']=='中']['离职'].value_counts().values.tolist()[1]/sum(data[data['工资']=='中']['离职'].value_counts().values.tolist())
high_salary_dimission_rate = data[data['工资']=='高']['离职'].value_counts().values.tolist()[1]/sum(data[data['工资']=='高']['离职'].value_counts().values.tolist())
dimission_rate = pd.DataFrame()
dimission_rate = pd.DataFrame(columns=['离职率'],index=['低','中','高'],data=[low_salary_dimission_rate,mid_salary_dimission_rate,high_salary_dimission_rate])
dimission_rate.plot(kind='barh')
plt.title('薪资等级与离职率之间的关系')
plt.show()

从图中看出,薪资等级越低,员工的离职率越高,薪资低的离职率为20%,数字还是比较大的,企业应该给员工加薪或者多加一些福利政策,以此来留住人才。


最后我们看下原始数据集中离职和在职数据的比例情况



从图看出,离职的数据远远小于在职数据,数据不均衡,所以在建模之前需要进行欠采样处理。


4.4特征工程

首先对工资等级进行编码处理,将字符型数据转化为数值型



接着对数据进行欠采样处理,这里用到的第三方库imblearn需要进行安装(pip install imblearn)


4.5模型构建

在模型构建之前,我们先对数据集进行拆分为训练集和测试集,测试集比例为0.2



构建决策树模型并输出其模型准确率


可以看出决策树模型准确率为0.92,较为不错。


4.6参数调优

这里我们使用网格搜索进行参数调优选择



接着使用最优模型参数组合重新训练模型



从结果看出优化后的模型准确率为0.95,相较于前面的0.93,模型准确率提高了不少。


4.7模型评估

首先先将最优模型的决策树可视化



接着查看模型的分类报告、混淆矩阵和ROC曲线


模型分类报告中可以看出模型在0和1分类上的精确率、召回率和F1值等信息。在模型混淆矩阵中可以看出模型在预测0和1分类时,预测正确和错误的个数。最后从ROC曲线可看出曲线靠近左上角,模型效果不错,且AUC值为0.97。


4.8模型预测

这里我们使用测试集中的前十条数据来进行模型预测



从结果中看出,模型预测正确了9个错误了1个。


5.实验总结

本次实验通过分析企业员工离职数据,得出影响员工离职因素较大的是满意度、工程数量、月工时和薪资。企业应该在这些方面进行改进优化,比如给员工增加薪资或福利,给员工下发的任务数量要合理等等来提高员工的满意度,减少人员流失。


心得与体会:


通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。


在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等


在此次实战中,我还学会了下面几点工作学习心态:


1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。


2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。


3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。


这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。


目录
打赏
0
0
0
0
38
分享
相关文章
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
95 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
高科技生命体征探测器、情绪感受器以及传感器背后的大数据平台在健康监测、生命体征检测领域的设想与系统构建
本系统由健康传感器、大数据云平台和脑机接口设备组成。传感器内置生命体征感应器、全球无线定位、人脸识别摄像头等,搜集超出现有科学认知的生命体征信息。云平台整合大数据、云计算与AI,处理并传输数据至接收者大脑芯片,实现实时健康监测。脑机接口设备通过先进通讯技术,实现对健康信息的实时感知与反馈,确保身份验证与数据安全。
员工屏幕监控系统之 C++ 图像差分算法
在现代企业管理中,员工屏幕监控系统至关重要。本文探讨了其中常用的图像差分算法,该算法通过比较相邻两帧图像的像素差异,检测屏幕内容变化,如应用程序切换等。文中提供了C++实现代码,并介绍了其在实时监控、异常行为检测和数据压缩等方面的应用,展示了其实现简单、效率高的特点。
29 15
扩散模型=进化算法!生物学大佬用数学揭示本质
在机器学习与生物学交叉领域,Tufts和Harvard大学研究人员揭示了扩散模型与进化算法的深刻联系。研究表明,扩散模型本质上是一种进化算法,通过逐步去噪生成数据点,类似于进化中的变异和选择机制。这一发现不仅在理论上具有重要意义,还提出了扩散进化方法,能够高效识别多解、处理高维复杂参数空间,并显著减少计算步骤,为图像生成、视频合成及神经网络优化等应用带来广泛潜力。论文地址:https://arxiv.org/pdf/2410.02543。
33 21
单纯接入第三方模型就无需算法备案了么?
随着人工智能的发展,企业接入第三方模型提升业务能力的现象日益普遍,但算法备案问题引发诸多讨论。根据相关法规,无论使用自研或第三方模型,只要涉及向中国境内公众提供算法推荐服务,企业均需履行备案义务。这不仅因为服务性质未变,风险依然存在,也符合监管要求。备案内容涵盖模型基本信息、算法优化目标等,且需动态管理。未备案可能面临法律和运营风险。建议企业提前规划、合规管理和积极沟通,确保合法合规运营。
探秘员工泄密行为防线:基于Go语言的布隆过滤器算法解析
在信息爆炸时代,员工泄密行为对企业构成重大威胁。本文聚焦布隆过滤器(Bloom Filter)这一高效数据结构,结合Go语言实现算法,帮助企业识别和预防泄密风险。通过构建正常操作“指纹库”,实时监测员工操作,快速筛查可疑行为。示例代码展示了如何利用布隆过滤器检测异常操作,并提出优化建议,如调整参数、结合日志分析系统等,全方位筑牢企业信息安全防线,守护核心竞争力。
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
282 13
机器学习算法的优化与改进:提升模型性能的策略与方法
员工电脑监控屏幕场景下 Python 哈希表算法的探索
在数字化办公时代,员工电脑监控屏幕是保障信息安全和提升效率的重要手段。本文探讨哈希表算法在该场景中的应用,通过Python代码例程展示如何使用哈希表存储和查询员工操作记录,并结合数据库实现数据持久化,助力企业打造高效、安全的办公环境。哈希表在快速检索员工信息、优化系统性能方面发挥关键作用,为企业管理提供有力支持。
46 20
深度解密:员工飞单需要什么证据之Python算法洞察
员工飞单是企业运营中的隐性风险,严重侵蚀公司利润。为应对这一问题,精准搜集证据至关重要。本文探讨如何利用Python编程语言及其数据结构和算法,高效取证。通过创建Transaction类存储交易数据,使用列表管理订单信息,结合排序算法和正则表达式分析交易时间和聊天记录,帮助企业识别潜在的飞单行为。Python的强大功能使得从交易流水和沟通记录中提取关键证据变得更加系统化和高效,为企业维权提供有力支持。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等