基于机器学习算法的数据分析师薪资预测模型优化研究(文末送书)

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者

🐋 希望大家多多支持,我们一起进步!😄

如果文章对你有帮助的话,

欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、实验背景

二、实验内容及数据

2.1数据来源

2.2变量描述

三、数据处理

3.1导入模块和数据

3.2数据清洗

四、构建模型

4.1导入模块和数据

4.2变量转换

4.2建立模型

五、模型预测

六、实验总结

文末推荐与福利


一、实验背景

目前,随着科技与经济的进步,我国高校不断扩招使精英教育逐步转变为惠及每个普通公民的大众教育,但另一方面这却导致了应届毕业生就业形势日渐严峻的问题。而毕业生就业日益困难的一个关键原因就在于就业预期偏高,且主要表现在对于薪酬的预期过高。这是因为在二十一世纪教育水平、人们生活质量都不断进步和提高的过程当中,学生对自我的期望和定位也越来越高,然而这却与就业市场环境竞争越来越激烈、企业挑选人才更看重实力而非学历的现状形成强烈矛盾。学生认为的自我能力模型往往和企业招聘选拔标准之间存在偏差,因此导致了应届生找工作扎堆在高薪企业而常常忽视自己更有可能应聘成功的普通企业的情况,这就在一定程度上促成了就业难的社会现象。因而对毕业生的就业情况进行准确评估,制定合理的薪酬预期就显得十分重要。为此,人们提出了数据挖掘技术通过对已有毕业生的海量就业原始数据进行分析并发现其中重要的数据模式,最终将原始数据转换成有用的信息和知识。常用的数据挖掘技术有很多,而机器学习方法则是主要的数据挖掘技术之一。机器学习能够利用数据进行训练并总结学习经验,最终根据训练结果得出数据的分析理解模型,所以有效地利用机器学习技术可以帮助我们理解和分析数据,进行建模训练来实现预测未知毕业生就业水平的目的,以期达到帮助毕业生建立合理的就业预期,提高就业率的最终目的。

数据挖掘是涉及到人工智能、机器学、统计学以及数据库系统的交叉领域的一种在大数据中发现潜在信息的计算过程,因此它属于计算机科学的一个跨学科的子领域。数据挖掘过程的总体目标是从大量的数据集中提取信息,并将其转化成可以理解的结构用于进一步使用。分类作为数据挖掘领域的一个重要分枝,是模式识别的一个实例。分类是在分析包含各个类别的已知类别数据样本集的基础上,识别未知类别数据样本所属分类的过程。分类算法作为一个主要的研究领域包含很多分枝,其中常用的分类方法主要包括:决策树方法、人工神经网络方法、支持向量机、向量空间模型、贝叶斯、K-近邻分类算法以及基于关联规则的分类算法。除此之外,目前融合多种算法的集成学习算法也逐渐成为研究的热门领域,例如Bagging和Boosting等。本实验主要运用决策树(DecisionTrees)方法进行预测模型研究。

二、实验内容及数据

2.1数据来源

项目数据来自前程无忧、拉勾网、51job等招聘网站的招聘信息,涉及职位、公司名称、地区、公司类别、公司规模、行业类别、工作经验、学历、人数、职位描述、最低薪资、最高薪资。本数据集仅保留无缺省值的7093个数据和4个参数,分别是学历、地区、工作经验、最高薪资,原始数据部分如图:

针对因学生对薪酬预期过高导致就业难的问题,本实践首先对数据集中的薪资、工作经验进行可视化分析,然后利用基于决策树的分类算法对数据分析师的就业数据进行预测,建立了薪酬预测模型。

2.2变量描述

薪资水平不仅和个人的能力相关联,也和企业甚至社会存在密切关系,受到很多主客观因素的影响,因此薪资预测是一个相当复杂的计算过程。而且由于此处是利用招聘信息来预测其可能的录取薪资,因此还与招聘的信息完整度有关系,因此提取特征的好坏对模型的影响至关重要。此处采用了手动选择的方式来提取特征,特征信息可以分为以下几种类型:

1.个人因素

