複数モデルの評価

scikit-learn による教師あり学習

George Boorman

Core Curriculum Manager, DataCamp

問題に応じたモデルの使い分け

複数の指針

  • データセットのサイズ
    • 機能が少ない = モデルがシンプルになり、学習時間が短くなる
    • 良好に機能するために大量のデータを必要とするモデルもある
  • 解釈可能性
    • 説明しやすいモデル:ステークホルダーにとって重要な場合がある
    • 線形回帰は係数が理解可能(解釈性が高い)
  • 柔軟性
    • データに対する仮定を減らすと精度が向上する場合がある
    • KNN:線形関係を仮定しない柔軟なモデル
scikit-learn による教師あり学習

すべては指標にある

  • 回帰モデルの性能:

    • RMSE
    • 決定係数
  • 分類モデルのパフォーマンス:

    • 正確性
    • 混同行列
    • 適合率、再現率、F1スコア
    • ROC AUC
  • 複数のモデルを学習し、すぐにパフォーマンスを評価する

scikit-learn による教師あり学習

スケーリングに関する注記

  • スケーリングの影響を受けるモデル:
    • KNN
    • 線形回帰(リッジ、ラッソを含む)
    • ロジスティック回帰
    • 人工ニューラルネットワーク
  • モデルを評価する前にデータをスケーリングするのが最適
scikit-learn による教師あり学習

分類モデルの評価

import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score, KFold, train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier

X = music.drop("genre", axis=1).values y = music["genre"].values X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
scikit-learn による教師あり学習

分類モデルの評価

models = {"Logistic Regression": LogisticRegression(), "KNN": KNeighborsClassifier(), 
         "Decision Tree": DecisionTreeClassifier()}
results = []

for model in models.values():
kf = KFold(n_splits=6, random_state=42, shuffle=True)
cv_results = cross_val_score(model, X_train_scaled, y_train, cv=kf)
results.append(cv_results)
plt.boxplot(results, labels=models.keys()) plt.show()
scikit-learn による教師あり学習

結果の可視化

各モデルの精度の箱ひげ図: ロジスティック回帰、KNN、決定木

scikit-learn による教師あり学習

テストセットの成績

for name, model in models.items():

model.fit(X_train_scaled, y_train)
test_score = model.score(X_test_scaled, y_test)
print("{} Test Set Accuracy: {}".format(name, test_score))
Logistic Regression Test Set Accuracy: 0.844
KNN Test Set Accuracy: 0.82
Decision Tree Test Set Accuracy: 0.832
scikit-learn による教師あり学習

練習しましょう!

scikit-learn による教師あり学習

Preparing Video For Download...