教師あり学習アルゴリズムの複数のラベル


10

対応するトピックを含むテキストのコーパスがあります。たとえば、"A rapper Tupac was shot in LA"とラベル付けされました["celebrity", "murder"]。したがって、基本的に各特徴ベクトルには多くのラベルを付けることができます(同じ量ではありません。最初の特徴ベクトルには3つのラベル、2番目に1番目、3番目に5番目のラベルを付けることができます)。

各テキストに対応するラベルが1つしかない場合は、単純ベイズ分類器を試してみますが、ラベルが多数ある場合にどうすればよいかわかりません。

ナイーブベイズをマルチラベル分類問題に変換する方法はありますか(より良いアプローチがある場合-私に知らせてください)?

PS私が持っているデータについていくつかのこと。

  • データセット内の約10.000要素
  • テキストは約2〜3文
  • テキストあたり最大7つのラベル

@fordprefect多項式ナイーブベイズは、クラス与えられたいくつかの特徴の確率に多項分布を使用します。OPは、TheGrimmScientistが説明するように、分類子が複数の出力を管理することを望んでいます。pf|c
Robert Smith、

回答:


6

手始めに、ナイーブベイズはおそらくここでは適切ではありません。これは、入力(したがって、「ナイーブ」)間の独立性を前提としており、文内の単語は非常に依存しています。

ただし、実験を開始するアルゴリズムとしてNBを使用して本当に実行したい場合は、2つのオプションを検討します。

Ungraceful:多くのNB分類子

これは別の方法です。入力のベクトルとして観察されたすべての単語のコーパスを作成します。出力のベクトルとして観察されるすべてのタグからコーパスを作成します。複数の出力を持つNB分類子は、それぞれ1つの出力を持つ複数のNB分類子を持つことと同等です(使用しているソフトウェアフレームワークに実装する方が簡単です)。各要素をトレーニングサンプルとして扱います。指定された入力(単語)は、1その単語が存在する0場合と存在しない場合です。出力には同じバイナリスキームを使用します。

このブルートは、NB分類子をデータに適用することを強制し、残された分類子の膨大なセットをマイニングするために、引き続き調査を行うことによって意味を見つけることができます。

より優雅:データを処理する

これは、1つのマルチクラスNB分類子を使用して実行する場合に推奨する方法です。

ここでの目標は、タグの各セットを単一のクラスにマップする方法を理解することです。タグを1つのクラスタに適切にマッピングする、ある種のクラスタリングスキームまたはネットワーク分析([[殺人]]にリンクされた["有名人"]がセグメント["道楽"]になる可能性がある)があると思います。タグをノードとして扱い、与えられた2つのタグをリンクとして一緒に扱う場合は、コミュニティー検出アルゴリズム(ここから始めます)を調べます。ただし、何かを機能させたいだけの場合は、タグのリストをデータセットで最も一般的に見られるタグのみに変換するタグをハックするだけで十分です。

このメソッドは、データのクリーンアップ作業をフロントロードし、NB分類子の出力を理解しやすくします。


ご意見をお寄せいただきありがとうございます。NBよりも優れているアイデアがありましたら、お知らせください。
サルバドールダリ2014

1
このスライドデッキの「既存のソリューション」セクションには私が返答できるとわかっているすべての内容に加えて、さらに詳細な情報が含まれています(特に分類子を必要とせず、タグを使用する方法が必要な場合)。お役に立てれば幸いです。
TheGrimmScientist 2014

@TheGrimmScientist最初のアプローチを使用するのは合理的ではないでしょうか?特徴f1、f2、f3のベクトルがあり、たとえばこのベクトルに3つのラベルがある場合、出力として異なるラベルを持つ3つのベクトル(すべて同じ特徴f1、f2、f3を含む)に分割できます。その後、通常どおりナイーブベイズを使用できます。それがあなたの考えていたかどうかはわかりません。
ロバート・スミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.