1

R プラットフォームで randomForest パッケージを使用してバイナリ分類器を構築しています。約 30,000 行あり、14,000 行が陽性クラス、16,000 行が陰性クラスです。分類に重要であることが知られている 15 の変数があります。

情報が欠落している追加の変数 (約 5) があります。これらの変数の値は 1 または 0 です。1 は何かが存在することを意味しますが、0 は存在するか存在しないかがわからないことを意味します。これらの変数は、1 の場合は分類にとって最も重要な変数 (分類の信頼性が向上し、サンプルが陽性クラスにある可能性が高くなります) になり、0 の場合は役に立たないことが広く知られています。行の値は 1 です。したがって、1 つの変数が役立つケースは 5% にすぎません。5 つの変数は互いに独立しているため、私が持っているデータの 15 ~ 25% でこれらが非常に役立つと期待しています。

利用可能なデータを利用する方法はありますが、単一の列に存在する欠落/不明なデータを無視する方法はありますか? あなたのアイデアや提案をいただければ幸いです。実装は、ランダム フォレストと R プラットフォームに固有である必要はありません。これが他の機械学習技術または他のプラットフォームを使用して可能であれば、それらも大歓迎です。お時間をいただきありがとうございます。よろしく

4

2 に答える 2

1

少なくとも次のアプローチを見ることができます。個人的には、3番目のオプションを好みます。

1) 余分な列を破棄します

これらの 5 つの余分な列を破棄することを選択できます。明らかにこれは最適ではありませんが、このオプションのパフォーマンスを知り、以下と比較することをお勧めします。

2) データをそのまま利用する

この場合、これらの 5 つの余分な列はそのまま残されます。この5列それぞれの確かな有無(1)か不明な有無(0)が情報となります。これは、「あるものか無いものか分からなければ、無いものとして扱う」と言っているのと同じです。これは明らかですが、これを試したことがない場合は、オプション 1 と比較する必要があります。

3) 別の分類子を使用する

これらの 5 つの列のそれぞれの約 95% にゼロがあり、それらが互いにほぼ独立している場合、それはデータの 0.95^5 = 77.38% (約 23200 行) であり、これらの列のすべてにゼロがあります。これらの 23200 行で分類子をトレーニングし、すべてゼロである 5 つの列を削除できます (これらの列はすべての点で等しいため、いずれにしても予測ユーティリティはゼロです)。次に、残りのポイントに対して別の分類子をトレーニングできます。これにより、それらの列の少なくとも 1 つが 1 に設定されます。これらのポイントについては、データをそのまま残します。

次に、テスト ポイントで、これらの列がすべてゼロの場合は最初の分類子を使用し、それ以外の場合は 2 番目の分類子を使用します。

その他のヒント

15 個の「通常の」変数がバイナリでない場合は、異なる正規化で変数を処理できる分類器を使用してください。確信が持てない場合は、15 個の「通常の」変数を正規化して区間 [0,1] に配置してください。おそらく、これによって何も失われることはありません。

于 2012-12-20T10:42:21.317 に答える
0

Herr Kapput's にさらに提案を追加したいと思います。確率論的アプローチを使用する場合、「欠落」を、グローバルまたは各クラス内で観察する特定の確率を持つ値として扱うことができます (どちらが多くなるかはわかりません)。検出)。欠落している場合、発生する確率は p(欠落) であり、存在する場合は、確率 p(欠落していない) * p(val | 欠落していない) です。これにより、値が存在するときに値が任意の範囲を持つ場合を適切に処理できます。

于 2012-12-20T11:36:52.813 に答える