Melatih Akurasi vs Akurasi Tes vs Matriks kebingungan

11

Setelah saya mengembangkan model prediktif saya menggunakan Random Forest saya mendapatkan metrik berikut:

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

Ini adalah hasil dari kode ini:

  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)

Namun saya agak bingung untuk menafsirkan dan menjelaskan nilai-nilai ini.

Apa sebenarnya yang dikatakan 3 ukuran ini tentang model saya?

Terima kasih!

Pedro Alves
sumber
Hanya untuk menjadi jelas, di sini matriks kebingungan Anda (dan secara umum) ketika dilaporkan didasarkan pada data uji. Karena Anda bisa memilikinya bahkan untuk data pelatihan tempat Anda membangun mode.
TwinPenguins
Saya ragu untuk menghitung ukuran ini. Mengapa untuk Accuracy Train, cantumkan: (training_target, terlatih_model.predict (training_features) dan bukan (training_target, terlatih_model.predict (test_target)?
Pedro Alves
Akurasi hanya untuk Kelas 1 adalah 77/94?
Pravin

Jawaban:

19

Definisi

  • Akurasi: Jumlah klasifikasi yang benar / jumlah total klasifikasi.
  • Keakuratan kereta: Keakuratan model pada contoh yang dibuatnya.
  • Akurasi pengujian adalah akurasi model pada contoh yang belum dilihatnya.
  • Matriks kebingungan: Tabulasi kelas prediksi (biasanya vertikal) terhadap kelas aktual (dengan demikian secara horizontal).

Overfitting

Apa yang saya akan membuat hasil Anda adalah bahwa model Anda overfitting . Anda bisa mengatakan itu dari perbedaan besar dalam akurasi antara tes dan akurasi kereta. Overfitting berarti mempelajari aturan khusus untuk set kereta, aturan itu tidak menyamaratakan dengan baik di luar set kereta.

Matriks kebingungan Anda memberi tahu kami seberapa banyak perlengkapannya berlebih, karena kelas terbesar Anda membentuk lebih dari 90% populasi. Dengan asumsi bahwa Anda menguji dan melatih set memiliki distribusi yang sama, setiap model yang berguna harus mencetak akurasi lebih dari 90%: Model 0R sederhana akan. Nilai model Anda hanya di bawah 80% pada set tes.

Secara mendalam lihatlah matriks kebingungan

Jika Anda akan melihat matriks kebingungan relatif (dalam persentase) itu akan terlihat seperti ini:

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

Anda dapat menyimpulkan dari total di baris pertama bahwa model Anda memprediksi Kelas 1 81% dari waktu, sedangkan kemunculan aktual Kelas 1 adalah 94%. Karenanya model Anda meremehkan kelas ini. Bisa jadi itu yang dipelajari aturan (kompleks) spesifik pada set kereta, yang bekerja melawan Anda dalam set tes.

Bisa juga patut dicatat bahwa meskipun negatif palsu dari Kelas 1 (17% -poin, baris 2, kolom 1)) yang paling merugikan kinerja keseluruhan Anda, negatif palsu dari Kelas 2 (4% -poin, baris 1 kolom 2) sebenarnya lebih umum berkenaan dengan total populasi dari masing-masing kelas (94%, 6%). Ini berarti bahwa model Anda buruk dalam memprediksi Kelas 1 , tetapi bahkan lebih buruk dalam memprediksi Kelas 2 . Akurasi hanya untuk Kelas 1 adalah 77/99 sedangkan akurasi untuk Kelas 2 adalah 2/6.

S van Balen
sumber
1
Memilih jawaban yang bagus. Mungkin untuk tujuan pendidikan yang akan lebih baik jika Anda bisa menguraikan "berapa banyak overfitting" berdasarkan elemen matriks kebingungan yang sebenarnya. Saya juga ingin tahu lebih banyak.
TwinPenguins
1
Saya menambahkan tampilan yang lebih mendalam, beri tahu saya jika ini yang Anda cari.
S van Balen
Jadi, misalnya ketika saya mendapatkan matirx kebingungan ini: Train Accuracy :: 0.8147735305312381 Test Accuracy :: 0.8086616099828725 Matriks kebingungan [[9870 16] [2330 45]] Dikatakan bahwa model saya hanya memiliki presisi 73%
Pedro Alves
Matriks kebingungan itu akan sesuai dengan akurasi pengujian Anda. (9870 + 45) / (9870 + 2330 + 16 + 45) = 0,80866161
S van Balen