cikit-learnを使ったモデル評価の基礎を解説。ホールドアウト法、交差検証、回帰モデル(MSE・R²)や分類モデル(Accuracy・F1スコア)の評価指標を実装例付きで詳しく説明。機械学習モデルの精度を正しく測定しよう。
機械学習モデルを構築した後、モデルの性能評価を正しく行うことが重要です。
適切な評価を行わなければ、モデルが実際にどの程度の精度で予測できるのかを把握できません。
本記事では、scikit-learn を使ったモデルの評価方法と、代表的な精度指標について詳しく解説します。
機械学習の目的は、未知のデータに対して正確な予測を行うことです。
しかし、学習データだけで評価すると 過学習(overfitting) が発生し、本番環境での性能が低下する可能性があります。
そのため、以下のような方法を用いてモデルを評価します。
次のセクションで、それぞれの評価方法について詳しく解説していきます。
最も基本的なモデル評価の方法は、データを学習用(train)とテスト用(test)に分割する方法です。
PYTHONfrom sklearn.model_selection import train_test_split import numpy as np # サンプルデータの作成 X = np.random.rand(100, 1) * 10 y = 2.5 * X + np.random.randn(100, 1) * 2 # データを80%:20%に分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) print(f"訓練データ: {X_train.shape}, テストデータ: {X_test.shape}")
出力結果:
訓練データ: (80, 1), テストデータ: (20, 1)
これにより、モデルの学習に 80%のデータを使い、20%のデータで評価を行うことができます。
ホールドアウト法では、分割したデータによって評価結果が変わることがあります。この問題を解決するために、交差検証(Cross-Validation) を用います。
K-Fold 交差検証は、データをK 個に分割し、それぞれを学習データとテストデータとして使いながら評価を行います。
PYTHONfrom sklearn.model_selection import cross_val_score from sklearn.linear_model import LinearRegression # 線形回帰モデルの作成 model = LinearRegression() # 交差検証(K=5) scores = cross_val_score(model, X, y, cv=5, scoring='r2') print(f"R²スコア(各分割): {scores}") print(f"平均R²スコア: {scores.mean():.2f}")
出力結果:
R²スコア(各分割): [0.84 0.79 0.82 0.85 0.80] 平均R²スコア: 0.82
K-Fold 交差検証を用いることで、データ分割の影響を減らし、モデルの汎化性能を適切に評価できます。
回帰モデルでは、予測値と実際の値の誤差を測る指標を使用します。
PYTHONfrom sklearn.metrics import mean_squared_error # 予測値の計算 y_pred = model.fit(X_train, y_train).predict(X_test) # MSEの計算 mse = mean_squared_error(y_test, y_pred) print(f"Mean Squared Error (MSE): {mse:.2f}")
出力結果:
Mean Squared Error (MSE): 3.25
MSE が小さいほど、モデルの誤差が少なく、精度が高いことを意味します。
PYTHONfrom sklearn.metrics import r2_score r2 = r2_score(y_test, y_pred) print(f"決定係数 (R²): {r2:.2f}")
出力結果:
決定係数 (R²): 0.85
R² スコアは、1 に近いほどモデルの精度が高いことを示します。
分類モデルでは、以下のような指標を用います。
PYTHONfrom sklearn.metrics import accuracy_score # 仮のラベルデータ y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 1] y_pred = [1, 0, 1, 0, 0, 1, 0, 0, 1, 1] # 精度の計算 accuracy = accuracy_score(y_true, y_pred) print(f"Accuracy: {accuracy:.2f}")
出力結果:
Accuracy: 0.90
PYTHONfrom sklearn.metrics import f1_score f1 = f1_score(y_true, y_pred) print(f"F1 Score: {f1:.2f}")
出力結果:
F1 Score: 0.89
F1 スコアは適合率と再現率のバランスを考慮した指標で、不均衡データに対しても有効です。
本記事では、モデル評価の方法と指標について解説しました。
適切な評価指標を選び、機械学習モデルの性能を正しく測ることが重要です。
回 | タイトル | リンク |
---|---|---|
第 1 回 | scikit-learn とは? | 詳 細 |
第 2 回 | データの前処理 | 詳 細 |
第 3 回 | モデルの評価と精度指標 | この記事 |
第 4 回 | 分類モデルの実装 | 詳 細 |
第 5 回 | 回帰モデルの実装 | 詳 細 |
第 6 回 | k-meansとPCAの実装 | 詳 細 |
第 7 回 | 階層的クラスタリング & DBSCAN | 詳 細 |
第 8 回 | クラスタリングの評価方法 | 詳 細 |
第 9 回 | クラスタリングを用いた事例 | 詳 細 |
第 10 回 | クラスタリングのビジネス活用 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。