雇员离职倾向的分析

通过对雇员的满意度、工作强度、薪资水平等预测雇员是否会永久离职

Link: https://www.kaggle.com/grdg2010/hr-comma-sep (test集由train集切分,缩小train集)

题目描述

这次的数据集来源于某大企业,对于一个大企业而言优秀的员工必不可少,但是有的十分优秀的员工会永久的离职,看上去原因可能并不明显。

频繁的员工离职,这到底是是薪资问题,还是工作强度问题,还是别的什么?这个大企业迫切想要知道为什么他们会离职,同时企业也希望能够预测出来接下来哪些优秀的员工会离职。

一个很不幸的事实是该企业的管理者并没有记录员工离职的原因,但是我们能从总体数据集中找到一些离职的合理解释。

我们的任务主要分为两步,一是认识到为什么有的员工会离职,二是预测哪些员工会离职。所以,这里我们可能要探寻离职和某些因素之间的相关性强弱,尝试用一些相关性较强的因素来解释和预测员工的离职情况。

这里的数据集包含了12000个员工基本信息,包括是否离职的情况。还有2999个员工我们只有其基本信息,但并不知道他们是否会离职。请你来预测他们是否会离职,这将作为衡量你这道题目效果的标准。

小提示

  • 本题是一道规范的二分类问题,员工的离职即为我们Label,各种基本信息即为Feature。
  • 先对数据进行预处理、加工、整合,得到你认为合理的高阶数据。之后探寻这些高阶数据或原始数据,与离职之间的相关性,这种相关性可以用相关系数进行刻画。
  • 选出相关系数较高的Feature,利用这些Feature训练分类器,直接用训练好的分类器进行预测即可。

先修技能

解释术语

  • 皮尔逊相关系数:在自然科学领域中,皮尔逊相关系数广泛用于度量两个变量之间的相关程度,其值介于-1与1之间。它是由卡尔·皮尔逊弗朗西斯·高尔顿在19世纪80年代提出的一个相似却又稍有不同的想法演变而来的。这个相关系数也称作“皮尔逊积矩相关系数”。
  • 逻辑回归:逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。
  • SVM-SVC:SVM是Support Vector Machines(支持向量机)的缩写,可以用来做分类和回归。SVC是SVM的一种Type,是用来的做分类的,SVR是SVM的另一种Type,是用来的做回归的。
  • 朴素贝叶斯:朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBM)。和决策树模型相比,朴素贝叶斯分类器(Naive Bayes Classifier,或 NBC)发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。
  • kNN:邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

输入格式

  • 数据分为训练数据和测试数据,分别保存在train.csv和test.csv两个文件中。
  • 其中训练数据主要包括12000条记录。字段包括:
  • 满意程度(satisfaction_level)
  • 教育情况(last_evaluation)
  • 任务数量(number_projects)
  • 平均月工时(average_monthly__hours)
  • 花公司中的时间(time_spend_company)
  • 是否有过工伤(Work_accident)
  • 5年内是否有晋升(promotion_last_5years)
  • 所在部门 (sales)
  • 薪资水平(salary)
  • 是否离职(left)
  • 测试数据主要包括2999条记录,测试数据的字段信息和训练数据相比,除了不包括left字段以外其他完全相同。
  • sample_submission.csv是一个您应当提交的格式样例。

输出格式

您的提交csv文件应包含行名,并采用以下格式:对于测试集中的每行数据,输出一行,其中包含id、离职情况(0表示未离职,1表示离职)如下所示:

id, left
12000,1
12001,0
12002,1
12003,0
(etc...)

评价

通过计算F1 score来衡量回归模型的优劣。该数值越大,表明效果越好。F1 score计算公式如下:

$$ F_1 = 2\cdot \frac{准确率\cdot 召回率}{准确率+ 召回率}

$$

其中:

$$ 准确率 = \frac{TP}{TP+FP}\ 召回率=\frac{TP}{TP+FN}

$$

TP: 预测为正,实际为正

TN: 预测为负,实际为负

FP:预测为正,实际为负

FN: 预测为负,实际为正。

对于数据测试结果只有以上这4种情况。

代码与数据

测评配置环境

python

pip install -U numpy
pip install pandas
pip install -U scikit-learn

测评代码

from sklearn.metrics import f1_score
import pandas as pd
y_test = pd.read_csv(data_dir + "correct_submission.csv") # 正确答案
y_pred = pd.read_csv(data_dir + "prediction_test.csv") # 用户预测的答案
f1_score= f1_score(y_test['left'],y_pred['left']) # f1 在0到1之间,越大越好哈哈哈

results matching ""

    No results matching ""