低い分類精度、次に何をすべきか?


16

だから、私はML分野の初心者であり、分類を試みます。私の目標は、スポーツイベントの結果を予測することです。いくつかの履歴データを収集し、分類器のトレーニングを試みました。約1200個のサンプルを取得しましたが、そのうちの0.2個はテスト目的で分割し、その他は異なる分類器を使用してグリッド検索(クロス検証を含む)に入れました。今のところ、線形カーネル、rbfカーネル、多項式カーネル、およびランダムフォレストを使用してSVMを試しました。残念ながら、0.5を大きく超える精度を得ることができません(クラスのランダム選択と同じです)。そのような複雑なイベントの結果を予測できないということですか?または、少なくとも0.7-0.8の精度を得ることができますか?実行可能であれば、次に何を検討する必要がありますか?

  • より多くのデータを取得しますか?(データセットを最大5倍まで拡大できます)
  • 別の分類器を試してみませんか?(ロジスティック回帰、kNNなど)
  • 機能セットを再評価しますか?分析するMLツールはありますか?機能セットを減らす必要があるかもしれません(現在、12個の機能があります)。

トレーニングの精度はどのくらいですか?また、各クラスにはいくつのサンプルがありますか?
レオ

1
これはどのスポーツであり、「正しい」分類とは何だと思いますか?実質的にあらゆる主要なスポーツで勝ち負けの結果を予測しようとしている場合、最も単純な分類器でさえ0.5より良く予測できないことはほとんど考えられません。たとえば、スプレッドまたは他の障害のある結果に対する勝ち負けを予測しようとしている場合、0.5よりもはるかに良いことは難しいかもしれません。
枢機

@Leoトレーニングの精度は約0.5です。クラスは均等に分散され、クラス0と1があります。
fspirit12年

@cardinalはい、勝ち負けの結果を予測しようとしますが、ハンディキャップはありません。テストセットで0.8の精度に到達することは可能ですか?
fspirit

1
@fspirit:それは、スポーツと参加者間の能力の不均衡に依存します。各コンテストにが参加しているか知るだけで、多くの場合、強力な予測因子になります。ここここに、関連する投稿がいくつかあります。
枢機

回答:


17

まず、分類子がランダムな選択よりも優れていない場合、機能とクラスの間に単純なつながりがないというリスクがあります。そのような立場にあると自問するのに良い質問は、与えられた特徴に基づいて、あなたまたはドメインの専門家がクラスを(ランダムな分類器よりも高い精度で)推測できる天気です。いいえの場合、さらにデータ行を取得したり、分類子を変更しても役に立ちません。必要なことは、さまざまな機能を使用してより多くのデータを取得することです。

一方、クラスを推測するために必要な情報がすでにラベルにあると思う場合は、分類器が高バイアスまたは高分散の問題に苦しんでいるかどうかを確認する必要があります。

これを行うには、トレーニング例の関数として、検証エラーとトレーニングセットエラーをグラフ化します。

線が同じ値に収束し、最後に近いように見える場合、分類器のバイアスは高く、データを追加しても役に立ちません。この場合の良いアイデアは、より高い分散を持つものの分類器を変更するか、現在の分類器の正則化パラメーターを単に下げることです。

一方、ラインが非常に離れており、トレーニングセットエラーが低く、検証エラーが高い場合、分類器の分散が高すぎます。この場合、より多くのデータを取得することが非常に役立ちます。より多くのデータを取得した後でも分散が大きすぎる場合は、正則化パラメーターを増やすことができます。

これは、あなたのような問題に直面したときに使用する一般的な規則です。

乾杯。


検証セットエラーとテストセットエラーを意味しましたか?そうでなければ、私は混乱しています。私は電車のセットエラーさえ知らないので、検証セットエラーを使用してモデルを選択し、テストセットで選択されたモデルをチェックします。
fspirit

いいえ、私はそれが書かれているトレーニングセットエラーを意味します。トレーニングエラーは、トレーニングセット内の誤分類された例の数をトレーニングセットサイズで割ったものです。同様に、テストセットエラーは、テストセットの誤分類された例の数をトレーニングセットサイズで割ったものです。また、コースラの機械学習クラス(class.coursera.org/ml-2012-002/lecture/index)、特に「機械学習を適用するためのアドバイス」のビデオを確認することもできます。これらのアドバイスは、あなたの状況に非常に関連しています。
sjm.majewski

