トレーニングの精度とテストの精度と混同行列


11

ランダムフォレストを使用して予測モデルを開発した後、次のメトリックを取得します。

        Train Accuracy ::  0.9764634601043997
        Test Accuracy  ::  0.7933284397683713
         Confusion matrix  [[28292  1474]
                            [ 6128   889]]

これは、このコードの結果です。

  training_features, test_features, training_target, test_target, = train_test_split(df.drop(['bad_loans'], axis=1),
                                                  df['target'],
                                                  test_size = .3,
                                                  random_state=12)
clf = RandomForestClassifier()
trained_model = clf.fit(training_features, training_target)
trained_model.fit(training_features, training_target)
predictions = trained_model.predict(test_features)      

Train Accuracy: accuracy_score(training_target, trained_model.predict(training_features))
Test Accuracy: accuracy_score(test_target, predictions)
Confusion Matrix: confusion_matrix(test_target, predictions)

ただし、この値を解釈して説明するのに少し混乱しています。

この3つの指標は、モデルについて正確に何を教えてくれますか?

ありがとう!


明確にするために、ここで報告された混乱マトリックス(および一般的に)はテストデータに基づいています。モードを構築したトレーニングデータでも使用できるからです。
TwinPenguins

この測定値を計算するのに疑問があります。なぜ列車の正確性のために:(training_target、trained_model.predict(training_features)を入れ、(training_target、trained_model.predict(test_target)を入れない)?
Pedro Alves

クラス1の精度は77/94ですか?
Pravin

回答:


19

定義

  • 精度:正しい分類の量/分類の合計量。
  • トレイン精度:構築された例のモデルの精度。
  • テストの精度は、見たことのない例のモデルの精度です。
  • 混同行列:実際のクラス(水平方向)に対する予測クラス(通常は垂直方向)の表。

過剰適合

私があなたの結果を補うのは、あなたのモデルが過剰適合しているということです。テストとトレーニングの精度の精度の大きな違いからそれを知ることができます。過剰適合とは、特定の列車セットのルールを学習したことを意味し、これらのルールは列車セットを超えて一般化されていません。

最大のクラスが人口の90%以上を占めているため、混同行列は、それがどれだけ過剰適合であるかを示しています。セットのテストとトレーニングを同様の分布で行うと仮定すると、有用なモデルは、90%を超える精度でスコア付けする必要があります。単純な0Rモデルの場合はそうです。テストセットのモデルのスコアは80%未満です。

詳細に混同行列を見てください

混同行列を(パーセンテージで)相対的に見ると、次のようになります。

               Actual    TOT
               1    2
Predicted 1 | 77% | 4% | 81%  
Predicted 2 | 17% | 2% | 19%
TOT         | 94% | 6% |

最初の行の合計から、モデルがクラス1を予測する時間は81%であるのに対し、クラス1の実際の発生は94%であると推測できます。したがって、モデルはこのクラスを過小評価しています。それは、テストセットであなたに反する、列車セットの特定の(複雑な)ルールを学習した場合かもしれません。

クラス1の偽陰性(17%ポイント、行2、列1))が全体的なパフォーマンスを最も損なっている場合でも、クラス2の偽陰性(4%ポイント、行1列)は注目に値します。 2)実際には、それぞれのクラスの総人口に関してより一般的です(94%、6%)。これは、モデルがクラス1の予測には不向きであることを意味しますが、クラス2の予測にはさらに劣ります。ちょうど精度クラス1は、精度ながら99分の77であり、クラス2は 2/6です。


1
良い答えに投票しました。たぶん、実際の混同行列要素に基づいて、「どれだけ過剰に適合している」かを詳しく説明できれば、教育目的のためになるでしょう。もっと知りたいです。
TwinPenguins

1
より詳細な外観を追加しました。これがあなたが探しているものかどうかをお知らせください。
S van Balen 2018年

したがって、たとえば、この混乱マトリックスを取得している場合:Train Accuracy :: 0.8147735305312381 Test Accuracy :: 0.8086616099828725 Confusion matrix [[9870 16] [2330 45]]これは、モデルの精度が73%しかないことを示しています
Pedro Alves

その混同行列は、テストの精度に対応します。(9870 + 45)/(9870 + 2330 + 16 + 45)= 0.80866161
S van Balen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.