招聘信息中属于个人因素的有年龄、性别、地区、联系电话以及Email。其中名字、联系电话以及Email属于唯一标识属性,与薪资预测没有任何关联;年龄和性别是个人的基本属性,某些岗位可能对它们有一定的要求,因此它们对于薪资预测有一定的隐性影响;地区在一定程度上能够反映的一个人在某地可能停留的时间,对于薪资预测具有重要影响。

2.学校因素

招聘信息中属于学校因素的有学历、专业。学历及专业能够反映一个人的学习能力和基本技能,对薪资预测有重要影响,是薪资预测模型中关键特征因素。

3.社会因素

招聘信息中属于社会因素的有工作经验、工作公司、工作岗位。其中工作经验能够反映个人的适应能力以及对技能的熟练度,是薪资预测的关键特征因素因此也将其作为薪资预测模型的数据特征之一,工作公司与工作岗位是一种随机因素,与薪资预测无关。

综上所述,薪资预测所用到的数据特征包括岗位、地区、学历、工作公司、工作经验等。由于从招聘网站中提取出来的信息一般都是字符型数据,然而薪资预测模型必须采用数值型数据作为训练数据集,因此还需要对这些数据特征进行一些数据预处理操作,例如将其从字符型数据转换成数值型数据和对数值进行标准化和归一化操作等,薪资预测模型的数据特征基本情况如表所示。其中,在实际情况中的特征应该不止3种,但是本实践所用到的薪资预测模型的实验数据仅从数据库的所有数据中抽取了其中3种岗位的相关数据。

表1变量说明

|------------------|--------|
| 变量名 | 说明 |
| Salary | 薪资 |
| Work Y ear | 工作经验 |
| Education | 学历 |
| Area | 地区 |

后三个为特征,薪资为标签。在实际生活中,薪资水平与很多因素相关,包括了个人因素、公司因素和社会因素等,薪资预测过程会相当复杂。但是由于此处是利用招聘的内容信息来实现薪资预测,而且招聘信息存在着很多种不同的版本,不同版本的招聘之间的内容和格式都有可能不尽相同,因此为了简化训练模型结构和减少数据处理,此处仅提取了招聘中通用的关键因素。

三、数据处理

3.1导入模块和数据

进行可视化分析程序编写前先导入我们所需要的模块。

首先将数据集导入,读取文件以获得数据。

3.2数据清洗

数据的采集决定着原始数据的整洁程度,而数据的质量对最终的建模起着关键性的作用,所以需要对这些原始数据进行相关的预处理,才能对数据进行建模,如果直接对原始数据进行建模,则可能会导致所建的模型不准确,错误的模型得到分析结果就可能会有错误,这样就会严重误导决策。一个完整的建模过程中60%的时间和精力是用来进行数据的抽样、数据的清洗与数据的转换等相关数据预处理工作。本实践在获取的招聘岗位数据中有许多脏数据的产生如:各种乱入符号,数据记录错误,数值变量混有文本等,所以对原始数据的清洗过程在机器学习过程中是至关重要的。数据清洗就是将重复、多余的异常数据进行筛选清除,将缺失的异常数据进行补充完整,将错误的数据进行纠正或者删除,最后将数据整理成为我们可以进一步加工、使用的数据。对数据清洗的一般方法和步骤有:分析数据、缺失值处理、异常值处理、去重处理、噪音数据处理等。

1.描述性统计

本实践首先对获取的网络招聘岗位数据进行了缺失值处理,在清洗数据的过程中,结合了python中的两个常用工具库pandas和numpy利用其封装的数据分析方法和计算能力,对数进行清洗。首先进行了数据信息的统计,通过对数据信息的统计包含有公司名称、公司类别、公司规模、行业类别、人数、岗位描述这样的信息,这些变量中信息的缺失值较多,由于这列变量中的数据对薪资的预测结果产生影响不是很重要,因此采用了删除法对这列特征进行了删除。在其它文本特征变量的数据中对存在的少量缺失值,可以利用填充法进行处理,并且查看描述性统计,确认是否存在异常值或者缺失值。

2.预处理

薪资的分布比较多,总计有75种,为了更好地进行分析,我们要对薪资做一个预处理。根据其分布情况,可以将它分成(5k以下、5k-10k、10k-20k、20k-30k、30k-40k、40k以上),为了更加方便我们分析,取每个最低薪资范围的中位数,并划分到我们指定的范围内。

