トレーニングとして肯定的なケースのみで結果を予測する方法は?


21

簡単にするために、スパム/非スパム電子メールの典型的な例に取り組んでいるとしましょう。

20000通のメールがあります。これらのうち、2000年はスパムであることは知っていますが、スパムではないメールの例はありません。残りの18000がスパムかどうかを予測したいと思います。理想的には、私が探している結果は、電子メールがスパムである確率(またはp値)です。

この状況で賢明な予測を行うために、どのアルゴリズムを使用できますか?

現時点では、距離ベースの方法で、自分のメールが既知のスパムメールにどれだけ似ているかを考えています。どのようなオプションがありますか?

より一般的には、教師あり学習方法を使用できますか、それを行うためにトレーニングセットに否定的なケースが必要になる必要がありますか?教師なし学習アプローチに限定されていますか?半教師あり方法はどうですか?


1
使用する学習アルゴリズムは、すべてのメールがスパムであると予測します。賢明な学習を行うには、2つのカテゴリの例を用意する必要があります。
ジョンロス

OK、それは古典的な教師あり学習アプローチを除外するでしょう。しかし、何らかの類似性メトリックを返すアルゴリズムはありますか?たとえば、このメールはスパムメールに非常によく似ていますが、他のメールはそうではありません。
enricoferrero

6
@JohnRosは真実ではありません。ポジティブでラベルのないデータから学習することは、半教師あり学習の大きなトピックであり、あなたが説明するようなものではありません。
マーククレセン

5
@MarcClaesen:私はこの(非常にクールな)一連の研究に不慣れでした。その魔法は、ラベル付けされていないデータがスパムと非スパムの混合物であり、問​​題を解決できると仮定していることがわかります。
ジョンロス

2
@JohnRos正確に、そしてクールネスファクターに同意します。私が本当にクールだと思うのは、既知のネガティブなしでコンティンジェンシーテーブル(精度、精度、リコールなど)に基づいて従来のパフォーマンスメトリックを計算する方法を最近示したという事実です!
マーククレセン

回答:


19

これは、ポジティブでラベルのないデータからの学習、または略してPU学習と呼ばれ、半教師あり学習のアクティブなニッチです。

簡単に言えば、既知のポジティブでのみトレーニングされるいわゆる単一クラス分類器よりも大幅に改善されたモデルを生成するため、学習プロセスでラベルなしデータを使用することが重要です。ラベルのないデータはいくつかの方法で組み込むことができ、主なアプローチは次のとおりです。

  • ラベル付けされていないデータからネガティブなセットを推定し、既知のポジティブとこれらのネガティブを区別するために教師付きモデルをトレーニングします。
  • ラベルのないセットを負として扱い、存在することがわかっているラベルノイズを何らかの形で説明します。

私はこの分野で活動しています。ここで要約するのではなく、2つの論文とその参考文献を読んでドメインの概要を確認することをお勧めします。

  • ポジティブでラベル付けされていないデータからモデルを学習するための最新技術(公式出版物はこちらから入手可能):http : //arxiv.org/abs/1402.3144
  • 既知のネガを使用せずに一般的に使用されるパフォーマンスメトリックを計算する手法(レビュー中、これはこの種の最初のものです):http : //arxiv.org/abs/1504.06837

1
優れた!参考文献に感謝します。RESVMとバギングされたSVMは、PU学習設定で同様に実行されるようです。どちらかのアルゴリズムの実装(できればR)を推奨できますか?残念ながら、どちらもキャレットに含まれていないようです。
enricoferrero

1
@enricoferreroはい、フォールス(既知)ポジティブがない限り同様に動作します。その場合、RESVMはバギングSVMよりも大幅に優れています(私が取り組んでいるアプリケーションにはフォールスポジティブがあるため、RESVMを設計しました)。R実装はすぐに利用できるとは思いませんが、kernlabまたはのようなSVM実装をラップすることで、両方を簡単に実装できますe1071。バギングSVMとRESVMの両方には、最適化する必要がある多数のハイパーパラメーターがあります。そのためにはOptunityライブラリーをお勧めします(Rインターフェースがあります)。
マーククレセン

1
@enricoferrero私は、利用可能RESVMのコマンドラインを実装していませんgithub.com/claesenm/resvmをそのコードは非常によく研磨されていないが、。その特定のリポジトリはPythonで記述されており、EnsembleSVMパッケージのドライバーとして使用されます。
マーククレセン

バギングされたSVMアルゴリズムの別の適切なオプションは、R のmlrパッケージとSVM 学習器のバギングラッパーを使用することです。
enricoferrero

7

18000件のケースでは、スパム件数はそれほど多くないと想定しています。これに教師あり学習アプローチを使用するには、データに複数のカテゴリ/クラスが必要です。2000件のケースがスパムであることがわかっているため、残りの18000件のケースを「不明なカテゴリ」としてラベル付けし、教師付き学習モデルをトレーニングして、ケースがスパムまたは不明なカテゴリにあるかどうかを予測できます。次に、サンプルモデルの精度をチェックして、2つのカテゴリを区別するためのモデルのパフォーマンスを確認します。それがうまく機能する場合、「不明」カテゴリのスパム事例がほとんどないという私の仮定は正当化されます。うまく機能しない場合は、教師なし学習器(kmeansなど)を使用して、データ内の個別の同種グループをクラスター化および識別する必要があります。次に、2000個のスパムメールのほとんどを含むクラスターを特定し、そして、どれがそうではなく、それらをそれぞれスパムと非スパムとして分類します。次に、前述のように教師付き学習器を使用してモデリングを進めることができます。


2

OPが話しているのは、1クラスの分類タスクです。これは非常に難しいタスクです。

さまざまな研究分野にわたって、このタスクに関する多くの論文があります。私はまた、アンサンブル学習に基づいた効率的な組み込みオーサーシップ検証スキームを書きました。作成者ではなく、スパムであるかどうかを分類するために、非常に簡単に適合させることができます。試してみて、詳細が必要な場合はお知らせください...


リンクをたどると404エラーが表示されます。
enricoferrero

タイプミスがありました。申し訳ありませんが、今すぐ動作するはずです;-)
未処理の例外
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.