基于随机森林算法的职位薪资预测

2021-02-25 03:37彭义春覃左仕
智能计算机与应用 2021年10期
关键词:决策树薪资职位

彭义春, 张 捷, 覃左仕

(玉林师范学院 计算机科学与工程学院, 广西 玉林 537000)

0 引 言

随着互联网的迅速发展和普及,网络招聘基本取代传统招聘形式,己成为招聘者和求职者的首选方式。 网络招聘具有信息量大、不受时空限制、招聘成本低、便捷高效等优点;但也因信息量的激增和信息难以核实,带来了信息爆炸、信息过剩、信息失真、薪水不透明等问题[1]。 因此,如何从琳琅满目的数据中提取有价值的信息成为关键。 若能通过某些方式了解到本行业中类似岗位的薪资范围,就能对岗位的薪资是否合理有个准确的判断,以及对未知薪资的岗位有一个预判。 薪资市场是一个较为复杂的非线性动力学系统,同时薪资数据中包含大量的关于职位本身的描述数据。 随着人工智能算法的发展,灰色理论、朴素贝叶斯、doc2vec/word2vec[2]、回归模型[3]、移动平均模型[4]、神经网络、协同过滤[5]、深度学习[6]、K 最近邻[7]、决策树、支持向量机等机器学习算法已被广泛应用于预测领域。 随机森林算法具有处理高维样本[8]、预测精度高、学习速度快、调节参数少及不产生过拟合[9]等优点,已被广泛应用于回归和分类问题。 近年来,也有学者将随机森林算法用于薪资预测领域,如,文献[10]中采用随机森林模型预测和分析了云南省物流人才岗位薪资;文献[11]提出了一种基于随机森林模型对求职者和企业互惠就业推荐算法;文献[12]采用随机森林模型对农信金融企业员工工资进行预测等等。 本文在对比分析SVM、决策树、随机森林等机器学习算法的基础上,提出了基于随机森林的薪资预测模型。 经验证结果表明,此模型在薪资预测中产生的误差较小、效果较好,预测结果既能更好地帮助求职者选择更适合自己的职位和判断职位薪资的合理性,也能帮助招聘者制定合理的职位薪资,招聘到合适的人才。

1 基于随机森林的薪资预测模型构建

随机森林指的是利用多棵树对样本进行训练并预测的一种分类器,属于一种集成算法,在分类、回归和聚类等方面应用效果较好。 本课题的薪资预测是回归预测,需要用分类回归树(CART)作为基本单元进行构建森林,依次循环训练每一棵CART,每棵CART 的训练样本都是从原始训练集中进行可放回抽样(Bootstrap)得到。 CART 较容易过拟合,但因随机森林经过Bootstrap 和Aggregate(聚集)这2个过程(又被称为袋装Bagging)解决了过拟合问题,同时也因随机性而增强了模型的泛化(Variance) 能力。 根据国内主流招聘网站招聘公告的职位描述,薪资预测关联度较高的特征包括职位语言、职位类别、所属城市、学历、工作经验、公司规模和所属网站等。 对多个特征值需要收集所有特征的最佳切分点进行对比,选出最好的特征划分点,采用平均或投票的方式对所有决策树做集成操作。

假设共有M个样本,n个特征的数据集,最多须构建t棵决策树,每棵决策树的特征个数为K,则随机森林算法实现过程如下:

步骤1在训练数据集所在的输入样本中,对每个样本的每个特征进行遍历,递归地将每个区域划分为2 个子区域。利用公式(1) 计算n个特征及其相应切分点下的残差平方和,找到一对(j,s),且满足:分别最小化左子树和右子树的残差平方和,并在此基础上再次最小化二者之和[13]。 式(1) 的数学表示如下:

其中,R1、R2代表被划分的2 个子集(回归树为二叉树只有2 个子集),c1、c2分别表示R1和R2样本的均值,j代表工作城市、职位名称、职位类型等样本特征,s表示划分点,yi表示样本目标变量的真实值。

步骤2用选定的(j,s) 来划分区域,并决定相应的输出值,求样本均值公式[14]为:

步骤3继续对2 个子区域调用步骤1、2,直到不能继续划分为止。

步骤4将输入样本划分为M个区域,即:R1,R2,…,RM生成决策树[15]。 其公式如下:

其中,c代表对应区域的平均值;I代表是否符合条件,符合为1,否则为0。

