ホーム>source

私は非常に働いています不均衡で不均一 マルチクラス {K = 16}  小さな N ~= 250 を備えた研究用データベース 。一部のラベルについては、データベースには教師あり機械学習の十分な量の例がありますが、他のラベルについてはほとんどありません。また、いくつかの理由でデータベースを拡張する立場にありません。

最初のアプローチとして、データベースをトレーニング(80%)とテスト(20%)セットに分割しました。成層 仕方。さらに、いくつかの結果を提供するいくつかの分類アルゴリズムを適用しました。この手順を適用しました500の成層トレイン/テストセット (各層別サンプリングは各層内でランダムに個人を取得するため)、許容範囲内で実行されたアルゴリズム(モデル)を選択することを望んでいます。

私のデータベースのため、トレインセットの一部である特定の例に応じて、テストセットのパフォーマンスは大きく異なります。 82%の精度(アプリケーションの場合)の実行と、40%の精度の実行を扱っています。すべての実行の中央値は約67%の精度です。

この状況に直面したとき、最高のパフォーマンスのモデルを選択する際の標準的な手順(ある場合)が不明です。私の理論的根拠は、トレーニングセットで選択された特定の例がより豊富であるため、テストセットがより適切に分類されるため、90%モデルがより一般化できることです。ただし、テストセットが次のもので構成される可能性を十分に認識しています。「シンプル」 分類が容易なケース、または分類が困難なすべてのケースで構成されるトレインセット。

何かありますか標準手順 選択する最高のパフォーマンスを発揮するモデル 私の列車/テストセットの例の分布が結果を大きく変えることを考慮して?私はどこかで概念的な間違いを犯していますか?開業医は通常選択しますか最高のパフォーマンスを発揮するモデル なしでさらなる調査

一部のモデルは一般的に他のモデルよりも一般化されているため、平均/中央値の精度を使用するという考えは好きではありませんが、私は決してこの分野の専門家ではありません。

最良のケースの1つのテストセット上の予測ラベルの混同マトリックス:

最悪の場合のテストセットの予測ラベルの混同行列:

どちらも同じアルゴリズムとパラメーターを使用します

あなたの答え
  • 解決した方法 # 1

    良好な精度=/=良好なモデル

    まず、テストセットの精度が高いことを指摘します。必要はありません 一般的に良いモデルに匹敵します!これは(あなたの場合)主に極端に歪んだサンプルの分布に関係しています。
    特に、階層化された分割を行い、1つのクラスを支配的に表す場合、この1つのクラスを何度も繰り返し予測することで、良い結果が得られる可能性があります。

    これが起こっているかどうかを確認する良い方法は、予測の混同マトリックス(ここのより良い図)を見ることです。
    他のクラスも混同しているように見えるクラスが1つある場合、それは悪いモデルの指標です。あなたの場合、トレーニング中にクラスのバランスを積極的にとろうとしない限り、一般的に良いモデルを見つけるのは非常に難しいと思います。

    アンサンブルの力を活用する

    別のアイデアは、複数のモデルにまたがるアンサンブルを使用することです(あなたの場合、異なる分割から生じる)。
    紙上で多くの精度を犠牲にしても、アンサンブルの混同マトリックスは、単一の「高精度」モデルの混同マトリックスよりもはるかに良く見えると思われます。特に、パフォーマンスが非常に悪いモデルを無視する場合(「不運な」パフォーマンスは、不幸な分割だけでなく、実際のパフォーマンスの低下によるものであることを確認してください)、非常に優れた一般化が見られます。

    k-fold Cross-Validationを試す

    もう1つの一般的な手法は、k分割交差検定です。単一の80/20分割で評価を実行する代わりに、本質的にデータをk個の等しい大きなセットに分割し、他のセットで評価しながら常にk-1セットでトレーニングします。次に、分割が合理的であるかどうかを感じるだけでなく(通常、sklearnのようなk分割CV実装の異なる分割のすべての結果を取得します)、総合評点 すべてのフォールドの平均がわかります。
    5倍のCVは、5つの20%セットへの分割に等しいため、基本的には今行っていることと「シャッフルパーツ」に注意してください。
    CVは、クラスのバランスが崩れている設定や、モデルが実際にうまく機能することを一般的に確認したい設定で、ほとんどのトレーニングデータを処理するための良い方法でもあります。

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Mongodb Groupステージ、および最後の2つのドキュメントのクエリ