3.可视化分析

通过对文本数据的处理,为了能以更好的效果展示出数据分析师的薪酬分布,本实践利用可视化图像对其进行分析。可视化是利用图像处理技术和计算机图形学将数据转变成人眼可感知的图像,它是通过形状、色彩、位置、亮度等对数据属性进行描述,以便用户可以快捷地获得最有效的信息。本实践利用python环境对薪资、地区、学历通过代码的形式把数据中出现频率以视觉化展示出来,使浏览者一眼就可以看出数据信息。

从图可以看出数据分析师的薪资分布在5k-10k的比例最多,多达40.58%;5k以下占据比例也较多,在35%以上;在一线城市数据分析师的薪资也能达到10k-20k,薪资水平超20%;薪资达到20-30k的就较为少见,只有2%左右;30k-40k的薪资十分罕见,仅占0.54%;40k以上只占0.118%。

针对应届毕业生就业困难,我们主要关注企业招聘数据分析师对于工作经验的需求是否强烈,因此运用柱状图进行可视化分析工作经验。

由图中可以看出工作经验对于数据分析师来说没有工作经验的应届毕业生的需求较为可观;对1-3年工作经验的需求减半;四年以上工作经验的基本较少。

地区不同,薪资水平也有所不同。所以可视化分析还可以针对性获得出不同地区对数据分析师的需求。在代码中只需更改"经验"为"地区"。

从图中也可以看出,类似上海这一经济发达的地区对于数据分析师的需求量巨大,薪资也十分丰厚;北京、深圳等地区稍微落后但需求量也十分可观;但类似陕西、河北、山西等经济不太发达的地区对于数据分析师的需求量不大。一线城市与数据相关岗位的工作机会多、工作需求量大、且薪资也较为丰厚。

在代码中更改"经验"为"学历","WorkExperience"为"Education",可以得到以下的图。

从图中可以看出,数据分析师对于大专、本科生的需求量巨大,数据分析师这一工作对于学历达到硕士、博士的毕业生基本不太需求。这一数据也可能的原因也许是因为本科生及以下就可以胜任数据分析的工作,类似高学历人才可以去担任更为重要、关键、不可替代的工作岗位。

四、构建模型

在第三章中通过可视化分析技术对数据集里的的招聘信息进行了预处理和统计分析,得到了各指标因素对岗位薪资关联的强弱,在建立的岗位薪资预测模型中,本章将通过对这些变量特征,以最低薪资为因变量,建立薪资预测模型。

4.1导入模块和数据

首先需要准备一个测试集,因此新建text1.csv文件。

处理完成后,将"薪资"单独提取出来当作训练集的label。

4.2变量转换

经过对数据的清洗与预处理及可视化分析,并且与薪资水平相关特征之间的影响进行了分析。在建模之前需要对特征进行处理,因为在这些特征salary是连续的数值型特征,其余特征都是离散型的文本分类变量,需要对这些属于离散型特征转换成可以量化的特征向量,以便计算机识别。独热编码(One-HotEncoding)是对离散型的文本分类变量特征最常用的处理方法。One-Hot编码,又称一位有效编码,它的功能主要是将分类变量特征转换成二进制向量表示。可以这样理解,在数据中的每一个特征如果可能有N个值,在通过One-Hot编码后,就会转换成N个二元特征,比如学历要求有"大专","本科","硕士","不限"',则可以用字典表示成这样"大专":0,"本科":1,"硕士":0,"不限":0,用向量表示为[0,1,0,0]。并且经过编码的特征都是互斥的,每次只能激活一个。而且对于分类器不好处理的属性数据可以使用One-Hot编码解决,这样也可以起到扩充特征的作用。但One-Hot编码的缺点就是会使得矩阵变得稀疏。本文对获取招聘数据中的地区、学历、岗位、经验等这些离散型的分类特征进行处理时,利用python中包含One-Hot编码的开源工具,首先从Scikit-learn模块中导入preprocessing包,然后通过One-Hot编码,将离散型的分类特征转化为二进制的向量表示。由于变量都不是numerical变量,在训练的时候计算机没办法识别,因此要对它们进行转换。当我们用numerical来表达categorical的时候,要注意,数字本身有大小的含义,所以乱用数字会给之后的模型学习带来麻烦。于是我们可以用One-Hot的方法来表达category。pandas自带的get_dummies方法,可以一键做到One-Hot。在此之前,将测试集和训练集组合起来一起处理。

