数据挖掘技术在求职市场的应用以IT及金融行业为例【字数:5741】
一、绪论
(一)研究背景
我国的就业人口从2011年至2016年以来,一直保持上升的趋势,就业人口占适龄劳动人口的比例也在不断增长,在2016年达到了78.52%。[数据来源:前瞻产业研究院]由此看来,人才供给在五年内一直保持着向上的趋势。
然而,在全球范围内,依然存在着人才短缺问题。例如中国台湾的招聘难度达到了73%,中国香港的招聘难度达到了69%,并且此问题在世界各国内逐渐严重,是自2007年以来最严重时期的时期。2/5的雇主表示他们正在经历着因缺乏合适人才难以填补职位空缺的困难,全球平均困难指数为40%。[《2016年全球人才短缺调查》,数据来源:万宝盛华集团整理]
如此看来,人力资源市场中有着大量的职位匹配需求:岗位和人才需要有效快速的进行双方匹配。
目前,越来越多的公司通过第三方求职网发布自己的招聘信息。在中国,38%的求职者通过人力资源公司或猎头公司求职,而42%的求职者通过第三方网站或求职网站提交申请,几乎占到了1半。[《2016人才趋势报告》,数据来源:领英数据团队]然而,对于求职网中海量的职位数据,求职者往往会应接不暇,难以从海量数据中找到适合自己的职位数据,而长时间的浏览和搜索只会降低效率,徒增工作量。根据领英每年一度的人才趋势问卷调查中,求职者最大的拦路石,是不清楚该职位的实际要求。
毫无疑问,人力资源市场是企业员工的主要来源,而企业员工的优劣对公司的发展具有非常重大的意义。获取优质的员工并将其分配在与之匹配的职位上,一方面,能让员工充分发挥潜能并为公司创造价值;另一方面,人才本身与职位更匹配,将有效降低人才跳槽率,减少公司因人才流动带来的损失。
大数据是重塑招聘未来的首要趋势。在招聘中运用大数据来进行人才分析和消除人为偏见,这一做法将重塑招聘行业的未来。[《2017年中国人才招聘趋势报告》,数据来源:领英数据团队]
(二)研究目的与意义
在大数据时代,传统的网页浏览已经不足以帮助求职者找到理想的职位。对于求职者,常常可能出现的情况是:求职者在求职网页上一连翻了十几页也未能找到合适的职位,亦或是,即使找到自己中意的职位,但是由于求职者对职位所需人才的特点并不了解,无竞争优势,求职季节海投但是无果,而且求职者还难以意识到自己在职场竞争中的劣势以及以后努力完善自我的方向;对于企业,招聘的人才对行业基本技能掌握不深,了解的技术应用落后于行业发展,因此企业需要花费大量人力物力来对员工进行培养。由此看来,对职位数据进行数据挖掘具有一定的意义。
互联网作为炙手可热的行业,其热门职位成为了企业重力投资的领域,尤其是对于一些以信息技术为核心发展指标的企业。本文将从IT职位数据角度出发,以前端开发、PHP、Java三种岗位为例,分析如何基于数据挖掘技术对职位进行分析,从不同维度量化职位数据,挖掘职位核心特征,建立匹配规则,从而进行更好帮助求职者与职位进行匹配,为其找工作提供指导,为企业有效管理人力资源提供参考。
一方面,数据挖掘技术能帮助求职者找出每种职位数据指标对应的最佳标准,如工作经验、教育水平等指标,为求职者提供参考意见,从而更好地找到求职胜率大的职位;另一方面,数据挖掘技术也为求职者进行自我提升提供一些努力的方向,进而更好的实现企业用人单位与求职者的工作内容衔接。
(三)研究思路与论文结构
后文将按照如下思路展开:第二章将介绍当前数据挖掘技术在国内外人力资源市场的研究与应用;第三章将介绍利用Scrapy框架对BOSS直聘网的职位数据进行爬取,并对数据进行预处理和基本的统计分析。接着,基于TF-IDF算法对工作描述数据进行挖掘,从而得到各职位的工作技能特征集合;第四章将基于决策树C4.5算法,构建基于工作技能特征集合的职位匹配模型;第五章将对模型的可靠性进行验证和分析;第六章对模型的匹配规则进行总结和概括,分析本文的不足并对将来作出展望。
二、文献综述
(一)国内相关研究
随着数据挖掘技术的发展,人力资源市场领域已经开始引入了数据挖掘技术并取得了很多成功的运用案例。在求职市场中,常见的数据挖掘技术应用主要采用决策树[1]。
在国内学者的研究中,关于人力资源市场方面的数据挖掘主要集中在企业管理人力资源的定量分析[1],比如朱近贤[2]采用数据挖掘技术量化决策属性的管理思想,为企业人力资源管理提供了可靠的基本数据信息和人事决策、人事管理的依据。张红艳[3]运用成型的数据挖掘模型来解决划分企业人才类型、预防企业人才流失以及评价绩效考核体系,并得到实证研究。
随着人力资源与职位匹配的需求扩大,同时爬虫技术得到了发展,许多海量的职位数据已经变得触手可及[4]。近年来不少学者开始研究职位的个性化推荐。曹伶丽[5]运用C4.5算法进行数据挖掘,找到分类规律并通过运算把生成的决策树与分类规则表示为求职倾向矩阵。但是,此类个性化推荐并未从工作技能角度出发,而仅仅关注了求职者的一些基本信息。忽略了职位的本身特性,难以对拥有某一领域工作技能的求职者进行有效匹配[6]。王超[7]对用户好友关系及职业信息进行预处理,并以此作为推荐职位的依据。徐锦阳等人[8]借助于贝叶斯公式对于简历中的专业信息进行行业分类,在此基础上提出改进的相似度算法,得到职位与简历之间的匹配度信息。
(二)国外相关研究
Chen-Fu Chien[2]通过数据挖掘,搭建基于决策树和关联规则的模型,将人才进行分类,并对每一类型应用关联规则挖掘其中隐含的规则,从而实现人才的挑选。国外LLC建模机构[3]分析了通过数据挖掘进行建模对于企业人力资源规划的重要意义,提出通过定量分析的方法来进行人力资源的管理,并举出相关公司的实例。
Lori K.Long等人[4]介绍了数据挖掘技术的类别和流程,分析了其在企业人力资源的应用,如人才决策、离职管理。数据挖掘技术的引入,能够大大提高数据使用者决策的正确性[5]。PL Roth等人[6]讨论了处理人力资源丢失数据的重要性,并使用均值替换等方法在应用中得到证明。
J Ranjan等人[7]利用OLAP(在线分析处理)技术探究了数据挖掘技术有效帮助企业人力资源管理系统做出决策支持。H Jantan等人[8]通过数据挖掘的分类技术对人才基本信息进行分类训练并根据模型有效评估人才能力。
目前,在国外,数据挖掘成功地帮助了企业有效管理人力资源[9]。
(三)研究评述
由此可见,目前国内外数据挖掘在人力资源市场的应用主要集中在防止人才流失以及帮助企业管理人才,对管理方案做指导意见等方面。另外,还有少部分针对职位数据与求职者的潜在关系研究,并针对此对求职者的职位进行个性化推荐。但是此类模型没有考虑职位的工作技能等特性,仅仅能做出公司类型方面的推荐,而非具体职位方面的推荐。本文基于这些不足,引入了TF-IDF对工作技能进行特征挖掘,并结合决策树算法进一步挖掘匹配模型。
三、基于TF-IDF的特征提取
(一)TF-IDF理论基础
单文本词频(Term Frequency,t)[Term Frequency,Wikipedia,https://en.wikipedia.org/wiki/Tf%E2%80%93idf]:词组在文本中出现的频次统计。传统的单文本词频统计法主要是简单加总出现的次数,但现实应用中也有改进后的几种词频统计法[10]:
布尔词频:即当出现在中,则t,否则t。
对数标度频率:
t,t(1)
强化频率:为了防止偏向长文档中的词频,原始频率除以文档中最常出现的词语的原始频率。公式如下:
(2)
其中,表示最常出现的词语。
TF的基本思想是一个词在文本中出现的频率高,所占权重大,就越能代表这篇文档的主题。也就是说,这个词就是这个文本的特征。但是可能出现的问题是,某些毫无意义的词语,例如了这一类词在文本中出现的频率同样很高,却代表不了文本的主题。为了避免这样的问题,引入了逆文档频率。
逆文档频率(Inverse Document Frequency,)[Inverse Document Frequency,Wikipedia,https://en.wikipedia.org/wiki/Tf%E2%80%93idf
]:通过将文档总数除以包含该词的文档数得到,然后取该商的对数。
(3)
其中,代表文档在预料库中的总数(),代表出现了词组的文档总数。当文档中没有出现词组t时,容易出现分母为零的情况,因此一般情况下将分母处理为。
逆文档频率以语料库里的多个文本为比较标准,一个词组在其他文档中出现的频率越低,那么这个词组就越能代表本文档。[11]如此一来,就能过滤掉类似于了这样的出现频次高,但实际上并不能代表文本主题本身的词。
TF-IDF就是TF和IDF这两个统计数据的乘积:
(4)
(二)数据爬取及预处理
本部分将完成以下操作:
数据爬取,从zhipin.com网页上爬取职位数据
数据预处理,清理脏数据及处理缺失数据
(1)数据爬取
第一步,定义数据容器。
本次爬虫采用scrapy架构获取十四种职位属性。
表3.0职位数据属性及其含义
序号职位名称职位标签工作年限薪水
pid posi
tionName positionLables workYear salary
教育水平公司名称行业领域融资阶段公司规模
education companyShortName industryField financeStage companySize
最后更新时间城市发布时间工作描述
updated_at city time details
第二步,定义爬虫parse方法。
在Scrapy框架中,parse()是spider的一个方法,在被调用时,url中生成的response对象作为唯一参数传递给该函数,该方法负责解析返回的数据,生成item类,即提取数据,并生成需要进一步处理的url中的Request对象。
进入BOSS直聘网的搜索界面,任意输入搜索条件,如Java,观察网页源代码。
通过观察发现,每条职位都是以div标签下的class类别属性的不同为区分,所以本文通过css选择器获取标签的内容,以职位为单位一条一条的获取数据。进一步的,对于每一个职位的单条属性,同理,将对应标签和属性下的内容提取出来并赋给预先定义好的容器,在此不再赘述。
(2)数据预处理
初步统计爬虫所获数据:Java(3596条)、前端开发(2383条)、PHP(3578条),但其中有不完整的数据,主要丢失的是薪水、工作年限信息,Java有201条、前端开发35条、PHP187条。
1数据缺失处理
对于不完整的数据,需要对其进行填补或其他处理。如果选择直接放弃不完整数据,可能掺入主观因素,从而对最后的结果造成误差影响[12]。
在数据挖掘技术中,对于缺失值的处理多种多样,比如K最近距离邻法[Altman,N.S.(1992)."An introduction to kernel and nearest-neighbor nonparametric regression".The American Statistician.46(3):175–185.],热卡填充法[Joenssen D.W.,Bankhofer U.(2012)."Hot Deck Methods for Imputing Missing Data".Perner P.(eds)Machine Learning and Data Mining in Pattern Recognition.MLDM 2012.]等,本文采用平均值填充法[13],即对于数值类型的属性,用所有同类非空数据的平均值填充;对于离散型的非数值型属性,采用统计学上的众数原理,即用所有同类非空数据中出现次数最多的值填充。
2薪水转换为数字
薪水的原始格式为:"salary":"5K-12K",本文通过python取最低薪和最高薪,并计算平均值,最后将薪水数据处理成下面的格式:
"salary":{"low":5000,"high":12000,"avg":8500.0}
3根据工作经验年限划分招聘等级
总的来说,三种类别的工作对于工作年限的要求主要集中在1年10年之间,也就是说,对于工作经验小于1年的应届生来说,找工作会面临更大的阻力。而一旦突破了最开始的一年,后期找工作将会有较之前更多的机遇。
为了方便后面数据分析,基于图3.1对工作年限划分等级,将文字数据转换成用数字表示的等级。由于工作年限基本呈正态分布,所以将数据量分布多的范围划为同一级。如表3.1所示,根据工作年限的内容分为4种级别。
表3.1工作年限分级表
应届生1年以内1-3年3-5年5-10年10年以上经验不限
0 1 2 3
4根据教育水平划分招聘等级
由图3.2可以看出,三种类别的工作对于教育背景的要求主要集中在本科。这与职场现状也相符合。对于开发人员来说,更重要的是实战能力,而非教育背景。其中,PHP对于教育背景的要求相对于其他两者的要求更低,只有约50%的职位要求应聘者的教育背景达到本科水平。本文基于图3.2,对教育水平进行分级,将文字数据转换成数字数据,为下一步数据挖掘作铺垫。
表3.2教育水平分级表
中专及以下高中大专本科硕士博士不限
0 1 2 3
如表3.2所示,根据教育水平的内容分为以上4种级别。
(三)基于TF-IDF的职位特征提取
在爬取到的数据中,工作描述属性详细阐述了关于该工作的工作技能,这些工作技能或多或少反映了每一类工作的重要特征,因此有必要对工作描述文本进行数据挖掘,提取出最关键的特征,为后文的职位匹配做好铺垫。
第一步,本文分析Java、前端、PHP三种类别的职位,并以此作为TF-IDF的文档分类标准。
第二步,将对应职位下的工作描述数据拼接,并组成文档。
第三步,使用结巴分词,为了提高分词的准确性,导入用户词典,对每个文档依次进行分词。自定义用户词典使用的是职位词典,图3.3为字典部分展示:
图3.3部分用户词典
第四步,去除停止词。
根据工作描述的分词结果,除了常用的的、了等停止词,本文还引入了自定义的停止词:
['公司','以上','以上学历','至少','代码','以及','实际','根据','能力','经验','编程','系统','专业','团队','岗位职责','技术','岗位','开发','负责'……]
第五步,特征词去重。
在处理特征词的时候,第一,有的特征词虽形式不同,但是描述的却是同一个事物,比如html、css+html,对于此类标签,统一转换为HTML/CSS;第二,数据库划分过于细化,比如mySQL、SQL Sever、mongoDB等,这些特征词实则都是数据库。在实际求职中,即使数据库类型不匹配,但只要具备数据库基础知识,其实原理是相通的,因此也可以进行职位匹配,所以这一类特征词统一转化为数据库;第三,有的特征词过于抽象泛化,比如后端开发、前端,这一类特征词,对于后文的职位技能匹配没有太大的参考意义,本文将舍弃;第四,统一使用lowercase函数对英文单词进行小写转换,使得数据统计更精准;第五,在Java这类职位中,特征值的权重普遍较小,经观察发现是因为不少框架如spring、mybatis被单独计算,为了让特征词更能代表工作类别,将所有出现的框架名词统一替换为框架。
第六步,计算权重。遍历分词后的文档,根据TF-IDF算法算出分词的权重,按照权重大小降序排列,选择每类职位中排名前5的特征词。
表3.3特征词提取结果表
职位核心特征非核心特征
前端HTML/CSS Javascript JQuery ajax json
PHP PHP数据库Javascript Linux MVC
Java Java数据库Linux HTML/CSS框架
如表3.3所示,每一行表示的是对应职位下的特征词。特征词按照从左到右权重依次降低的顺序反映其重要程度。
四、基于决策树的数据挖掘
(一)C4.5算法原型
C4.5是由Ross Quinlan提出的用来生成决策树的算法[14]。
在每一个决策树的树结点,C4.5算法会根据计算的信息增益来选择最佳的分枝属性,使得该属性最能够将剩余数据元素最好的分入到不同子集。
信息是事物运动状态或存在方式的不确定性的描述[15],也就是说,一条信息的信息量大小与信息的不确定性有关。
不确定性函数应该满足两个条件:
1必须是概率的单调递减函数;
2两个独立符号所产生的不确定性应等于各自不确定性之和,即可加性:)(5)
同时满足这两个条件的函数f是对数函数,也就是说单个事件的信息量就是:
(6)
信息熵(Information Entropy)[Information Entropy,Wikipedia,https://en.wikipedia.org/wiki/Entropy_(information_theory)]:1948年,香农提出了信息熵的概念,香农将信息熵解释为随机变量出现的期望,并用信息熵的概念来描述信源的不确定度[16]:
(7)
信息增益(Information Gain):用于描述信息熵的变化量[17],
在对数据进行分类时,如果能够取定一个划分属性,使得划分后的不同子集中,各自的信息熵越小越好,那么这个划分属性就是最佳的。例如,现在将D集合中的元素划分为n个子集{D1,D2,…,Dn},其中
划分后的信息熵:
(8)
其中,表示在中所占比例,。
信息增益指的就是划分前后信息熵的差值:
(9)
由此看来,信息增益越大,划分后的信息熵就越小,那么划
原文链接:http://www.jxszl.com/lwqt/yzlw/357482.html
最新推荐
热门阅读