Tôi đang cố gắng giải quyết nhiệm vụ được gọi là phát hiện người đi bộ và tôi huấn luyện clasifer nhị phân trên hai loại tích cực - con người, tiêu cực - nền tảng.
Tôi có dữ liệu:
- số dương = 3752
- số âm = 3800
Tôi sử dụng train \ test split 80 \ 20% và RandomForestClassifier dưới dạng scikit-learn với các tham số:
RandomForestClassifier(n_estimators=100, max_depth=50, n_jobs= -1)
Tôi nhận được điểm: 95.896757%
kiểm tra dữ liệu đào tạo (hoạt động hoàn hảo):
true positive: 3005
false positive: 0
false negative: 0
true negative: 3036
kiểm tra dữ liệu thử nghiệm:
true positive: 742
false positive: 57
false negative: 5
true negative: 707
Câu hỏi của tôi là làm thế nào để giảm số lượng dương tính giả (nền được phân loại là người)? Ngoài ra tại sao tôi có nhiều lỗi dương tính giả hơn âm tính giả?
Tôi đã cố gắng sử dụng class_weight
tham số, nhưng tại một số điểm suy giảm hiệu suất (như bạn có thể thấy tại 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 %
Ngoài ra, điều đáng chú ý là RandomForest dường như không phải chịu đựng dữ liệu không cân bằng:
pos = 3752 neg = 10100
class_ weight = {0: 1,1: 1} true positive: 3007 false positive: 0 false neg: 0 true neg: 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 %