Bagaimana cara mengurangi jumlah positif palsu?

12

Saya mencoba untuk menyelesaikan tugas yang disebut deteksi pejalan kaki dan saya melatih clasifer biner pada dua kategori positif - orang, negatif - latar belakang.

Saya punya dataset:

  • jumlah positif = 3752
  • jumlah negatif = 3800

Saya menggunakan train \ test split 80 \ 20% dan bentuk RandomForestClassifier scikit-pelajari dengan parameter:

RandomForestClassifier(n_estimators=100, max_depth=50, n_jobs= -1)

Saya mendapat skor: 95.896757%

tes pada data pelatihan (bekerja dengan sempurna):

true positive:  3005
false positive:  0
false negative:  0
true negative:  3036

tes pada data pengujian:

true positive:  742
false positive:  57
false negative:  5
true negative:  707

Pertanyaan saya adalah bagaimana cara mengurangi jumlah positif palsu (latar belakang diklasifikasikan sebagai orang)? Juga mengapa saya memiliki lebih banyak kesalahan positif palsu daripada negatif palsu?

Saya mencoba menggunakan class_weightparameter, tetapi pada beberapa titik kinerja menurun (seperti yang Anda lihat di class_weight = {0: 1,1: 4}).

class_weight= {0:1,1:1}
true positive:  3005
false positive:  0
false negative:  0
true negative:  3036

true positive:  742
false positive:  55
false negative:  5
true negative:  709
score: 96.029120 %

class_weight= {0:1,1:2}
true positive:  3005
false positive:  0
false negative:  0
true negative:  3036

true positive:  741
false positive:  45
false negative:  6
true negative:  719
score: 96.624752 %

class_weight= {0:1,1:3}
true positive:  3005
false positive:  0
false negative:  0
true negative:  3036

true positive:  738
false positive:  44
false negative:  9
true negative:  720
score: 96.492389 %

class_weight= {0:1,1:4}
true positive:  3005
false positive:  13
false negative:  0
true negative:  3023

true positive:  735
false positive:  46
false negative:  12
true negative:  718
score: 96.161482 %

class_weight= {0:1,1:5}
true positive:  3005
false positive:  31
false negative:  0
true negative:  3005

true positive:  737
false positive:  48
false negative:  10
true negative:  716
score: 96.161482 %

class_weight= {0:1,1:6}
true positive:  3005
false positive:  56
false negative:  0
true negative:  2980

true positive:  736
false positive:  51
false negative:  11
true negative:  713
score: 95.896757 %

class_weight= {0:1,1:7}
true positive:  3005
false positive:  87
false negative:  0
true negative:  2949

true positive:  734
false positive:  59
false negative:  13
true negative:  705
score: 95.234944 %

Juga patut dicatat bahwa RandomForest tampaknya tidak mengalami dataset yang tidak seimbang:

pos = 3752 neg = 10100

class_weight = {0: 1,1: 1} benar positif: 3007 positif palsu: 0 negatif negatif: 0 benar negatif: 8074

true positive:  729
false positive:  71
false negative:  16
true negative:  1955
score: 96.860339 %

class_weight= {0:1,1:2}
true positive:  3007
false positive:  0
false negative:  0
true negative:  8074

true positive:  728
false positive:  59
false negative:  17
true negative:  1967
score: 97.257308 %

class_weight= {0:1,1:3}
true positive:  3007
false positive:  0
false negative:  0
true negative:  8074

true positive:  727
false positive:  58
false negative:  18
true negative:  1968
score: 97.257308 %
mrgloom
sumber

Jawaban:

7

Saya bukan ahli dalam hal hutan acak, saya membacanya baru-baru ini. Tapi dari tampilannya bagiku kau terlalu cocok dengan hutan acak. Apa yang akan saya lakukan adalah menggunakan teknik di mana Anda menggunakan pengamatan Out-Of-Bag untuk membuat prediksi. Anda dapat menemukan prosedur pada slide ini: https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/trees.pdf

Satu hal lain yang saya sarankan juga disebutkan dalam slide ini yang disebut gradient boosting machine (GBM) yang juga disebutkan di bagian ini. Saya merasa bahwa GBM lebih intuitif daripada hutan acak.

Sunting1 : Saya memeriksanya lagi dan sepertinya bootstrap adalah langkah pertama dari GBM. Juga, saya tidak punya masalah dengan bootstrap, itu bagus dan bagus. Satu-satunya masalah dengan itu adalah bahwa itu dapat digunakan dengan sangat buruk.

Nitin Aggarwal
sumber