0

У меня есть scikit-узнать модель, которая немного упрощена будет выглядеть следующим образом:MultiLabel модель оценки лучше, чем та же модель с бинарными лейбл в scikit учиться

clf1 = RandomForestClassifier() 
clf1.fit(data_training, non_binary_labels_training) 
prediction1 = clf1.predict(data_testing) 


clf2 = RandomForestClassifier() 
binary_labels = label_binarize(non_binary_labels_training, ["a", "b", "c"]) 
clf2.fit(data_training, binary_labels) 
prediction2 = clf2.predict(data_testing) 

f1_score1(non_binary_labels_testing, prediction1)) 
f1_score2(binary_labels_testing, prediction2)) 

Теперь, f1_score1 всегда лучше, чем f1_score2 , Другими словами, метки многоклассов оцениваются лучше, чем бинарные метки (созданные из тех же многоклассовых меток). Есть ли причина, и это ожидалось?

У меня около 70 учебных и тестовых файлов и 36 классов (не три, как в приведенном выше примере).

ответ

3

Кажется, что при бинаризации меток случайный лес может прогнозировать сразу несколько меток, предсказывая только наиболее вероятную метку в начальном случае. Оценка F1 чувствительна к этому.

UPD: Я ошибаюсь. Я тестировал его, и в моем случае он всегда возвращает только один ярлык, но оценка по-прежнему плохая.

UPD2: Я не так ошибаюсь, как я думал. sum (sum (prediction2)) оказывается меньше len (прогноз), поэтому в некоторых строках должно быть 0.

+0

Чтобы прояснить это, если у вас есть модель с одним выходом, лучше не бинарировать метки, так как это может снизить точность предсказания. – gozzilli

Смежные вопросы