初めて走ったとき、私はコースを競いました。トレーニングセットのエラーについては、SVMの場合は非常に高い-0.5ですが、ランダムフォレストの場合は0です。
fspirit12年

5

分類を試みる前に、一歩下がって探索的なデータ分析を行うことをお勧めします。対象の機能を個別に調べて、関心のある結果との関係があるかどうかを確認する価値があります。使用している機能がクラスラベルと関連付けられていない可能性があります。持っている機能が使用されるかどうかをどのように知るのですか?

仮説のテストまたは相関分析を行って、関係をテストすることから始めることができます。フィーチャのクラス固有のヒストグラムを生成する(つまり、各軸の特定のフィーチャの各クラスのデータのヒストグラムをプロットする)ことも、フィーチャが2つのクラスを適切に区別しているかどうかを示す良い方法です。

ただし、探索的分析の結果が分類の選択に影響を与えないようにすることが重要です。同じデータに対する事前の探索的分析に基づいて分類する機能を選択すると、オーバーフィッティングとバイアスのかかったパフォーマンス推定が発生する可能性があります(こちらの説明を参照)が、探索的分析により、少なくともあなたがしようとしているタスクが可能。


ヒストグラムを描画して、それらがどのように見えるかを確認してみます。
fspirit

@BGreene-3番目の段落は私にとって難しいものです。探索的分析で予測子x1が結果と高度に相関していることが示されている場合、x1を少なくとも多変量モデルの候補予測子として使用しなかった場合、その相関をチェックする目的に反しませんか?
-rolando2

@ rolando2-フィーチャー選択ルーチンの一部としてフィーチャーを候補として含めることはお勧めしませんが、探索的分析に基づいてフィーチャーを選択するべきではありません。ただし、分類器モデルの一般化されたパフォーマンスを評価するために、モデル選択ルーチン内で(つまり、相互検証の各フォールド内で)特徴選択を行う必要があります。私は何を示唆していますと、探索的解析と分類が別々の活動として扱われるべきであるということである-それぞれがあなたのデータについて異なることを告げる
BGreene

3

データをトレーニングデータとテストデータに分けておくと便利です。

トレーニング時にトレーニングエラーがなくなりましたか?そうでない場合は、トレーニングアルゴリズムにバグがある可能性があります。テストセットのエラーはトレーニングセットのエラーよりも大きいと予想されるため、トレーニングセットで許容できないほど高いエラーが発生した場合、成功する見込みはほとんどありません。

機能を削除することで、ある種の過剰適合を回避できます。ただし、トレーニングセットのエラーは改善されません。トレーニングセットの低いエラーとテストセットの高いエラーは、過度に柔軟な機能セットを使用して過剰適合を示している可能性があります。ただし、テストセットで行うよりも、クロス検証で確認する方が安全です。テストセットに基づいて機能セットを選択すると、テストセットとしては無効になります。


トレーニング、検証、テストセットを別々に使用します。検証セットのエラーに基づいてハイパーパラメーターを選択し、選択したモデルをテストセットに適用します。市販のライブラリを使用しているため、トレーニングアルゴリズムにバグがあるとは思わない。
fspirit

50

「機能がひどい」可能性には、可能な解決策がない場合が含まれます。しかし、私はそれを非常に疑います。ある競技者が他の競技者よりも好きであることを確認する方法がない場所で私が知っているスポーツはありません。じゃんけんでも可能です。
ダグラスザーレ

1

「データのプロットを最初に見る」という原則に従わないのはなぜですか。できることの1つは、2つの共変量の2つのクラス条件密度の2 D散布図です。これらを見て、予測可能性の欠如を示す可能性のある分離が事実上ない場合、すべての共変量でこれを行うことができます。これにより、これらの共変量を使用して予測する機能についてのアイデアが得られます。これらの変数が少し分離できるという希望があれば、線形判別式、2次判別式、カーネル判別、正則化、ツリー分類、SVMなどについて考え始めてください。


申し訳ありませんが、共変量は==機能ですか?
fspirit
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.