Databricksではじめる機械学習:ランダムフォレスト(後編)
- mellowlaunch

- 2025年8月26日
- 読了時間: 4分
はじめに
前編ではランダムフォレストの仕組みやユースケースについて解説しました。本編では実際にDatabricks上でコードを動かしながら、その意味と流れを解説します。さらに、モデルの特徴を整理し、実務で活用する際のポイントをまとめます。
実行コードの意味と流れ(解説)
Databricksでランダムフォレストを利用する場合、基本的な流れは「データ準備 → 学習用データの分割 → モデル定義と学習 → 評価」というシンプルなステップです。以下、各工程を詳しく見ていきましょう。
① データ読み込みと準備
まずはDatabricksのDeltaテーブルから学習データを読み込みます。前編で作成した「ml_training_data」をSpark DataFrameとして取得し、pandasに変換します。pandas形式にすることで、scikit-learnの学習器(RandomForestClassifier)が扱えるようになります。
df_spark = spark.read.table("ml_catalog.ml_training.ml_training_data")
df_pd = df_spark.toPandas()
X = df_pd[["gender", "age", "tenure", "monthly_fee", "num_support_calls", "contract_type"]]
y = df_pd["churn"]
ここでXは説明変数(特徴量)、yは目的変数(解約有無)です。
② 学習用とテスト用データへの分割
モデルの性能を確認するには、学習データとテストデータを分ける必要があります。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
学習用データでモデルを構築し、未知のテストデータで精度を確認することで、実際の運用に近いシナリオを再現できます。
③ モデル定義と学習
次にランダムフォレストのモデルを定義します。代表的なパラメータは以下です。
n_estimators:決定木の本数(多数決の票数に相当)
max_depth:各木の深さ(過学習を防ぐ制御ポイント)
random_state:乱数の固定(再現性確保)
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
model.fit(X_train, y_train)
このコードは「100本の深さ5までの決定木を構築し、多数決で分類する」ことを意味します。学習済みのモデルは、そのまま新しいデータに対して予測可能です。
④ モデルの評価
学習後はテストデータに対する予測を行い、精度を確認します。
from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print("テスト精度:", accuracy_score(y_test, y_pred))
このように、テスト精度が高く出れば、モデルは未知データに対しても安定して機能していることがわかります。
⑤ 特徴量重要度の確認
ランダムフォレストの利点の一つが「特徴量重要度(Feature Importance)」を出力できる点です。どの特徴が予測に寄与しているかを可視化すれば、モデルの解釈性を高めることができます。
import pandas as pd
pd.DataFrame({
"特徴量": X.columns,
"重要度": model.feature_importances_
}).sort_values("重要度", ascending=False)
例えば「num_support_calls(サポート回数)」や「contract_type(契約タイプ)」の重要度が高ければ、「顧客がサポートに多く連絡している」「契約形態が特定のタイプ」であることが解約リスクに大きく影響していると解釈できます。
特徴まとめ
ランダムフォレストの特徴を整理すると、以下のようになります。
強み
汎化性能が高い:多数の木で構成されるため、過学習しにくく安定した性能を発揮。
ノイズや外れ値に強い:多数決により例外的なデータの影響が抑えられる。
特徴量選択が不要:ランダムに特徴を選ぶ仕組みがあるため、前処理の負担が小さい。
分類・回帰どちらも対応:幅広いタスクで利用可能。
注意点
モデルが重くなる:木の本数が増えると学習時間・予測時間が増加。
解釈性が低い:単一の木はルールを説明できるが、全体像は複雑。特徴量重要度を活用して補完する必要がある。
パラメータ調整のポイント
n_estimators:100~300程度が一般的。精度を高めたい場合は増やすが、計算コストとのバランスを取る。
max_depth:深さを制限することで過学習を防ぐ。5~10程度で調整されることが多い。
max_features:各木が利用する特徴量の数を制御し、ランダム性と性能のバランスを最適化。
まとめると
ランダムフォレストは、複数の決定木を組み合わせて安定した予測を実現するアルゴリズムです。Databricksの環境を利用すれば、大規模データを効率的に扱いながらモデルを学習・評価できます。コードの流れは「データ準備 → 分割 → 学習 → 評価 →特徴量重要度確認」というシンプルなステップであり、実務にすぐ応用可能です。強みは精度と安定性にあり、課題は計算コストと解釈性の低下にありますが、適切にパラメータを調整すれば十分に実用レベルのモデルを構築できます。まとめると、ランダムフォレストはDatabricksでの機械学習入門として最適であり、幅広い業界課題を解決するための有力な選択肢といえます。





コメント