分類指標を深く学ぶ
混同行列、適合率、再現率、F1、ROC-AUC、PR 曲線から適切な指標の選び方を学びます。
「分類指標を深く学ぶ」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
Accuracy だけでは不十分
Accuracy は正しい予測の割合ですが、不均衡なデータでは誤解を招きます。多数派クラスだけを予測するモデルでも 99% のスコアを出せますが、少数派クラスに対しては役に立たない可能性があります。
混同行列
混同行列は、予測を真陽性、偽陽性、真陰性、偽陰性に分解します。これは他のすべての指標の基礎となります。
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
print(confusion_matrix(y_true, y_pred))
# rows = actual, columns = predicted適合率
適合率 = TP / (TP + FP)。陽性と予測したもののうち、実際に陽性なのはいくつですか。適合率が高いほど、誤警報が少ないことを意味します。偽陽性のコストが高い場合(例: スパムフィルター)に重要です。
from sklearn.metrics import precision_score
print(precision_score(y_true, y_pred))再現率
再現率 = TP / (TP + FN)。実際に陽性であるもののうち、いくつを検出できましたか。再現率が高いほど、見逃しが少ないことを意味します。偽陰性のコストが高い場合(例: 疾患スクリーニング)に重要です。
from sklearn.metrics import recall_score
print(recall_score(y_true, y_pred))F1 スコア
F1 スコアは適合率と再現率の調和平均です: 2 * P * R / (P + R)。両方の指標のバランスを取り、不均衡なデータで 1 つの数値にまとめたい場合に役立ちます。
from sklearn.metrics import f1_score, classification_report
print(f1_score(y_true, y_pred))
print(classification_report(y_true, y_pred))ROC 曲線と AUC
ROC 曲線は、しきい値ごとの真陽性率と偽陽性率をプロットします。roc_auc_score はそれを要約する指標で、1.0 は完全、0.5 はランダムな予測を表します。
from sklearn.metrics import roc_auc_score
# needs probability scores, not hard labels
proba = model.predict_proba(Xte)[:, 1]
print(roc_auc_score(yte, proba))適合率-再現率曲線
PR 曲線は、しきい値ごとの適合率と再現率をプロットします。陽性クラスに焦点を当てるため、クラスが大きく不均衡な場合は ROC より有用な情報が得られます。
from sklearn.metrics import precision_recall_curve
prec, rec, thresh = precision_recall_curve(yte, proba)
# plot rec (x) vs prec (y) to see the tradeoff平均適合率
average_precision_score は PR 曲線を 1 つの数値(PR 曲線下面積)に要約します。不均衡な二値分類で推奨される要約指標です。
from sklearn.metrics import average_precision_score
print(average_precision_score(yte, proba))ROC AUC と平均適合率
不均衡なデータでは真陰性が大半を占めるため、ROC AUC が楽観的に見えることがあります。平均適合率は真陰性を無視し、少数派の陽性クラスに対する性能をより正確に反映します。
適切な指標の選び方
不均衡な問題には F1 または 平均適合率を使います。バランスの取れたランキング品質には ROC AUC を使います。誤警報が問題になる場合は適合率、見逃しが問題になる場合は再現率を選びます。指標を選ぶ前に、優先事項を必ず明確にしてください。
しきい値のチューニング
ほとんどの指標は判定しきい値(デフォルトは 0.5)に依存します。しきい値を動かすことで、適合率と再現率のバランスを調整できます。PR 曲線を使って、ビジネス要件を満たすしきい値を選びましょう。
import numpy as np
# pick threshold for at least 0.9 precision
idx = np.argmax(prec >= 0.9)
chosen = thresh[idx]
preds = (proba >= chosen).astype(int)クイックチェック
評価指標に関する理解度を確認しましょう。
まとめ
まとめ: まず confusion_matrix から始めます。適合率は誤警報を、再現率は見逃しを重視し、F1 は両者のバランスを取ります。roc_auc_score はランキング品質を測定します。不均衡なデータには average_precision_score と PR 曲線のほうが適しています。優先事項に合わせてしきい値を調整しましょう。
よくある質問
「分類指標を深く学ぶ」レッスンは無料ですか?
はい。「分類指標を深く学ぶ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「分類指標を深く学ぶ」で何を学びますか?
混同行列、適合率、再現率、F1、ROC-AUC、PR 曲線から適切な指標の選び方を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「分類指標を深く学ぶ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。