猿でもわかるAIビジネス活用シリーズ 🐵📊  AIを使った離職率の予測と防止策とは？

 

## AIを使った離職率の予測と防止策とは？〜現場で使える実装例とノウハウも紹介〜

---

## 1. はじめに：なぜ離職率の予測が重要なのか？

社員の突然の退職は、企業にとって大きな痛手です。
採用・研修コストの損失、生産性の低下、チームの士気への影響など、見えないコストが積み重なります。

**「あの人、急に辞めるなんて思ってもなかった」**
こんな経験を持つマネージャーも多いはず。

しかし、もし「誰が辞めそうか？」を**事前に予測できたら**どうでしょうか？

本記事では、**AI（機械学習）を使って社員の離職リスクを予測し、予防施策を立てる方法**を、実際のコード例を交えてわかりやすく解説します。

---

## 2. 離職率予測に使えるAI技術の概要

### 🔍 使用する技術スタック：

* **言語**：Python 3.10+
* **データ分析**：pandas, matplotlib
* **機械学習**：scikit-learn（ランダムフォレスト）
* **可視化**：SHAP（特徴量の重要性を直感的に理解）

### 💡 どんなデータを使う？

以下のような人事データが想定されます：

| 項目                | 内容            |
| ----------------- | ------------- |
| `Age`             | 年齢            |
| `Department`      | 部署            |
| `JobSatisfaction` | 仕事満足度（1〜4）    |
| `YearsAtCompany`  | 在籍年数          |
| `OverTime`        | 残業の有無         |
| `MonthlyIncome`   | 月収            |
| `Attrition`       | 離職フラグ（0 or 1） |

---

## 3. 実装例：ランダムフォレストで離職率を予測してみよう

### 📦 事前準備（必要なライブラリをインストール）

```bash
pip install pandas scikit-learn shap matplotlib
```

### 📁 ステップ1：データの読み込みと前処理

```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report

# 仮の人事データを読み込み
df = pd.read_csv("HR_data.csv")

# カテゴリ変数を変換
df["OverTime"] = df["OverTime"].map({"Yes": 1, "No": 0})
df = pd.get_dummies(df, columns=["Department"])

# 目的変数と説明変数に分ける
X = df.drop("Attrition", axis=1)
y = df["Attrition"]

# 訓練・テストに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```

### 🤖 ステップ2：モデルの学習と評価

```python
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))
```

### 🔍 ステップ3：SHAPで特徴量の重要性を可視化

```python
import shap
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

shap.summary_plot(shap_values[1], X_test)
```

<img src="https://raw.githubusercontent.com/slundberg/shap/master/docs/artwork/shap_summary_plot.png" width="600" />

上記のように、**残業・在籍年数・満足度**などが、離職率に強く影響していることが分かります。

---

## 4. 現場で使えるノウハウと落とし穴

### ✅ よく使う実践的テクニック

| テクニック    | 内容                               |
| -------- | -------------------------------- |
| 欠損値処理    | 平均値補完・中央値補完・削除の選定が重要             |
| アウトライア除外 | 月収が異常に高い社員などを除外して精度UP            |
| モデル選定    | ランダムフォレスト以外にLightGBM, XGBoostも有力 |

### ⚠️ よくあるミス

* **「過学習」**：テスト精度ではなく業務での再現性に注目すべき
* **「データの偏り」**：一部の部署だけ離職が集中→モデルの公平性に注意
* **「離職=悪」ではない**：あくまで“傾向を知る”のが目的

---

## 5. 応用編：リアルタイムダッシュボード連携（概要のみ）

予測モデルを学習済みpickleファイルとして保存し、FlaskやStreamlitを使ってリアルタイムで以下のような画面を構築することも可能です。

* 各部署の離職リスクヒートマップ
* 離職可能性トップ10社員一覧（警告フラグ付き）
* マネージャー向けアラート通知

これにより、**単なる予測を“行動に移せる”情報へ昇華**できます。

---

## 6. まとめ：離職予測AIの可能性と今後の展望

### ✅ メリット：

* 離職のサインを**定量的に可視化**
* マネジメントの判断材料が増える
* 社員のケアを“先手”で行える

### ❌ デメリット：

* データ収集・整備コスト
* モデルの“解釈性”が求められる
* 予測に頼りすぎて現場の声が疎かになる危険も

---

### 🚀 今後の展望

* ChatGPT APIやLLMと連携して「離職リスク会話ボット」の構築
* 感情分析や社内SNSデータを使った**非構造データの統合予測**
* マネジメントへの**AI支援ツールの拡張**

---

## 最後に

AIによる離職率予測は、**人を“切る”ためではなく、守るため**の武器です。
データ×現場の知見で、より良い組織作りを目指しましょう！

---

🛠 コード全文（GitHub）やStreamlit連携版の例も今後別記事で紹介予定です。
ご質問・フィードバックはコメント欄にぜひ！