モデルはどのくらい優秀か?

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

George Boorman

Core Curriculum Manager, DataCamp

分類指標

  • モデルの性能を精度で測定する:

    • 正しく分類されたサンプルの割合

    • 常に有用な指標とは限らない

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

クラス不均衡

  • 不正な銀行取引を予測するための分類

    • 99%の取引は正当で、不正は1%
  • 不正取引は無いと予測する分類器を構築すると

    • 99% 正確!

    • しかし、実際の不正取引の予測は困難

    • 本来の目的を果たせない

  • クラス不均衡: クラスの頻度が不均一である

  • 性能を評価する別の方法が必要

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

分類性能を評価するための混同行列

  • 混同行列

混同行列.png

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

分類性能の評価

予測されるラベル.png

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

分類性能の評価

実際のラベル.png

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

分類性能の評価

混同行列.png

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

分類性能の評価

真陽性.png

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

分類性能の評価

真陰性.png

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

分類性能の評価

偽陰性.png

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

分類性能の評価

偽陽性.png

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

分類性能の評価

混同行列.png

  • 精度:

ch3_1_v3.030.png

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

精度

精度.png

  • 精度

精度_式.png

  • 高精度 = 偽陽性率が低い
  • 高精度: 正当な取引のうち、不正と考えられる取引は多くない
scikit-learn による教師あり学習

再現率

再現.png

  • 再現率

再現_式.png

  • 再現率が高い = 偽陰性率が低い
  • 再現率が高い: 最も不正な取引を正確に予測
scikit-learn による教師あり学習

F1スコア

  • F1スコア: $2 * \frac{precision \ * \ recall}{precision \ + \ recall}$
scikit-learn による教師あり学習

scikit-learn の混同行列

from sklearn.metrics import classification_report, confusion_matrix

knn = KNeighborsClassifier(n_neighbors=7)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=42)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
scikit-learn による教師あり学習

scikit-learn の混同行列

print(confusion_matrix(y_test, y_pred))
[[1106   11]
 [ 183   34]]
scikit-learn による教師あり学習

scikit-learn の分類レポート

print(classification_report(y_test, y_pred))
              precision    recall  f1-score   support

           0       0.86      0.99      0.92      1117
           1       0.76      0.16      0.26       217

    accuracy                           0.85      1334
   macro avg       0.81      0.57      0.59      1334
weighted avg       0.84      0.85      0.81      1334
scikit-learn による教師あり学習

練習しましょう!

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

Preparing Video For Download...