1

私はオブジェクト認識を実行するためにlibsvmと3D記述子で試してみました。これまでのところ私は、オブジェクトの7つのカテゴリがあり、各カテゴリのために私はオブジェクトのその数(およびそのpourcentage)があります。LibSVM - 不均衡なデータを持つマルチクラス分類

区分1 492(14%)

区分2 574(16%)

カテゴリ3 738(21%)

カテゴリ4。 164(5%)

カテゴリ5 369(10%)

カテゴリ6。 123(3%)

カテゴリ7 1025(30%)

私は合計3585個のオブジェクトを持っています。

私はlibsvmの実践ガイドに従っています。リマインダーのためここに :私はトレーニングやテストに私のデータを分離トレーニングとテスト B.クロスバリデーション C.トレーニング D.テスト

スケーリング

A.。 5つの交差検証プロセスを実行することで、良いCとGammaを判断することができました。

しかし、私はを得ました。(CVは約30-40、精度は約50%です)。

次に、自分のデータを考えていて、不均衡なデータ(カテゴリ4と6など)があることがわかりました。私はlibSVMに重量に関するオプションがあることを発見しました。だから私は今、良い体重を設定したいと思います。

これまでのところ、私はこれをやっている:

svm-train -c cValue -g gValue -w1 1 -w2 1 -w3 1 -w4 2 -w5 1 -w6 2 -w7 1 

結果は同じであるが。私はそれが良い方法ではないと確信しているので、私はあなたにいくつかの助けを求めるのです。 私は主題に関するいくつかの話題を見ましたが、それらはバイナリ分類に関連していて、マルチクラス分類ではありませんでした。 私はlibSVMが「1対1」(バイナリクラシファイア)を行っていることは知っていますが、複数のクラスを持っているときにそれを処理することはわかりません。

私を助けてもらえますか?

ご協力いただきありがとうございます。

答えて

1

私は前に同じ問題を抱えていました。私はまた彼らに異なる重みを与えようとしましたが、うまくいかなかったのです。

データセットのサブセットを使用してトレーニングすることをお勧めします。

おおよそ同じ数の異なるクラスのサンプルを使用してください。カテゴリ4と6のすべてのサンプルを使用して、他のすべてのカテゴリについて約150サンプルを取り上げることができます。

この方法を使用して精度が向上しました。これがあなたを助けることを願っています!

+1

ありがとうございました!私はそれを検討します! しかし、それを行うことによって、サンプルの数とそのような残念なことを制限します。または、最もまれなカテゴリのサンプルをさらに探す必要があります。 – lilouch

+1

あなたはそうです。たぶん、異なるサンプルを使用してモデルを何度か訓練し、特定のサンプルの偏りを避けてそれらのすべてを使い切ることができます。正確さを平均化することで、納得のいく結果が得られます。それでもあなたが望むものでなければ、少なくともベースラインが得られます。 –

関連する問題