步骤5采用有放回抽样, 从原数据集中经过M次抽样,获得有M个样本的数据集(可能有重复样本)。 从n个特征里,采用无放回抽样原则,去除K个特征作为输入特征。 对新数据集重复上述过程t次,构建t棵决策树[16]。

步骤6对生成的t棵决策树采用求平均的方法,最终得到一个随机森林模型。

随机森林构建流程如图1 所示。

图1 随机森林构建流程图Fig.1 Flow chart of random forest construction

2 样本数据采集、预处理与存储

采用Python 爬虫技术爬取了猎聘网、拉勾网、Boss 直聘和前程无忧四大主流招聘网站2021 年1月~5 月的IT 行业招聘信息。 为了提高薪资预测过程的高效性和结果的精准性,采用Pandas、Numpy模块,对爬取到的数据信息进行离群值检测、缺失值处理、异常值处理、字段分割、标签编码、重复值剔除等数据预处理。 为了将文本类型的数据转换成数字型数据,首先遍历去重后的每一特征值的字符并给其赋一序列号,然后再次遍历此文件,把序列号映射回原来没有去重的列,相同文本则对应同一个序列号。 最后,将处理过的数据以csv 文件格式保存并存储到MySQL 数据库中。

3 对比实验

3.1 不同格式数据训练结果对比

通过数据清洗后,将数据集划分为标签和特征值,并按照比例划分训练集和测试集。 先运用sklearn 模块构建决策树、线性回归、SVM、随机森林四个经典算法的预测模型,并观察模型在训练集的准确度(accuracy) 表现。 再分别对数据进行标准化处理和数据平滑处理,获取各算法模型的准确度表现,见表1。

表1 4 种模型对不同格式数据训练得分对比Tab.1 Comparison of training scores of four models on different format data

由表1 中数据可见,数据标准化处理对于线性回归、决策树和随机森林模型的结果基本没什么影响,只有SVM 略微提高,但依旧是负数;但对预测值数据平滑处理后,4 个算法模型得分都有明显上升,尤其是SVM 算法,从负数提升到0.89,而线性回归算法的得分仅有0.216,说明线性回归算法并不适用于本课题的场景。

3.2 不同模型预测准确率对比

对比真实值与预测值的误差,可用来评估模型预测结果的准确率。 图2(a)~(c)分别为决策树、随机森林和SVM 回归结果可视化图。 对图2 分析可知,决策树的准确率最高(0.957 85),除了部分预测值和真实值相差较大外,绝大多数与实际偏差不大,其次是随机森林(准确率为0.897 60),最后为SVM(准确率为0.889 93)。

图2 3 种算法的回归结果比较Fig.2 Comparison of regression results for the three algorithms

3.3 不同模型R2值对比

预测结果的准确性并不能完全判定一个算法模型效果的好坏,还需要观察模型的拟合优度和泛化能力。R2值是最常用的回归模型拟合程度的指标,其值的计算方法如下。

设y为待拟合数据,y的均值为,拟合函数计算结果为,则:

(1)总体平方和SST:

(2)残差平方和SSE:

(3)拟合度公式R2:

在Python 中,通过记录训练集、测试集在训练和测试过程的R2值,并绘制如图3 所示的曲线图。图3(a)~(c)分别为决策树、SVM 和随机森林的训练集与测试集R2值图。

图3 3 种算法的R2结果比较Fig.3 Comparison of R square for the three algorithms

经对比分析可见,决策树在训练集表现得很好,但在测试集表现较差,过拟合问题最严重;SVM 的拟合效果较好,但仍存在过拟合问题;随机森林的拟合效果最好,但R2值不高,必须通过参数调优来提高拟合度。

综合上述预测准确率和拟合度对比分析结果得出:决策树预测模型虽然预测的准确率最高,但拟合效果不佳,模型在预测新的数据集时准确率会大大下降,得到的预测结果不准确;SVM 预测模型拟合效果一般,准确率最低,且模型响应时间长,运用到实际应用中,用户体验会大打折扣;随机森林的准确率较高,特别是拟合效果最佳。 因此,本研究最终采用随机森林算法构建职位薪资预测模型。

4 基于随机森林算法的职位预测实验

4.1 随机森林算法参数调优

随机森林是一种机器学习算法,算法参数的设置不仅影响模型的预测准确率,而且影响模型的训练效果的好坏。 因此,模型构建之前对参数调优很有必要。 其参数择优包括框架的参数择优和决策树的参数择优。 本文采用改进的网格搜索(GridSearch)法[17]来完成参数调优。 具体步骤如下:

(1)确定决策树个数n_estimators和划分时考虑的最大特征数max_features范围。 先设定步长(即 权 重 缩 减 系 数ν, 取 值 范 围 为(0,1]), 在n_estimators和max_features坐标系上建立二维网格。 网格节点就是相应的n_estimators和max_features的参数对。

(2)对网格节点上的每一组参数构建随机森林,并利用OOB 数据估计残差平方均值。

(3) 选 择 误 差 最 小 参 数n_estimators和max_features。 若误差或者步长满足要求,则输出最优参数和残差平方均值,否则缩小步长。 重复上述步骤,继续搜索。

在Python 中,通过GridSearchCV()方法并使用十折交叉验证法求得模型的最佳参数组合,先增大n_estimators以提高模型拟合能力。 这里当n_estimators =110,拟合能力再无明显提升时,则再按照步长为1 增大max_features来提高每个子模型的拟合能力, 进一步提高模型的拟合能力。 当max_features =5 时对应的拟合优度最大,残差平方均值最小。 见表2。

表2 随机森林参数表Tab.2 Parameter table of random forest

表1 中,前三行为框架参数,后四行为决策树参数。

将得到的最佳参数组合代入算法模型中,求出模型的平均绝对误差、均方误差、R2值和袋外样本得分。 职位薪资预测模型参数调优前后的模型预测效果对比,见表3 。

表3 参数调优前后评估指标对比Tab.3 Comparison of evaluation indicators before and after parameter tuning

从表3 可明显得出,参数调优后模型的平均绝对误差、均方误差均有所下降,模型准确率更高。R2值从0.596 上升到0.921,模型拟合效果较好;袋外样本得分由原先的-2.343 提升到0.651,模型泛化能力显著增强。 对比结果说明,参数调优后的职位薪资预测模型是十分有效的模型。

通过绘制参数调优前后模型的学习曲线,观察模型具体的拟合程度,如图4 所示。 参数调优前,职位薪资预测模型误差较大,过拟合程度较为严重;参数调优后,职位薪资预测模型学习曲线收敛,误差减小,过拟合程度明显下降。

图4 参数调优前后模型学习曲线Fig.4 Learning curve of model before and after parameter tuning

4.2 基于熵值法的特征重要性评估

职位薪资预测模型是以职位名称(jobName)、职位 类 别(jobType)、 工 作 城 市(jobCity)、 学 历(jobEdu)和工作经验(jobExper)为特征构建。 为了构建预测模型,首先须确定各特征在模型中的权重。 鉴于特征之间的相关性以及对薪资非线性影响的特点,采用熵值法确定各个特征在模型中的权重[18]。 步骤如下:

(1)设数据有n行记录,m个特征列,则数据可用一个n × m的矩阵A表示:

(2)数据归一化处理:

(3)计算第j项指标下第i条记录所占比重:

(4)计算第j项指标的熵值:

(5)计算第j项指标的差异系数:

(6)计算第j项指标的权重:

在Python 中,使用Pandas 和Numpy 库求出各特征的权重,见表4。

表4 各特征在薪资中的重要性和权重Tab.4 The importance and weight of each feature in salary

由此可见,这5 个特征的重要性都达90%以上。将这5 个影响因素指标作为随机森林模型的最优输入特征变量,最后做预测的特征中权重性排在最高的为工作城市,其次岗位类别,学历、工作经验和职业类型的重要程度基本相同。 因此,工作城市和岗位是职位薪资高低的重要影响因素。

5 结束语

在对比分析线性回归、SVM、随机森林、决策树等几种经典的机器学习算法后,因随机森林具有精度高、稳定性好、学习速度快等优势,故而选择随机森林构建职位薪资预测模型,并以IT 行业为例,对职位薪资进行了模拟预测分析。 结果表明,随机森林模型能合理有效地预测薪资,可作为中短期职位薪资预测的新途径。

然而,爬取的招聘信息时间间隔较短,数量有限,变量的类型上也有出入;另外薪资高低也受到外界客观因素的影响等。 因此,随机森林模型对这些因素数据的预测效果不太理想,有待进一步深入研究。

猜你喜欢
决策树薪资职位
领导职位≠领导力
不简单以“住房薪资”引才——遵循“一步一重天”的人才发展规律
简述一种基于C4.5的随机决策树集成分类算法设计
决策树学习的剪枝方法
美最高就业率地铁圈
决策树在施工项目管理中的应用
如何确定雇员的薪资