数学建模-基于LightGBM和BP神经网络的互联网招聘需求分析与预测

基于LightGBM和BP神经网络的互联网招聘需求分析与预测

整体求解过程概述(摘要)

  就业是民生之本,是发展之基,也是安国之策。2020 年新冠肺炎疫情的爆发,稳就业成为应对疫情、稳定社会的重要保障之一。随着数据新动能的发展,互联网招聘为招聘者和应聘者提供不限于时空的全局视角,因此本文从该角度出发对招聘者和应聘者需求进行统计分析预测,以期缓解就业难、招聘难的困境。
  本文基于近年来各在线招聘网站所发布的招聘数据并结合数据新动能下转型升级的三个金融行业、互联网行业、生产制造行业,采用 Pearson 相关系数检验初步筛选后运用灰色关联分析进一步进行指标筛选,最后对企业招聘中招聘者关注的浏览量运用 LightGBM 模型进行浏览量特征重要性分析,对就业形势中应聘者关注的薪资运用 BP 神经网络预测模型对于薪资进行预测,并进行模型精度对比,得出数据新动能下三个行业的薪资统计分析预测。
  经研究得出关于企业招聘浏览量,金融行业薪资水平,互联网行业薪资水平,生产制造行业薪资水平的影响因素及重要程度。基于以上分析结论,本文在互联网招聘市场中对招聘者与应聘者需求提出以下对策建议:第一,对于企业,招聘者应根据岗位浏览量合理设置招聘要求;第二,对于金融行业,应聘者应根据学历因素合理考虑就业地域;第三,对于互联网行业,应聘者应根据学历因素合理考虑公司性质;第四,对于生产制造行业,应聘者应根据公司所在地合理考虑公司性质。

问题分析

  基于当代数字经济大环境背景,面对当前互联网市场应聘者和招聘者需求不对称的现状,本文运用近年来各在线招聘网站所发布的招聘数据并结合数据新动能下转型升级的三个金融行业、互联网行业、生产制造行业,采用 Pearson 相关系数分析初步筛选后运用灰色关联分析进一步进行维度筛选,最后对企业招聘中招聘者关注的浏览量运用 LightGBM 模型进行特征重要性分析,对就业形势中应聘者关注的薪资运用 BP 神经网络预测模型对于薪资进行预测,并进行模型检验与修正,得出新动能下三个行业的薪资和浏览量的分析与预测。
在这里插入图片描述

指标的选取与数据的处理

  (一)数据来源
  本文数据通过对某数据平台的数据进行爬取,总共得到 1007894 条数据。数据预处理以 excel 为主,Python、R 为辅,完成原始数据去重区空以及数值转换等数据预处理工作之后进行分层随机抽样得到剩下 40000 条数据进行统计分析。对于异常值的处理,学历、职位、行业等因素使用删除异常值方法处理,经验年数、工资上下限因素使用计算平均值方法进行处理。分层抽样法,也叫类型抽样法。将总体单位按其属性特征分成若干类型或层,然后在类型或层中随机抽取样本单位。分层抽样法的特点是通过划类分层,增大了各类分层抽样中单位间的共同性,容易抽出具有代表性的调查样本。该方法适用于总体情况复杂,各单位之间差异较大,单位较多的情况。分层随机抽样的程序是把总体各单位分成两个或两个以上的相互独立且各具特点的完全的组,再从两个或两个以上的组中分别进行随机抽样。分组的标志或特点与所关心的总体特征相关。“所学非所用”不利于充分发挥人力资本的潜在价值(郭睿,2019),本文以学历作为属性特征进行分层,将不同学历分出不同层,按各学历占总数据的比例在每一层中随机抽样,得出 40000 条数据。
  并通过划分行业来分别选取每个行业中的指标进行分析预测,金融行业的发展是一个国家经济发展的重要支撑(高景文,2019),互联网行业则为数字化时代背景下一个重要的行业支撑(周蕴慧,2021),生产制造行业的转型升级也是当今时代面临的重大课题(江小涓,2020),这三个行业都对数据新动能背景下招聘与就业需求不对称的统计分析研究具有一定意义,因此本文选取这三种行业进行统计分析预测。
  而对于大多数互联网应聘者而言,薪资是众多被考虑因素中的重中之重,是其劳动回报的直接体现(Kristin L ,2018),对于企业而言,应聘者的薪资与其经营的利润以及成本是直接相关的关系。因此选取三个行业薪资平均值与其他指标进行分析。

  (二)指标选取
  1. Pearson 相关系数检验
  Pearson 相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于 0 的时候表示两者正相关,小于 0 的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度,对于标准化后的数据求欧氏距离平方并经过简单的线性变化,也就是Pearson 系数,我们一般用欧式距离来衡量向量的相似度,但欧式距离无法考虑不同变量间取值的差异。加之,Pearson 相关系数适用于高维度检验,而未经升级的欧式距离以及 cosine 相似度,对变量的取值范围是敏感的,在使用前需要进行适当的处理。因此在对变量间进行相关性检验时,本文优先采用 Pearson 相关系数检验去研究经验,学历,公司所在地,公司性质,职位分别和薪资平均值之间的相关关系,使用 Pearson 相关系数去表示相关关系的强弱情况。具体分析可知:
  ①金融行业:经验、学历、职位、公司所在地呈现显著性
