【モデル比較】SVM・決定木・ランダムフォレストの精度と解釈性の違い

はじめに

分類タスクにおいて、さまざまなモデルが利用できますが、どれを選べばよいのでしょうか?

本記事では代表的な分類アルゴリズムである以下3つのモデルについて、精度と解釈性(説明のしやすさ)の観点から比較します。

  • サポートベクターマシン(SVM)
  • 決定木(Decision Tree)
  • ランダムフォレスト(Random Forest)

同じデータセットで学習させた上で、精度と可視化を通して、それぞれのモデルの特徴を明らかにします。


データセットと共通処理の準備

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report

# データ読み込みと前処理
X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

モデル①:SVM(サポートベクターマシン)

from sklearn.svm import SVC

model_svm = SVC(kernel='rbf')
model_svm.fit(X_train, y_train)
y_pred_svm = model_svm.predict(X_test)
print("[SVM]")
print(classification_report(y_test, y_pred_svm))

特徴

  • 高次元でも有効
  • 精度が高い傾向がある
  • ハイパーパラメータ調整がやや難しい
  • ブラックボックス的で解釈しにくい

モデル②:決定木

from sklearn.tree import DecisionTreeClassifier

model_tree = DecisionTreeClassifier(max_depth=4, random_state=42)
model_tree.fit(X_train, y_train)
y_pred_tree = model_tree.predict(X_test)
print("[Decision Tree]")
print(classification_report(y_test, y_pred_tree))

特徴

  • 可視化と解釈性に優れる
  • 単純で直感的なモデル
  • 過学習しやすいが調整しやすい(max_depth など)

モデル③:ランダムフォレスト

from sklearn.ensemble import RandomForestClassifier

model_rf = RandomForestClassifier(n_estimators=100, random_state=42)
model_rf.fit(X_train, y_train)
y_pred_rf = model_rf.predict(X_test)
print("[Random Forest]")
print(classification_report(y_test, y_pred_rf))

特徴

  • 多数の決定木を使ったアンサンブル学習
  • 精度が高く安定している
  • 単一の木より過学習しにくい
  • 解釈は難しくなる(ブラックボックス化)

可視化:決定木の構造を確認

from sklearn.tree import plot_tree
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
plot_tree(model_tree, feature_names=load_wine().feature_names, class_names=load_wine().target_names, filled=True)
plt.title("決定木の可視化")
plt.show()

精度・解釈性のまとめ

モデル精度解釈性コメント
SVM高精度だがブラックボックス性あり
決定木可視化しやすく説明向き
ランダムフォレスト高精度かつ頑健、解釈は難しい

おわりに

機械学習では「精度」だけでなく、「何のために使うのか・誰に説明するのか」によってモデル選択が変わります。

  • 実務での説得力が必要 → 決定木
  • 精度重視のプロトタイプ → ランダムフォレスト or SVM
  • 処理の速度や可視化重視 → 単純な決定木

それぞれの特性を活かして、目的に合ったモデル選択を行いましょう。


練習問題

Q1. ランダムフォレストの強みは?

  • A. 非線形データが扱えない
  • B. 過学習が極端に起きやすい
  • C. 精度が安定しやすい

Q2. SVMのデメリットとして正しいのは?

  • A. 精度が低い
  • B. 解釈しにくい
  • C. 特徴量が1つしか使えない

Q3. 決定木が優れている点は?

  • A. モデルが非常に小さいため予測できない
  • B. 可視化と説明のしやすさ
  • C. 他のモデルに比べて常に高精度

🔗 機械学習シリーズ 関連リンク

▶ 入門〜分類編

▶ 回帰編

▶ 応用編

コメント

タイトルとURLをコピーしました