2.33 员工离职预测实战:用机器学习预测员工流失,降低企业成本
本文介绍了员工离职预测的机器学习实战案例。通过构建XGBoost模型预测员工流失风险,包含数据准备、特征工程、模型训练等完整流程。结果显示模型AUC达0.75,可识别高风险员工特征(如满意度低、加班多)。该方法能帮助企业提前发现离职倾向,降低招聘成本。实践建议强调数据质量、特征选择和业务结合的重要性,为HR决策提供数据支持。
·
2.33 员工离职预测实战:用机器学习预测员工流失,降低企业成本
引言
员工离职预测是HR数据分析的重要应用,通过预测员工流失,企业可以提前采取措施,降低招聘成本,提升员工满意度。本文将实战演示如何构建员工离职预测模型。
一、业务背景
1.1 问题定义
# 业务背景
def hr_analytics_background():
"""
HR分析背景
"""
print("=" * 60)
print("员工离职预测业务背景")
print("=" * 60)
print("""
业务问题:
- 员工离职率高,招聘成本上升
- 需要提前识别离职风险
- 制定针对性的挽留策略
数据需求:
- 员工基本信息
- 工作表现数据
- 满意度调查
- 历史离职数据
目标:
- 预测员工离职概率
- 识别关键风险因素
- 支持HR决策
""")
return True
hr_analytics_background()
二、数据准备
2.1 员工数据
# 员工数据准备
def prepare_employee_data():
"""
准备员工数据
"""
np.random.seed(42)
n = 2000
data = {
'employee_id': range(1, n + 1),
'age': np.random.randint(22, 60, n),
'gender': np.random.choice(['M', 'F'], n),
'department': np.random.choice(['IT', 'Sales', 'HR', 'Finance'], n),
'position': np.random.choice(['Junior', 'Middle', 'Senior'], n),
'salary': np.random.uniform(5000, 50000, n),
'years_at_company': np.random.uniform(0, 15, n),
'years_in_current_role': np.random.uniform(0, 5, n),
'overtime': np.random.choice([0, 1], n, p=[0.6, 0.4]),
'work_life_balance': np.random.uniform(1, 5, n),
'job_satisfaction': np.random.uniform(1, 5, n),
'performance_rating': np.random.uniform(1, 5, n),
'training_times': np.random.randint(0, 10, n),
'promotion': np.random.choice([0, 1], n, p=[0.8, 0.2]),
'churn': np.random.choice([0, 1], n, p=[0.75, 0.25])
}
df = pd.DataFrame(data)
return df
df_employee = prepare_employee_data()
print(f"员工数据形状: {df_employee.shape}")
print(df_employee.head())
三、特征工程
3.1 特征处理
# 特征工程
def employee_feature_engineering(df):
"""
员工特征工程
"""
from sklearn.preprocessing import LabelEncoder
df_processed = df.copy()
# 编码分类特征
le_dept = LabelEncoder()
df_processed['department_encoded'] = le_dept.fit_transform(df['department'])
le_pos = LabelEncoder()
df_processed['position_encoded'] = le_pos.fit_transform(df['position'])
le_gender = LabelEncoder()
df_processed['gender_encoded'] = le_gender.fit_transform(df['gender'])
# 选择特征
features = ['age', 'salary', 'years_at_company', 'years_in_current_role',
'overtime', 'work_life_balance', 'job_satisfaction',
'performance_rating', 'training_times', 'promotion',
'department_encoded', 'position_encoded', 'gender_encoded']
X = df_processed[features]
y = df_processed['churn']
return X, y
X, y = employee_feature_engineering(df_employee)
print(f"特征形状: {X.shape}")
print(f"离职率: {y.mean():.2%}")
四、模型训练
4.1 离职预测模型
# 离职预测模型
def train_churn_model(X, y):
"""
训练离职预测模型
"""
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42, stratify=y
)
# 训练XGBoost模型
import xgboost as xgb
model = xgb.XGBClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)[:, 1]
# 评估
accuracy = accuracy_score(y_test, y_pred)
auc = roc_auc_score(y_test, y_proba)
print(f"模型准确率: {accuracy:.4f}")
print(f"模型AUC: {auc:.4f}")
print("\\n分类报告:")
print(classification_report(y_test, y_pred))
# 特征重要性
importance = pd.DataFrame({
'feature': X.columns,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
print("\\n特征重要性:")
print(importance)
return model, importance
churn_model, importance = train_churn_model(X, y)
五、业务应用
5.1 风险员工识别
# 风险员工识别
def identify_risk_employees(df, model, X):
"""
识别高风险员工
"""
# 预测离职概率
churn_proba = model.predict_proba(X)[:, 1]
df['churn_probability'] = churn_proba
# 识别高风险员工
high_risk = df[df['churn_probability'] > 0.7]
print(f"高风险员工数: {len(high_risk)}")
print(f"高风险员工占比: {len(high_risk)/len(df):.2%}")
# 分析高风险员工特征
if len(high_risk) > 0:
print("\\n高风险员工特征:")
print(f" 平均满意度: {high_risk['job_satisfaction'].mean():.2f}")
print(f" 平均工作年限: {high_risk['years_at_company'].mean():.2f}")
print(f" 加班比例: {high_risk['overtime'].mean():.2%}")
return high_risk
high_risk_employees = identify_risk_employees(df_employee, churn_model, X)
六、总结与思考
6.1 核心要点
- 业务理解:理解HR业务需求
- 数据准备:收集员工相关数据
- 模型训练:构建预测模型
- 业务应用:识别风险员工,制定策略
6.2 思考题
- 如何应用预测结果?
- 如何制定挽留策略?
- 如何评估模型效果?
6.3 实践建议
- 数据质量:确保数据准确完整
- 特征工程:选择有预测能力的特征
- 模型优化:持续优化模型效果
- 业务结合:结合HR知识应用
下一节预告:我们将学习二手车价格预测完整案例,特征工程、模型训练、调参全流程。
更多推荐


所有评论(0)