1

私はバイナリデータ分類の問題に取り組んでいます。データセットは不均衡で、92% の「偽」ラベルと 8% の「真」ラベルで構成されています。特徴の数は 18 で、少数の 650 のデータ ポイントがあります。この問題を解決するために、「GentleBoost」のような matlab のブースティング アルゴリズムを使用したいと考えています。次のように事前に制服を割り当てます。

ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1,'prior', 'uniform');

しかし、パフォーマンスは一貫して悪いです。パラメータはどのように設定すればよいですか? 費用の設定は必要ですか?どうすればこれを行うことができますか?これよりも優れたパフォーマンスの分類子はありますか?

4

2 に答える 2

0

一様事前分布で GentleBoost を呼び出したので、すべてのサンプルが同じように処理されます。クラス頻度からクラス確率を決定する経験的事前分布を使用する必要があります。次の方法で fitensemble を呼び出す必要があります。

ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1, 'prior', 'empirical');

または単に経験的事前確率がデフォルトであるため:

ada = fitensemble(Xtrain,Ytrain,'GentleBoost',10,'Tree','LearnRate',0.1);

また、学習者の最適な数を見つけようとする必要があります。10 は必ずしも最適ではありません。これを行う例はfitensemble(..) のドキュメントにあります。

于 2013-11-13T09:09:19.687 に答える
0

経験から、単純なアプローチが最も効果的であることが多いことがわかりました。ブースティング パラメータを微調整しようとする代わりに、最初に次のアプローチを試してみましたか (複雑さが増しています)。

1) 目的関数を変更して、SVM、J4.5 などの異なる分類子を使用して、2 つのクラスの平均分類精度 (または重み付けされた精度) を使用します。

2) バギング (バランス ブートストラップ サンプリングを使用) は、問題が単一の分類子では解決しにくい場合に非常にうまく機能する傾向があります。

3) adaboost + SMOTE は、バランスの取れていないデータセットでうまく機能することが知られています。

PS: 必要に応じて、役立つリファレンスをいくつか共有できます。

于 2013-11-11T11:26:00.317 に答える