バイナリ応答変数を持つ人工分類データ セットを生成するシミュレーション モデルが必要です。次に、このデータセットを使用してさまざまな分類子のパフォーマンスを確認したいと考えています。データセットには、任意の数の特徴 (予測因子) が含まれる場合があります。
2 に答える
これは悪い考えであり、分類子の相対的なメリットについては何も教えてくれません。
最初にデータの生成方法を説明し、次に、それを実行しても何も学ばない理由を説明します。バイナリ機能のベクトルが必要です。これを行う方法はたくさんありますが、最も単純なものを取り上げましょう。独立ベルヌーイ変数のベクトル。好きなだけインスタンスを生成するレシピは次のとおりです。
- 各機能 i について、パラメータ theta_i を生成します。ここで、一様分布から 0 < theta_i < 1 です。
- 必要なインスタンス j ごとに、一様分布から再度サンプリングすることにより、i 番目の特徴 f_ji を生成します。サンプリングした数値が theta_i より小さい場合は f_ij = 1 に設定し、そうでない場合は 0 に設定します
これにより、好きなだけインスタンスを生成できます。ただし、問題は、データの真の分布を知っているため、ベイズ最適決定規則を取得できることです。これは、理論的に最適な分類器です。上記の生成方式では、単純ベイズ分類器はほぼ最適です (パラメーターを統合した実際のベイジアン バージョンを使用した場合、それが最適な分類器になります)。
これは、単純ベイズが最良の分類器であることを意味しますか? いいえ、もちろんそうではありません。原則として、実際には、データの真の分布がわからないデータセットの分類子のパフォーマンスに関心があります。実際、識別モデリングの全体的な概念は、真の分布が不明な場合、それを推定しようとすると、分類に必要な問題よりも難しい問題を解決しているという考えに基づいています。
要約すると、これがあなたのやりたいことかどうかについて非常に慎重に考えてください。データをシミュレートして、それを使用してどの分類子が「最適」であるかを決定することはできません。これは、シミュレーションに使用するレシピに依存するためです。特定の分類器のパフォーマンスが低い、または異常なデータを調べたい場合は、この種のデータをシミュレートして仮説を確認できますが、それはあなたがやろうとしていることではないと思います。
編集:
バイナリ機能ではなく、バイナリ結果が実際に必要であることは理解しています。私が言ったことのいくつかを無視することができます。
バイナリ応答は、ロジスティック回帰モデルから得られます。
log( p/(1-p) ) = wx
ここで、w は重みベクトル、x は特徴ベクトルです。観測された x が与えられたこのモデルからシミュレートするには、内積 wx を取り、逆ロジット関数を適用します。
ロジット^-1 = 1 / (1 + exp(-wx))
これにより、0 ~ 1 の範囲の数値が得られます。次に、パラメーター p を使用して応答をベルヌーイ変数としてサンプリングします。つまり、[0,1] で一様な数を取り、それが p より小さい場合は 1 を返し、そうでない場合は 0 を返します。
xs もシミュレートしたい場合は可能ですが、上記の議論の領域に戻ってしまいます。また、これはロジスティック回帰サンプリングであるため、上記で説明したように、この分類子には明らかな利点があることに注意してください...
データを生成したい分布を知る必要があります。ほとんどの場合、それは正規分布です。次に、データ ポイントをそのクラスにラベル付けする必要があります。
正規分布: 正規分布 を使用してデータセットでランダムな値を生成するためのアルゴリズムの例?
ガウス分布: C++: ガウス分布を生成する
Excel でのデータ生成: http://www.databison.com/index.php/how-to-generate-normal-distribution-sample-set-in-excel/