決定木を使用してmatlabで分類する一連のデータがあります。セットを 2 つの部分に分けます。1 つのトレーニング データ (85%) と他のテスト データ (15%)。問題は、精度が約 90% であり、それを改善する方法がわからないことです。心当たりがありましたらよろしくお願いします。
5 に答える
多くの理由で決定木のパフォーマンスが低い可能性があります。私が考えることができる主な理由の 1 つは、分割を計算する際に、変数の相互依存性または他の変数に対するターゲット変数の依存性を考慮していないことです。パフォーマンスの改善に入る前に、オーバーフィッティングを引き起こさず、一般化できることに注意する必要があります。
パフォーマンスを改善するには、次のいくつかのことを実行できます。
変数の事前選択:多重共線性テスト、VIF 計算、変数の IV 計算などのさまざまなテストを実行して、いくつかの上位変数のみを選択できます。これにより、望ましくない変数が厳密に除外されるため、パフォーマンスが向上します。
アンサンブル学習複数のツリー (ランダム フォレスト) を使用して結果を予測します。ランダム フォレストは一般に、バイアスと分散の両方を削減できるため、単一の決定木よりも優れたパフォーマンスを発揮します。また、オーバーフィッティングも起こりにくいです。
K-Fold 交差検証:トレーニング データ自体の交差検証により、モデルのパフォーマンスが少し向上します。
ハイブリッド モデル: ハイブリッド モデルを使用します。つまり、決定木を使用した後にロジスティック回帰を使用してパフォーマンスを向上させます。
ここでより重要な問題は、特定のドメインの精度が高いことだと思います。スパムを分類している場合、90% は少し低いかもしれませんが、株価を予測している場合、90% は非常に高いです!
既知のドメイン セットでこれを行っており、以前の例よりも高い分類精度の例がある場合は、いくつかのことを試すことができます。
I don't think you should improve this, may be the data is overfitted by the classifier. Try to use another data sets, or cross-validation to see the more accurate result.
By the way, 90%, if not overfitted, is great result, may be you even don't need to improve it.
90% が良いか悪いかは、データのドメインによって異なります。
ただし、データ内のクラスが重複していて、実際には 90% 以上を実行できない可能性があります。
どのノードがエラーであるかを調べて、それらを変更することで分類を改善できるかどうかを確認できます。
ランダム フォレストを試すこともできます。