0

을 scikit 배우기 : 이제다중 레벨 모델 점수 I의 모습을 조금 단순화 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_score1f1_score2보다 항상 더 낫다 . 다시 말해, 멀티 레이블 레이블은 동일한 멀티 레이블 레이블에서 생성 된 이진 레이블보다 점수가 좋습니다. 이유가 있고 이것이 예상 되는가?

약 70 개의 교육 및 테스트 파일과 36 개의 클래스가 있습니다 (위의 예와 같이 3 개가 아닙니다).

답변

3

레이블을 2 진수로 만들면 임의의 포리스트가 여러 레이블을 동시에 예측할 수있는 것처럼 보입니다. 초기 사례에서는 가장 가능성이 높은 레이블 만 예측합니다. F1 점수는 그것에 민감합니다.

UPD : 틀렸어. 나는 그것을 테스트했는데 항상 하나의 레이블 만 반환하지만 점수는 여전히 나쁘다.

UPD2 : 나는 생각만큼 잘못 아니야. sum (sum (prediction2))은 len (예측)보다 작게 나타나므로 일부 행에는 0이 있어야합니다.

+0

단일 출력 모델을 사용하는 경우 레이블을 이진화하지 않는 것이 가장 좋습니다. 이렇게하면 예측 정확도가 떨어질 수 있습니다. – gozzilli