在这里插入图片描述
  ②互联网行业:经验、学历、职位、公司所在地、公司性质呈现显著性
在这里插入图片描述
  ③生产制造行业:经验、学历、公司所在地、公司性质呈现显著性

在这里插入图片描述
  2. 灰色关联分析
  基于 Pearson 相关系数检验得出的结果,本文进一步对具有显著性的各个特征值进行选取。运用灰色关联分析对于研究指标进行进一步选取,研究各因素对薪资的影响大小关系,得出结果如下:
  ①金融行业:公司所在地、职位

在这里插入图片描述
  从上表可以看出:针对本次 4 个评价项,公司所在地的综合评价最高(关联度为:0.989),其次是职位(关联度为:0.670)。
  ②互联网行业:学历、公司性质
在这里插入图片描述
  从上表可以看出:针对本次 5 个评价项,学历的综合评价最高(关联度为:0.928),其次是公司性质(关联度为:0.909)。
  ③生产制造行业:公司所在地、公司性质

在这里插入图片描述
  从上表可以看出:针对本次 4 个评价项,公司所在地的综合评价最高(关联度为:0.959),其次是公司性质(关联度为:0.953)

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

程序代码:(代码和文档not free)

%% 网络测试
an=sim(net,inputn_test); %用训练好的模型进行仿真
test_simu=mapminmax('reverse',an,outputps); % 预测结果反归一化
error=test_simu-output_test; %预测值和真实值的误差
%%真实值与预测值误差比较
figure
plot(output_test,'bo-','linewidth',1.2)
hold on
plot(test_simu,'r*-','linewidth',1.2)
legend('期望值','预测值')
xlabel('测试样本编号'),ylabel('指标值')
title('BP 测试集预测值和期望值的对比')
set(gca,'fontsize',12)
igure
plot(error,'ro-','linewidth',1.2)
xlabel('测试样本编号'),ylabel('预测偏差')
title('BP 神经网络测试集的预测误差')
set(gca,'fontsize',12)
%计算误差
[~,len]=size(output_test);
SSE1=sum(error.^2);
MAE1=sum(abs(error))/len;
MSE1=error*error'/len;
RMSE1=MSE1^(1/2);
MAPE1=mean(abs(error./output_test));
r=corrcoef(output_test,test_simu); %corrcoef 计算相关系数矩阵,包括自相关和
互相关系数
R1=r(1,2); 
%% 初始化
clear
close all
clc
format short
%% 读取读取
data=xlsread('数据总.xlsx','Sheet1','A1:F18528'); %%使用 xlsread 函数读取 EXCEL
中对应范围的数据即可 
%输入输出数据
input=data(:,1:end-1); %data 的第一列-倒数第二列为特征指标
output=data(:,end); %data 的最后面一列为输出的指标值
N=length(output); %全部样本数目
testNum=50; %设定测试样本数目
trainNum=N-testNum; %计算训练样本数目
%% 划分训练集、测试集
input_train = input(1:trainNum,:)';
output_train =output(1:trainNum)';
input_test =input(trainNum+1:trainNum+testNum,:)';
output_test =output(trainNum+1:trainNum+testNum)';
%% 数据归一化
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
%% 获取输入层节点、输出层节点个数
inputnum=size(input,2);
outputnum=size(output,2);
disp('/')
disp('神经网络结构...')
disp(['输入层的节点数为:',num2str(inputnum)])
disp(['输出层的节点数为:',num2str(outputnum)])
disp(' ')
disp('隐含层节点的确定过程...')
%确定隐含层节点个数
%采用经验公式 hiddennum=sqrt(m+n)+a,m 为输入层节点个数,n 为输出层节点
个数,a 一般取为 1-10 之间的整数
MSE=1e+5; %初始化最小误差
transform_func={'tansig','purelin'}; %激活函数
train_func='trainlm'; %训练算法
for 
hiddennum=fix(sqrt(inputnum+outputnum))+1:fix(sqrt(inputnum+outputnum))+10
%构建网络
net=newff(inputn,outputn,hiddennum,transform_func,train_func);
% 网络参数
net.trainParam.epochs=1000; % 训练次数
net.trainParam.lr=0.01; % 学习速率
net.trainParam.goal=0.000001; % 训练目标最小误差
% 网络训练
net=train(net,inputn,outputn);
an0=sim(net,inputn); %仿真结果
mse0=mse(outputn,an0); %仿真的均方误差
disp([' 隐含层节点数为 ',num2str(hiddennum),' 时,训练集的均方误差为:
',num2str(mse0)])
%更新最佳的隐含层节点
if mse0<MSE
MSE=mse0;
hiddennum_best=hiddennum;
end
end
disp(['最佳的隐含层节点数为:',num2str(hiddennum_best),',相应的均方误差为:
',num2str(MSE)])
%% 构建最佳隐含层节点的 BP 神经网络
net=newff(inputn,outputn,hiddennum_best,transform_func,train_func);
% 网络参数
net.trainParam.epochs=1000; % 训练次数
net.trainParam.lr=0.01; % 学习速率
net.trainParam.goal=0.000001; % 训练目标最小误差
%% 网络训练
net=train(net,inputn,outputn);
%% 网络测试
an=sim(net,inputn_test); %用训练好的模型进行仿真
test_simu=mapminmax('reverse',an,outputps); % 预测结果反归一化
error=test_simu-output_test; %预测值和真实值的误差
%%真实值与预测值误差比较
figure
plot(output_test,'bo-','linewidth',1.2)
hold on
plot(test_simu,'r*-','linewidth',1.2)
legend('期望值','预测值')
xlabel('测试样本编号'),ylabel('指标值')
title('BP 测试集预测值和期望值的对比')
set(gca,'fontsize',12)
figure
plot(error,'ro-','linewidth',1.2)
xlabel('测试样本编号'),ylabel('预测偏差')
title('BP 神经网络测试集的预测误差')
set(gca,'fontsize',12)
%计算误差
[~,len]=size(output_test);
SSE1=sum(error.^2);
MAE1=sum(abs(error))/len;
MSE1=error*error'/len;
RMSE1=MSE1^(1/2);
MAPE1=mean(abs(error./output_test));
r=corrcoef(output_test,test_simu); %corrcoef 计算相关系数矩阵,包括自相关和
互相关系数
R1=r(1,2); 
disp(' ')
disp('/')
disp('预测误差分析...')
disp(['误差平方和 SSE 为: ',num2str(SSE1)])
disp(['平均绝对误差 MAE 为: ',num2str(MAE1)])
disp(['均方误差 MSE 为: ',num2str(MSE1)])
disp(['均方根误差 RMSE 为: ',num2str(RMSE1)])
disp(['平均百分比误差 MAPE 为: ',num2str(MAPE1*100),'%'])
disp(['相关系数 R 为: ',num2str(R1)])
%打印结果
disp(' ')
disp('/')
disp('打印测试集预测结果...')
disp([' 编号 实际值 预测值 误差'])
for i=1:len
disp([i,output_test(i),test_simu(i),error(i)])
end
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/208080.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】Ubuntu添加root用户

在Ubuntu中&#xff0c;默认情况下是禁用了root用户的登录。如果仍然想要启用root用户&#xff0c;并设置root用户的密码&#xff0c;应按照以下步骤进行操作&#xff1a; 一、输入sudo passwd root设置root用户密码 二、切换root用户 sudo -i su root 这两条命令均可却换至…

Tkinter 面向对象框架《一》

一、说明 在本教程中&#xff0c;您将学习如何在 Tkinter 中应用面向对象编程以使代码更有条理。首先介绍Tk下小部件&#xff0c;然后介绍Ttk小部件&#xff0c;即如何从ttk.Frame类继承并在根窗口中使用它。 二、定义 Tkinter 面向对象的窗口 2.1 最基本的对象 以下简单程序创…

数字媒体技术基础之:栅格图像与矢量图形

使用各种软件创建不同类型的复合图像和图稿时&#xff0c;常会遇到基本的数字图像类型&#xff1a;栅格图像和矢量图像。 ◆ ◆ ◆ 栅格图像 栅格图像是基于像素的图像&#xff0c;故又称为“像素图像”或“位图图像”&#xff0c;主要用于编辑照片或制作可在 Web 上轻松使用…

C#语言高阶开发

目录 数据结构 集合 动态数组ArrayList 习题&#xff1a;声明一个Monster类&#xff0c;有一个Attack方法,用一个ArrayList去封装Monster的对象,装10个&#xff0c;遍历monster的list让他们释放攻击方法 哈希表HashTable 创建一个武器类&#xff0c;有一个属性叫做id,每个…

循环队列的结构设计和基本操作的实现(初始化,入队,出队,判空,获取长度,清空,销毁)

目录 1.队列的定义 2.循环队列的设计图示 3.循环队列的结构设计 4.循环队列的实现 5.循环队列的总结 1.队列的定义 和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素. 在队列中,允许插入的一…

数据结构与算法之美学习笔记:29 | 堆的应用:如何快速获取到Top 10最热门的搜索关键词?

目录 前言堆的应用一&#xff1a;优先级队列堆的应用二&#xff1a;利用堆求 Top K堆的应用三&#xff1a;利用堆求中位数解答开篇内容小结 前言 本节课程思维导图&#xff1a; 搜索引擎的热门搜索排行榜功能你用过吗&#xff1f;搜索引擎每天会接收大量的用户搜索请求&#x…

Shell循环:for(三)

示例&#xff1a;使用for实现批量主机root密码的修改 一、前提 已完成密钥登录配置&#xff08;ssh-keygen&#xff09;定义主机地址列表并了解远程修改密码的方法 [rootlocalhost ~]# ssh-keygen #设置免密登录[rootlocalhost ~]# ssh-copy-id 192.168.151.151 二、演示…

Linux进程详解

Linux进程详解 1、进程概述1.1并行和并发1.2 PCB1.3 进程状态1.4 进程命令 2、进程创建2.1 函数2.2 fork()解析 3、父子进程3.1 进程执行位置3.2 循环创建子进程3.3 终端显示问题3.4 进程数数 4、execl和execlp4.1 execl()4.2 execlp()4.3 函数的使用 5、进程控制5.1 结束进程5…

Oracle忘记所有密码怎么办

最近遇到一个Oracle的问题&#xff0c;密码要过期了&#xff0c;但是除了用户密码&#xff0c;其他密码都不知道了&#xff0c;修改不了密码怎么办呢&#xff1f; 试了各种方法&#xff0c;最终下面的方式生效了&#xff1a; 首先&#xff0c;使用orapwd生成新的密码文件&…

selenium 工具 的基本使用

公司每天要做工作汇报&#xff0c;汇报使用的网页版&#xff0c; 所以又想起 selenium 这个老朋友了。 再次上手&#xff0c;发现很多接口都变了&#xff0c; 怎么说呢&#xff0c; 应该是易用性更强了&#xff0c; 不过还是得重新看看&#xff0c; 我这里是python3。 pip安装…

有文件实体的后门无文件实体的后门rootkit后门

有文件实体后门和无文件实体后门&RootKit后门 什么是有文件的实体后门&#xff1a; 在传统的webshell当中&#xff0c;后门代码都是可以精确定位到某一个文件上去的&#xff0c;你可以rm删除它&#xff0c;可以鼠标右键操作它&#xff0c;它是有一个文件实体对象存在的。…

熬夜会秃头——beta冲刺Day4

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标记录beta冲刺Day4团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 一、团队成员会议总结 1、成员工作进…

(详细教程)笔记本电脑安装Ubuntu系统

1.前言 老的小米笔记本淘汰了&#xff0c;装一下linux系统玩一下。 使用工具如下&#xff1a;一台小米笔记本pro15.6一个惠普32G U盘一个台式机用于下载镜像等资源 2.下载Ubuntu桌面版 cn.ubuntu.com/download/de… 这里我下载的是 22.04.3 LTS 3.下载烧录工具&#xff0c…

Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal

目录 摘要引言 Lattice-Based Blind Signatures: Short, Efficient, and Round-Optimal CCS 2023 摘要 我们提出了一种基于随机预言机启发式和标准格问题&#xff08;环/模块SIS/LWE和NTRU&#xff09;的2轮盲签名协议&#xff0c;签名大小为22KB。该协议是全面优化的&#xf…

如何做接口测试?接口测试工具有哪些?

回想入职测试已经10年时间了&#xff0c;初入职场的我对于接口测试茫然不知。后来因为业务需要&#xff0c;开始慢慢接触接口测试。从最开始使用工具进行接口测试到编写代码实现接口自动化&#xff0c;到最后的测试平台开发。回想这一路走来感触颇深&#xff0c;因此为了避免打…

分享82个节日PPT,总有一款适合您

分享82个节日PPT&#xff0c;总有一款适合您 82个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1boDTl3PiHFXLJ890CoUfJA?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易。…

MathType 7.5.2中文版软件使用期到了怎么办?

MathType 7.5.2中文版作为一款专业的公式编辑器&#xff0c;MathType受到很多人的青睐&#xff0c;它可以将编辑好的公式保存成多种图片格式或透明图片模式&#xff0c;可以很方便的添加或移除符号、表达式等模板&#xff08;只需要简单地用鼠标拖进拖出即可)&#xff0c;也可以…

39.从0到上线三天搭建个人网站(第三天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 一、第三天主要工作 1.完成detail页面的开发 2.将所有数据以及部分静态资源存在uniCloud&#xff0c;为以后做管理后台做准备 3.创建云对象getData&#xff0c;在beforecreate&#xff08;&#xff09;中获取数据 4.…

详解原生Spring框架下的类切入点表达式与切入点函数

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

126. 单词接龙 II

126. 单词接龙 II 需要注意的是&#xff0c;由于要找最短路径&#xff0c;连接 dot 与 lot 之间的边就不可以被记录下来&#xff0c;同理连接 dog 与 log 之间的边也不可以被记录。这是因为经过它们的边一定不会是最短路径。因此在广度优先遍历的时候&#xff0c;需要记录的图…