2011-07-26 2 views
1

私は20のクラスを持つデータセットを持っており、かなり不均一な分布をしています。 Rにデータセットのバランスをとる機能がありますか?Rのデータセット内のインスタンスをオーバーサンプルする方法

分類のためにWekaで平衡データを使用したいと考えています。私のクラスの分布は歪んでいるので、私は、多数のクラスが1つもない場合、より良い結果を得ることを望んでいます。

私はSMOTEフィルターとリサンプルフィルターを使用しようとしましたが、私がしたいことはしません。 インスタンスを削除する必要はありません。繰り返しは問題ありません。

+0

誰がこれを落札したか分かりませんが、あなたの質問に答えるためにさらに多くの情報が必要だと思います。データのためにstr()またはdput()を試して、正確に何をする必要があるのか​​を人々に知らせてください。 – nzcoops

+0

また、あなたの質問はhttp://stats.stackexchange.comにもっと適しているかもしれません –

答えて

1

私はあなたの用語に誤解があると思います。あなたの質問のタイトルはサンプリングを指しますが、質問テキストには重み付けが含まれます。明確にするために

をサンプリングを使用すると、どちらかは元のセットに比べて、より少ない同じ、またはそれ以上のインスタンスを持っています。サンプルのユニークなメンバーシップは、元のセットの厳密なサブセットであっても、元のセットと同じであってもよい(置き換え、すなわち重複を伴う)。

重み付けを行うことにより、一様な重み付けに対して相対的なバランス(バランス)を取る、または課すための追加の目的(サンプリング、機械学習など)に使用できる重みを調整するだけです。

私はあなたが重み付けを指していると信じていますが、同じ答えが両方の場合に有効です。観察の合計数がNであり、各クラスの頻度が20-長ベクトルfreqの要素(例えば、クラス1の項目の数がfreq[1]*Nである場合)の場合、重みベクトルを1/freqと単純に使用して重みを正規化します。あなたは何らかの定数でスケールすることができます。 Nでも問題ありません。周波数が0またはそれに非常に近い場合は、スムージングされたカウントのベクトル(Good-Turingスムージングなど)を使用してこの問題に対処できます。

結果として、各セットは総重量の等しい割合を持ちます。

+0

これは批判ではありません。なぜなら、OPはあまりにも漠然だからですが、私はそれをいくつかの統計的学習設定(例えば、 )同様の効果*は時々サンプリングによって達成される。たとえば、各クラスのバランスの取れたサブサンプルを取って(または置き換えて)、フォレスト内の各ツリーを構築します。 – joran

+0

これは正しいです。統計的な学習方法はすべてかなり拡張されています(結局のところ、トレーニングセットはサンプルです)。 OPが置換えでサンプリングすることが許可されていても、インスタンスを削除する必要がない場合は、より簡単です。サンプル(モデリング用)またはオーバーサンプルを超過する必要があります。いずれのシナリオにおいても、重み付けスキームが必要と思われる。 – Iterator

関連する問題