由于是对于薪资预测,我们主要关注学历和经验这两个因素对于薪酬的影响。把每种学历都按经验分类为0年、1年、3年、5年、8年、10年等进行训练。

选择参数前,需要把训练集和测试集分开。

4.2建立模型

1.交叉验证

通过特征选择的重要变量为地区、学历、经验,由于自变量为分类型变量,用机器学习方法进行回归建模是最好的选择。在机器学习里,通常来说我们不能将全部用于数据训练模型,否则我们将没有数据集对该模型进行验证,从而评估我们的模型的预测效果。为了解决这一问题,常用有交叉验证。

交叉验证(Cross-validation)主要用于建模应用中,例如PCR、PLS回归建模中。在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。

用交叉验证的目的是为了得到可靠稳定的模型。在建立PCR或PLS模型时,一个很重要的因素是取多少个主成分的问题。用crossvalidation校验每个主成分下的PRESS值,选择PRESS值小的主成分数。或PRESS值不再变小时的主成分数。

2.参数选择

决策树(DecisionTree)是一种基本的分类与回归方法,当决策树用于分类时称为分类树,用于回归时称为回归树。决策树由结点和有向边组成。结点有两种类型:内部结点和叶结点,其中内部结点表示一个特征或属性,叶结点表示一个类。一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点对应于决策结果,其他每个结点则对应于一个属性测试。每个结点包含的样本集合根据属性测试的结果被划分到子结点中,根结点包含样本全集,从根结点到每个叶结点的路径对应了一个判定测试序列。在下图中,圆和方框分别表示内部结点和叶结点。决策树学习的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。

从图可见当max_features=0.5时达到最大,大概有0.4931。

本实验将采用sklearn的AdaBoostClassifier(adaptiveboosting)通过改变训练样本的权值,学习多个分类器,并将这些分类器进行线性组合,提高泛化性能。

当estimators=10的时候,score最高,大概有0.5,虽然跟单个决策树的score的值相差不大,但总体还是有所提升。

五、模型预测

通过模型在训练集上的训练,得到模型的最优参数之后,将参数代入薪资预测模型,在验证集上预测岗位薪资,代码如图所示:

运行结果如下所示:

从图中可以看出,本文所建立的薪资预测模型具有较好的预测能力,boosting集成学习得到的数据更为真实可信。大部分应届毕业生的预测薪资都在5-10k的区间内与真实薪资很接近;随着工作经验的增长,薪资也会随之增长。而数据分析师这一岗位技术性较强,在学历方面的区分度并不明显;由于高年限的工作经验岗位需求不高,所以得到的数据与真实数据有一定偏差,但不影响实验数据预测的可靠性。

六、实验总结

综合第三章数据处理、可视化分析及第四章模型建立的结果,可以得出以下结论:

  1. 目前大陆地区对数据分析师的需求主要集中在北京、上海、深圳地区;相应提供的薪资水平也是这三个地区居于前面,证实了经济较好的地区对该岗位的需求更好、待遇更好;因而,对于互联网等相关企业,北上广深依旧是广大求职者的目标地区;
  2. 从数据统计情况来看,针对数据分析师在学历方面的要求,目前是学历越高,薪资待遇越好;但相反的是,学历越高,岗位需求并非越大;而针对数据分析师在经验上的要求,目前是经验在3年及以上的岗位缺口更大;综合学历与经验两方面,对于当下应届毕业生来说,学历越高越有优势,对于非应届生社会成员来说,经验则是更大的优势,这一结果也如同当下社会教育形势一般,越来越多的人通过升学来获得更好的就业机会,同时提高自己的能力以填补经验的不足等;
  3. 针对岗位所必备的要求和技能,数据分析师不仅仅要具备基本数据处理以及分析能力,更要具备将数据可视化、结合业务以及产品的能力,从而推进企业更好的运营;基于此,如果需要求职该岗位则需要在本身专业范围内,学习更多的技能加以傍身,才是进入该行业的捷径。

