Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ モデル評価 | ニューラルネットワークをゼロから構築
Pythonによるニューラルネットワーク入門

モデル評価

メニューを表示するにはスワイプしてください

データの分割

ニューラルネットワークの学習後、そのモデルが未知のデータに対してどれだけ良く機能するかを評価することが重要です。この評価により、モデルが有意義なパターンを学習したのか、単に訓練データを記憶しただけなのかを判断できます。そのために、データセットは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値分類を行うため、混同行列を作成することでこれらの指標をより理解しやすくなります。

Note
定義

混同行列は、モデルの分類性能を予測ラベル実際のラベルを比較して要約する表です。各クラス(10)について、正しい予測と誤った予測の数を把握できます。

混同行列

正解率(Accuracy) は、全体の中で正しく分類されたサンプルの割合。 モデルが 100枚中90枚 の画像を正しく分類した場合、正解率は 90% となる。

accuracy=correctall=TP+TNTP+TN+FP+FN\text{accuracy} = \frac {\text{correct}} {\text{all}} = \frac {TP + TN} {TP + TN + FP + FN}

正解率は有用だが、必ずしも全体像を示すとは限らない。特にデータが不均衡な場合は注意が必要。 例えば、95%のサンプルが1つのクラスに属する データセットでは、常に多数派クラスを予測するだけで正解率95%を達成でき、実際には有用な学習が行われていない可能性がある。 このような場合、適合率(precision)、再現率(recall)、またはF1スコアの方が有用となる。

適合率(Precision) は、予測した陽性 のうち、実際に正しかった割合。 この指標は、スパム検出や不正検出など、偽陽性がコストとなる場面で特に重要。

precision=correct positivepredicted positive=TPTP+FP\text{precision} = \frac {\text{correct positive}} {\text{predicted positive}} = \frac {TP} {TP + FP}

リコール(感度)は、実際の陽性ケースのうち、モデルが正しく識別した割合を測定する指標。偽陰性を最小限に抑える必要がある医療診断などの場面で高いリコールが重要。

recall=correct positiveall positive=TPTP+FN\text{recall} = \frac {\text{correct positive}} {\text{all positive}} = \frac {TP} {TP + FN}

F1スコアは、適合率とリコールの調和平均であり、偽陽性と偽陰性の両方が重要な場合にバランスの取れた評価を提供。データセットにクラスの偏りがある場合(片方のクラスが大幅に多い場合)に有用。

F1=2×precision×recallprecision+recall\text{F1} = \frac {2 \times \text{precision} \times \text{recall}} {\text{precision} + \text{recall}}

1. データセットをトレーニングセットとテストセットに分割する主な目的は何ですか?

2. なぜ不均衡なデータセットでは、F1スコアが精度よりも好まれる場合があるのか?

question mark

データセットをトレーニングセットとテストセットに分割する主な目的は何ですか?

正しい答えを選んでください

question mark

なぜ不均衡なデータセットでは、F1スコアが精度よりも好まれる場合があるのか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  11

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 2.  11
some-alt