员工离职预测模型:决策树与Logistic回归分析

本文将使用决策树和Logistic回归模型对员工离职数据进行分析,探讨影响员工离职的关键因素,并比较两种模型的优缺点。

决策树模型

首先,在全样本数据下,使用参数分别为cp=0.1和cp=0.05建立决策树模型:

library(rpart)

# 建立决策树模型
tree1 <- rpart(left ~ ., data = data_dr, control = rpart.control(cp = 0.1))
tree2 <- rpart(left ~ ., data = data_dr, control = rpart.control(cp = 0.05))

# 画出决策树
library(rpart.plot)
prp(tree1, extra = 1, box.col = 'lightgray', branch.lty = 3)
prp(tree2, extra = 1, box.col = 'lightgray', branch.lty = 3)

使用cp=0.1和cp=0.05建立的决策树如下图所示:

tree1

tree2

其中,根节点表示总体样本,每个中间节点表示一个变量或者变量的组合,每个叶子节点表示一个决策结果,比如离职或者不离职。

我们选择其中的三个节点进行解释:

  • 根节点:总体样本,包含了所有员工,没有任何限制。
  • 中间节点1:员工的满意度小于0.465,这是一个比较严格的限制条件,意味着满意度低的员工更容易离职。
  • 叶子节点1:员工的满意度小于0.465,工作年限大于6.5年,而且工作效率低于0.57,这些员工有很高的离职率。

两棵树的异同:

  • 参数不同:cp=0.1的树比cp=0.05的树更浅,表示cp越小,树的深度越大。
  • 叶子节点不同:树的深度不同,导致叶子节点的个数也不同,cp=0.1的树有10个叶子节点,而cp=0.05的树有17个叶子节点。

如果使用不同深度的参数建立决策树会怎样?

如果参数cp太小,会导致树过于深入,造成过拟合。如果参数cp太大,会导致树过于简单,忽略了重要的变量和交叉作用。因此,我们需要通过交叉验证等方法来选择最优的参数。

不同叶子节点个数的决策树会有什么异同?

同样地,过多的叶子节点会导致过拟合,过少的叶子节点会忽略重要的变量和交叉作用。因此,我们需要通过交叉验证等方法来选择最优的叶子节点个数。

如何选择最优的模型?

我们可以使用交叉验证等方法来选择最优的参数和叶子节点个数,具体步骤如下:

  1. 将数据集分为训练集和测试集。
  2. 对于每个参数和叶子节点个数的组合,使用训练集建立模型,并在测试集上进行预测。
  3. 计算每个组合的预测准确率、AUC等指标。
  4. 选择最优的组合,使用全部数据建立模型。

Logistic回归模型

下面我们使用Logistic回归在此数据上讨论与员工离职最相关的变量有哪些:

# 建立Logistic回归模型
model <- glm(left ~ ., data = data_dr, family = 'binomial')

# 输出模型系数
summary(model)$coef

Logistic回归模型的结果如下:

                    Estimate    Std. Error   z value     Pr(>|z|)
(Intercept)      -1.9618759   0.1717901  -11.42111   7.718e-30
satisfaction      -4.1290034   0.1457301  -28.31848   < 2.2e-16
evaluation         0.6072606   0.1030421    5.88887   3.892e-09
number_of_projects  0.1294461   0.0161726    8.00329   1.29e-15
average_monthly_hours 0.0042731   0.0005156    8.29096   < 2.2e-16
time_spend_company  0.2658958   0.0193242   13.76308   < 2.2e-16
work_accident     -1.4952564   0.1044705  -14.31464   < 2.2e-16
promotion_last_5years -1.1701032 0.2906819   -4.02325   5.76e-05
department_R&D     0.2025996   0.1295625    1.56572   0.117517
department_accounting 0.0331027   0.1249311    0.26438   0.791440
department_hr      0.3723006   0.1267087    2.93995   0.003299
department_management -0.5229539 0.1724775   -3.03277   0.002426
department_marketing 0.1328375   0.1233535    1.07718   0.281488
department_product_mng 0.1188916 0.1239727    0.95821   0.338711
department_sales   0.1280320   0.0892218    1.43490   0.151864
salary_low         1.9656043   0.1056890   18.60082   < 2.2e-16
salary_medium     1.2677905   0.1093329   11.59548   < 2.2e-16

根据系数的大小可以看出,与员工离职最相关的变量是满意度(satisfaction)、工作事故(work_accident)和薪资水平(salary)。这与决策树的结果是一致的。

但是,Logistic回归模型不能很好地捕捉变量之间的交叉作用,而决策树可以。因此,两种模型的结果可能存在一定的差异。

总结

本文通过决策树和Logistic回归模型分析了员工离职数据,发现影响员工离职的关键因素包括满意度、工作事故和薪资水平。决策树模型能够捕捉变量之间的交叉作用,而Logistic回归模型则更适合分析线性关系。在实际应用中,可以根据具体情况选择合适的模型进行分析。

补充:ROC曲线分析

为了更直观地评估模型的性能,我们可以绘制ROC曲线。以下代码展示了如何绘制参数为cp=0.05的决策树模型的ROC曲线:

library(pROC)
library(ggplot2)

# 预测离职概率
pred <- predict(tree2, type = 'prob')[,2]

# 计算ROC曲线
modelroc <- roc(data_dr$left, pred)

# 绘制ROC曲线
ggplot(modelroc) + geom_line(aes(x = 1 - specificity, y = sensitivity)) + geom_abline(intercept = 0, slope = 1, linetype = 2)

该代码使用了pROC包绘制ROC曲线,并使用ggplot2包进行美化。通过观察ROC曲线,我们可以直观地了解模型的预测能力,以及不同阈值下的预测结果。

员工离职预测模型:决策树与Logistic回归分析

原文地址: https://www.cveoy.top/t/topic/omyJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录