7

「0」クラスへの大きな偏り(約30000対1500)を持つバイナリクラスデータセット(0 / 1)があります。各インスタンスには 7 つの特徴があり、欠損値はありません。

J48 またはその他のツリー分類子を使用すると、ほとんどすべての「1」インスタンスが「0」として誤分類されます。

分類子を「プルーニングなし」に設定し、葉ごとのインスタンスの最小数を 1 に設定し、信頼係数を 1 に設定し、インスタンス ID 番号を持つダミー属性を追加しましたが、これらはすべて役に立ちませんでした。

自分のデータに過適合するモデルを作成することはできません!

Weka が提供する他のほとんどすべての分類器も試しましたが、同様の結果が得られました。

IB1 を使用すると 100% の精度が得られるため (トレインセットのトレインセット)、同じ特徴値と異なるクラスを持つ複数のインスタンスの問題はありません。

完全に剪定されていないツリーを作成するにはどうすればよいですか? または、Weka に私のデータをオーバーフィットさせますか?

ありがとう。

更新:わかりました、これはばかげています。私は約 3100 の否定的な例と 1200 の肯定的な例だけを使用しました。

J48 unpruned tree
------------------

F <= 0.90747: 1 (201.0/54.0)
F > 0.90747: 0 (4153.0/1062.0)

言うまでもなく、IB1 でも 100% の精度が得られます。

更新 2:どうして見逃したのかわからない - プルーニングされていない SimpleCart は動作し、100% の精度でトレーニングを実行できます。プルーニングされた SimpleCart は、J48 ほどバイアスがかかっておらず、適切な偽陽性率と偽陰性率を示しています。

4

2 に答える 2

5

Weka には、関心のある 2 つのメタ分類子が含まれています。

これらを使用すると、任意のアルゴリズムをコスト重視 (SVM に限定されない) にしたり、コスト マトリックス (さまざまなエラーのペナルティ) を指定したりできます。1インスタンスを として誤って分類した場合よりも、インスタンスを として0誤って分類0した場合のペナルティが高くなります1

その結果、アルゴリズムは次のことを試みます。

予想される誤分類コストを最小化する (最も可能性の高いクラスではなく)

于 2010-07-15T19:57:05.490 に答える
2

手っ取り早い解決策は、再サンプリングすることです。1500 を除くすべてのポジティブ サンプルを破棄し、バランスの取れたデータ セットでトレーニングします。これを行うためのリサンプル コンポーネントが Weka にあると確信しています。

もう 1 つの解決策は、クラスごとに可変コストの分類子を使用することです。libSVM でこれができると確信しており、Weka が libSVM をラップできることも知っています。しかし、私はしばらく Weka を使用していないので、ここではあまり実用的な助けにはなりません.

于 2010-07-11T16:53:35.640 に答える