2

fitensembleMatlab の方法を使用して構築したブースト ツリー モデルをテストしています。

X = rand(100, 10);
Y = X(:, end)>.5;
boosted_tree = fitensemble(X, Y, 'AdaBoostM1', 100,'Tree');
predicted_Y = predict(boosted_tree, X);

いくつかの単純な例で実行したかったので、簡単なケースを使用しました.1つの機能は、正の例では>.5、負の例では<.5です。警告が表示されます

Warning: AdaBoostM1 exits because classification error = 0

これにより、関連する機能を見つけ出し、すべてのトレーニング例が正しく分類された、素晴らしいと思いました。

でも精度を見ると

sum(predicted_Y==Y)/length(Y)

分類器は単純にポジティブ クラスをすべての例に割り当てたため、結果は 0.5 です。

明らかに 0 ではないのに、Matlab が分類誤差 = 0 と考えるのはなぜですか? この例は簡単に学べると思います。このエラーを防ぎ、この方法を使用して正しい結果を得る方法はありますか?

編集:上記のコードは警告を再現するはずです。

4

1 に答える 1