针对本次实验的工作,有如下问题待改正:

  1. 数据清理部分,缺失值处理时,删除了大量全部字段都空缺的样本;其余整体确实部分都在"薪资部分"当中,并未利用缺失部分当作此次项目的待测集;针对字段信息错位的作没有相应调整,对自身详情数据缺失的部分不会单独作一类处理;
  2. 变量处理中,对分类变量中单一分类较少的样本合并该变量;并对地区特征进行分类;最后整理好的多分类变量作哑变量处理;
  3. 可视化分析中,没能清晰分类比较地区、岗位要求等对薪资的影响;
  4. 模型选择中,只选择了两种回归模型对数据集进行训练及拟合,最后选择boosting集成学习为最终预测模型;在本次模型训练中,模型效果并不太好,可能原因有数据本身特征不充分,比如未考虑到企业的规模,企业的性质等等。

文末推荐与福利

《AI绘画实战:Midjourney从新手到高手》和《从概念到现实:ChatGPT和Midjourney的设计之旅》二选一免费包邮送出3本!

《AI绘画实战:Midjourney从新手到高手》内容简介:

本书以目前AI领域中非常主流的绘画工具之一Midjourney为核心,介绍了Midjourney绘画的各种使用方法与技巧。 全书共7章,详细介绍了Midjourney的基础知识、指令、参数、进阶操作技巧,以及大量实操案例,从最基础的知识讲起,详细介绍Midjourney生成作品的全流程,能够为零基础的读者提供全面指 导,帮助他们快速掌握AI绘画技能;同时本书也适合具备一定绘画基础,希望进一步探索和应用AI技术的读者阅读。帮助读者快速上手Midjourney,掌握AI绘画的各种技能。 本书适合对AI绘画感兴趣的零基础读者,以及有一定AI绘画基础的读者阅读。

购买链接:

当当链接:http://product.dangdang.com/29658182.html

京东链接:https://item.jd.com/13953813.html

《从概念到现实:ChatGPT和Midjourney的设计之旅》内容简介:

本书详细介绍了ChatGPT与Midjourney的使用方法和应用场景,并结合设计案例讲解了如何利用AIGC辅助不同行业的设计师提升工作效率和创造力,共涉及8个应用领域,近60个案例演示,生动展示了各行各业中融入AIGC技术的设计成果,为设计师提供了更开阔的设计思路。同时,书中还有很多实用的技巧和建议,可以帮助设计师更快地掌握相关技术。对于不熟悉AI技术的设计师来说,这将是一本很有价值的指南书。通过阅读《从概念到现实:ChatGPT和Midjourney的设计之旅》,插画设计师、UI和UX设计师、游戏设计师、电商设计师、文创设计师、服装设计师、家居建筑设计师、工业设计师及相关设计人员可以更好地理解AI工具的工作原理,并更加灵活地加以运用。

购买链接:

当当链接:http://product.dangdang.com/29628718.html

京东链接:https://item.jd.com/13864763.html

  • 抽奖方式:评论区随机抽取3位小伙伴免费送出!
  • 参与方式:关注博主、点赞、收藏、评论区评论"人生苦短,拒绝内卷!"(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!
  • 活动截止时间:2023-12-29 20:00:00
    名单公布时间:2023-12-29 21:00:00

资料获取,更多粉丝福利,关注下方公众号获取

相关推荐
weixin_4662027819 分钟前
第31周:天气识别(Tensorflow实战第三周)
分类·数据挖掘·tensorflow
湫ccc1 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe2 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin2 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
哭泣的眼泪4082 小时前
解析粗糙度仪在工业制造及材料科学和建筑工程领域的重要性
python·算法·django·virtualenv·pygame
湫ccc3 小时前
《Python基础》之基本数据类型
开发语言·python
IT古董3 小时前
【机器学习】机器学习中用到的高等数学知识-8. 图论 (Graph Theory)
人工智能·机器学习·图论
山海青风3 小时前
使用 OpenAI 进行数据探索性分析(EDA)
信息可视化·数据挖掘·数据分析
drebander4 小时前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
莫叫石榴姐4 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