誤検知の数を減らす方法は?


12

私は歩行者検出と呼ばれるタスクを解決しようとしています、そして私は2つのカテゴリーのポジティブ-人々、ネガティブ-バックグラウンドでバイナリクラスシファーをトレーニングします。

データセットがあります:

  • 陽性の数= 3752
  • 負の数= 3800

私はtrain \ test split 80 \ 20%とRandomForestClassifier形式のscikit-learn をパラメーターで使用します:

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

スコアを取得:95.896757%

トレーニングデータのテスト(完全に機能):

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

テストデータのテスト:

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

私の質問は、偽陽性の数を減らす方法です(背景は人として分類されます)?また、なぜ偽陰性よりも偽陽性のエラーが多いのですか?

class_weightパラメータを使用しようとしましたが、ある時点でパフォーマンスが低下します(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 %

また、RandomForestがアンバランスなデータセットに悩まされていないように見えることも注目に値します。

pos = 3752 neg = 10100

class_weight = {0:1,1:1}真陽性:3007偽陽性:0偽陰性:0真陰性: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 %

回答:


7

ランダムフォレストに関しては、専門家ではありません。最近読んだものです。しかし、それが私にどのように見えるかから、あなたはランダムな森を作りすぎています。私がやろうとしていることは、バッグ外の観測を使用して予測を行う手法を使用することです。これらのスライドに手順が記載されています。https//lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/trees.pdf

私が提案するもう1つのことは、このセクションでも説明されている勾配ブースティングマシン(GBM)と呼ばれるこれらのスライドでも説明されています。GBMはランダムフォレストよりも直感的だと思います。

Edit1:もう一度確認しましたが、GBMの最初のステップはブートストラップです。また、ブートストラップ自体には問題はありません。それは素晴らしいことです。それの唯一の問題は、それが非常にひどく使われることができるということです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.