30秒で要点
ランダムフォレストは、違うデータと特徴量の見方で学習した複数の決定木を集約する予測モデルです。高いスコアが出ても、データ分割の漏れ、時系列の逆流、相関特徴量、クラス不均衡、指標の選び方を確認しなければ運用判断には使えません。
- 構造: 1本の木で決めず、木の集約で予測を安定させる
- 評価: OOB、検証、テストをデータの生成過程に合わせて使う
- 解釈: 重要度は予測への寄与であり、原因や施策効果ではない
- 運用: しきい値、誤りのコスト、校正、監視、停止条件を決める
1. 一つの決定木から森へ
決定木は、特徴量の条件でデータを分岐し、葉でクラスや数値を予測します。ランダムフォレストは、Breimanの原論文が説明するように、ランダムなベクトルに依存する複数の木を組み合わせ、個々の木の強さと木どうしの相関を予測誤差の観点から扱います。
表が収まらない場合は、横にスクロールできます
| 部分 | 役割 | 確認すること |
|---|---|---|
| 標本 | 木ごとに異なる学習データを使う | 重複、群、時点の混入 |
| 特徴量 | 分岐で見る候補をランダムに絞る | 相関、欠損、カテゴリの扱い |
| 木 | 条件を積み重ねて予測する | 深さ、葉の最小数、過学習 |
| 集約 | 分類は投票、回帰は集約 | 確率の校正、予測区間の限界 |
scikit-learnのRandomForestClassifier、RandomForestRegressorは、これらをパラメータで設定します。実装の既定値はバージョンで変わり得るため、学習時のライブラリ、乱数、パラメータを記録します。
2. 分類・回帰・確率を分ける
分類はクラスを当て、回帰は連続値を予測します。分類器が返す確率は、正しい確率として使えるか別途校正を確認します。しきい値を0.5に固定せず、偽陽性・偽陰性のコストと業務の停止条件から決めます。
表が収まらない場合は、横にスクロールできます
| 問い | 主要指標の例 | 追加で見ること |
|---|---|---|
| 二値分類 | 適合率、再現率、ROC-AUC | PR-AUC、しきい値、群別誤り |
| 多クラス | macro・weighted F1 | 少数クラス、混同行列 |
| 回帰 | MAE、RMSE、R² | 残差、外れ値、期間別誤差 |
| 確率 | Brier、校正曲線 | 予測確率と意思決定コスト |
Accuracyが高くても、陽性が少ない業務では全件陰性のモデルに負けることがあります。主要指標、補助指標、採用しない場合の理由を評価計画へ書きます。
3. OOBと検証データを使い分ける
ブートストラップで各木に使われなかった観測は、OOB(out-of-bag)評価に利用できます。OOBは便利な内部チェックですが、実運用の未来期間や未知グループをそのまま再現するとは限りません。
- 同一顧客・同一案件の行が分割をまたぐなら、Group分割を検討する
- 時点で未来の情報が入るなら、TimeSeries分割を使う
- ハイパーパラメータを選ぶ検証データと、最後まで触らないテストを分ける
- 前処理、特徴量選択、欠損補完は学習折の中で適合する
- OOB、検証、テストのスコアとデータ期間を同じ台帳へ残す
テストを何度も見て設定を変えると、テストが検証データ化します。最終評価は、運用開始後に得られるデータ生成過程をできるだけ模倣します。
4. 重要度を因果と呼ばない
scikit-learnの公式例は、相関した特徴量があると、木の分割に基づく重要度やPermutation Importanceが個々の特徴量へ情報を分散させたり、重要でないように見せたりする例を示しています。
表が収まらない場合は、横にスクロールできます
| 見方 | 何を表すか | 留保 |
|---|---|---|
| 不純度ベース | 木の分割で減った不純度の集計 | 高カーディナリティや相関で偏る |
| Permutation | その特徴を入れ替えたときのスコア変化 | 代替する相関特徴があると小さくなる |
| 反実仮想 | 特徴を変えた予測差 | 観測データの因果効果を保証しない |
| 業務判断 | 介入で結果が変わるか | 実験、自然実験、専門レビューが必要 |
重要度の順位を「この特徴量を改善すれば結果が上がる」と書かず、予測モデルがどの特徴を使ったかという限定した解釈にします。
5. リーク・不均衡・時系列を点検する
モデルが高精度でも、目的変数の後に発生する情報を特徴量へ入れればリークです。解約予測に解約後の請求状態を入れる、故障後の修理コードを入れる、といった例は、運用時に利用できません。
表が収まらない場合は、横にスクロールできます
| リスク | 例 | 対策 |
|---|---|---|
| リーク | 予測時点より後の値 | 特徴量の生成時点を固定 |
| 不均衡 | 陽性が少ない | PR-AUC、重み、再標本化、閾値 |
| 時系列 | 将来の行を学習に混ぜる | 時系列分割、期間別監視 |
| 群の重複 | 同じ顧客が学習・テスト双方 | Group分割、顧客単位の管理 |
| 変化 | 商品、制度、行動が変わる | ドリフト、再学習、停止基準 |
学習前に「予測を行う時点」を決め、特徴量台帳に生成時刻、所有者、欠損処理、利用可否を記録します。
6. 本番投入前の小さな検証
- 目的変数、予測時点、対象群、除外条件を書く。
- 単純なベースラインと、ランダムフォレストを同じ分割で比べる。
- OOB・検証・テストを分け、主要指標と誤りのコストを確認する。
- しきい値、校正、群別誤り、極端な入力を点検する。
- 影響の大きい判断では、人が確認する保留群と停止条件を設ける。
- 実運用でデータの分布・誤り・苦情・再学習の期限を監視する。
スコアの改善が小さい、解釈が不安定、少数群の誤りが許容できない場合は、モデルを複雑にする前に目的・特徴量・データ収集を見直します。
7. よくある失敗
- 学習データとテストデータをランダムに混ぜ、時系列や顧客重複を隠す
- OOBスコアを未来データの保証として扱う
- 重要度を原因、施策効果、顧客の属性価値と断定する
- Accuracyだけで不均衡な分類モデルを採用する
- 前処理を全データへ先に適用し、リークを作る
- ライブラリ版、乱数、特徴量の生成時点を記録しない
8. 精度の数字より、説明できる運用条件
ランダムフォレストは、木の多様性と集約を使う予測手法です。モデルを使う価値は、精度の数字だけでなく、運用時点を再現した評価、誤りのコスト、解釈の境界、停止と再学習の手順まで説明できることにあります。
木の構造は 決定木分析の基礎、分類の指標は ロジスティック回帰と分類、判断の記録は データドリブン意思決定 も参照してください。