モデル評価
メニューを表示するにはスワイプしてください
データの分割
ニューラルネットワークの学習後、そのモデルが未知のデータに対してどれだけ良く機能するかを評価することが重要です。この評価により、モデルが有意義なパターンを学習したのか、単に訓練データを記憶しただけなのかを判断できます。そのために、データセットは2つの部分に分割されます。
- 訓練データセット — ニューラルネットワークの重みとバイアスをバックプロパゲーションで調整しながら学習に使用;
- テストデータセット — 学習後に、モデルが新しい未知のデータにどれだけ一般化できるかを評価するために使用。
一般的な分割比率は80%を訓練用、20%をテスト用としますが、この比率はデータセットの規模や複雑さによって異なる場合があります。
データの分割は通常、train_test_split()モジュールのsklearn.model_selection関数を使って行います。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)
test_sizeパラメータはテスト用に確保するデータの割合を指定します。例えば、test_size=0.1と設定すると、**10%**のデータがテスト用、**90%**が訓練用として使われます。
モデルが訓練データセットでは良い成績を示すがテストデータセットでは成績が悪い場合、過学習している可能性があります。これは、訓練データに特化しすぎて新しい例に一般化できていない状態です。目標は両方のデータセットで高いパフォーマンスを達成し、モデルが十分に一般化できていることを確認することです。
データを分割しモデルを学習させた後は、適切な評価指標を用いてパフォーマンスを測定します。評価指標は分類タスクの種類によって異なります。
分類評価指標
分類問題では、モデルの予測を評価するためにいくつかの主要な指標が使用されます。
- 正解率(Accuracy)
- 適合率(Precision)
- 再現率(Recall)
- F1スコア(F1-score)
パーセプトロンは2値分類を行うため、混同行列を作成することでこれらの指標をより理解しやすくなります。
混同行列は、モデルの分類性能を予測ラベルと実際のラベルを比較して要約する表です。各クラス(1と0)ごとの正解・不正解の予測数を把握できます。
正解率(Accuracy) は、全体の中で正しく分類されたサンプルの割合。 モデルが 100枚中90枚 の画像を正しく分類した場合、正解率は 90%。
accuracy=allcorrect=TP+TN+FP+FNTP+TN正解率は有用だが、必ずしも全体像を示すとは限らない—特に不均衡なデータセットでは注意が必要。例えば、95%のサンプルが1つのクラスに属するデータセットでは、モデルが常に多数派クラスを予測するだけで95%の正解率を達成でき、実際には有用な学習が行われていない場合もある。このような場合、適合率(precision)、再現率(recall)、またはF1スコアがより有用となる。
適合率(Precision) は、予測した陽性のうち正しく予測できた割合。この指標は、スパム検出や不正検出など、偽陽性がコストとなる場面で特に重要。
precision=predicted positivecorrect positive=TP+FPTP再現率(感度、Recall) は、実際の陽性のうちモデルが正しく識別できた割合。偽陰性を最小限に抑える必要がある医療診断などの場面で高い再現率が重要。
recall=all positivecorrect positive=TP+FNTPF1スコアは、適合率と再現率の調和平均であり、偽陽性と偽陰性の両方が重要な場合にバランスの取れた指標を提供します。これは、データセットが不均衡であり、一方のクラスが他方よりも著しく多く出現する場合に有用です。
F1=precision+recall2×precision×recall1. データセットをトレーニングセットとテストセットに分割する主な目的は何ですか?
2. なぜ不均衡なデータセットでは、精度よりもF1スコアが好まれる場合があるのでしょうか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください