モデリングを行わずにアンダーサンプリング サンプリング手法のみを取得するには、どうすればデータを入力できますか。 オーバーサンプリングと重み付けについても同じことを行う必要があります。 これら 3 つのサンプリング手法 (もちろん一度に 1 つずつ) を使用して xgboost を実行しようとしています。 したがって、アンダーサンプリングを示す 1 つのデータセット、オーバーサンプリング用の別のデータセット、重み付け用の 3 番目のデータセットが必要です。 ありがとう。
こんにちは@NishaKumar 、
これを行うにはおそらくいくつかの方法があり、どの方法がより良いかは最終目標によって異なる場合があります。
1 つのオプションは、1 つの変数に高度にオフセットする検証列を作成し、たとえば 10% のトレーニングと 90% の検証を作成し、トレーニング データのサブセットを作成して、それに基づいて近似を行うことです。 近似式をサブセット テーブルに保存し、元のデータ テーブルに戻して、トレーニングされていないデータに対して近似がどの程度うまく機能するかを確認します。 次に、検証データを「トレーニング」データとして扱うことでその逆を実行し、上記の手順を繰り返して、それがトレーニング (「検証」) データセットにどの程度適合するかを確認できます。 モデル化している出力に基づいて検証列を階層化したい場合は、このオプションを使用できますが、気にしない場合は、他のオプションを試してください。
もう 1 つのオプションは、[行] > [行選択] > [ランダムに選択] を使用し、10% または 90%、または 1% と 99% のいずれかを使用して、それぞれのサブセットを作成し、適合を実行して数式を元に戻すことです。元のテーブルの未使用データとの結果を比較してください。
データの重み付けについては、使用するデータセットとデータの処理方法に大きく依存します。 外れ値のように見えるものがあるが、データセットから削除する理由がない場合は、他のデータよりも重み付けを低くして、適合度に偏りを生じさせないようにすることができますが、確認するにはそれらを個別に調べる必要があります。このような場合にどう対処するか。
Boston Housing.jmp サンプル データを使用して 2 番目のアプローチを試したところ、非常にうまくいきました。 オーバーサンプリング データセットの「検証」データでより大きな R^2 を与えるほどデータをオーバーフィットさせることはできませんでしたが、検証列を使用してそれを使用してデータをフィッティングするよりも大きくなりました。
ちなみに、私は XGBoost プラットフォームを使用してデータを近似し、(response = mvalue; 他のすべての列は X, Factors)、Autotune ボックスをオンにしたデフォルト設定を使用しました。
アンダーサンプリングの結果 (1= トレーニング、0 = 検証):


オーバーサンプリング (1=トレーニング、0=検証):


mvalue で階層化された .75/.25 トレーニング/検証列を使用した結果は次のとおりです。


最後の検証データの R^2 はオーバーサンプリング モデルほど高くありませんが、モデルの検証ではトレーニングに大量のサンプルを取得する場合よりも多くのサンプルが使用されるため、精度が高くなる可能性があります。
とにかく、これがあなたの特定の目標をさらに前進させる方法についてのアイデアを提供することを願っています。
幸運を!、
DS
どうもありがとうございます。これらのテクニックを 1 つずつ試して、フィードバックや質問をお届けします。