25

私の質問:ポジティブでニュートラルなデータのみで分類子をトレーニングする方法は?

教育目的でパーソナライズされた記事レコメンデーション システムを構築しています。私が使用するデータは Instapaper からのものです。

データセット

肯定的なデータしかありません: - 既読/未読に関係なく、読んで「気に入った」記事

そして中立的なデータ (私は興味を示したが、とにかく後で気に入らないかもしれないため):

私が持っていないデータは否定的なデータです: - 後で読むために Instapaper に送信しなかった記事 (興味はありませんが、そのページ/記事を閲覧したことがあります) - クリックすらしていないかもしれないが、記事私はそれをアーカイブしているかもしれませんし、持っていないかもしれません。

私の問題

このような問題では、基本的に負のデータが欠落しています。次の解決策を考えましたが、まだ解決していません。

1) 多数の負のデータを分類器に与える 長所: すぐに負のデータを分類器に教える 短所: 好きな記事の数が増えると、分類器への負のデータの影響が薄くなる

2) 「ニュートラル」なデータをネガティブなデータに変える 長所: 必要なポジティブなデータと (新しい) ネガティブなデータをすべて手に入れた記事ですが、おそらく価値の低いクラスとして。

4

7 に答える 7

17

Spy EM アルゴリズムは、まさにこの問題を解決します。

S-EM は、一連の正の例とラベルのない例 (負の例ではない) から学習するテキスト学習または分類システムです。これは、「スパイ」手法、単純ベイズ、および EM アルゴリズムに基づいています。

基本的な考え方は、ポジティブ セットをランダムなドキュメント全体と組み合わせて、その一部を差し出すことです。最初にすべてのランダム ドキュメントを負のクラスとして扱い、そのセットで単純ベイズ分類器を学習します。これで、クロールされたドキュメントの一部が実際にポジティブになり、真にポジティブなドキュメントを保持する最低スコアよりも高いスコアのドキュメントを保守的に再ラベル付けできます。次に、安定するまでこのプロセスを繰り返します。

于 2012-12-18T22:45:42.870 に答える
9

さまざまなユーザーから多くの肯定的なフィードバックがある場合は、かなり典型的な共同フィルタリング シナリオを使用しています。

CF ソリューションを次に示します。

  • kNN (ユーザーベースまたはアイテムベース)、例えばコサイン類似度を使用
  • 1 つの行列分解アプローチ (どちらの論文も同様のアイデアを持っています)
    • Y. Hu、Y. Koren、C. Volinsky: 暗黙的なフィードバック データセットの協調フィルタリング。ICDM 2008。http://research.yahoo.net/files/HuKorenVolinsky-ICDM08.pdf
    • R. Pan、Y. Zhou、B. Cao、NN Liu、RM Lukose、M. Scholz、Q. Yang: 1 クラス協調フィルタリング、ICDM 2008。http://www.hpl.hp.com/techreports/2008/HPL-2008-48R1.pdf
    • どちらの論文も ALS に似た学習アルゴリズムを使用しています。もちろん、否定的/観察されていない例からサンプリングする SGD を使用することもできます
  • 別の行列分解アプローチ (免責事項: 私はこの論文の共著者です)

これらのアルゴリズムの公開された実装が存在します。

ところで、このような問題に分類器を使用する場合は、ポジティブのみの学習に関する文献を参照してください

于 2013-02-15T00:32:48.330 に答える
1

これは明らかに古い投稿ですが、同様の問題があります。次の手法を使用して見つけた情報で時間を節約できることを願っています。

于 2014-06-27T20:37:18.253 に答える
1

hereで説明されているように、 LibSvm、特にオプションのワンクラス SVMを使用できます。

それが役に立てば幸い!

于 2014-11-13T14:41:17.343 に答える
0

機械学習の例から離れたい場合:TF-IDFは、気に入った(または表示した)記事に類似した記事の加重ポジティブのみの推奨を提供でき、このユースケースでは非常に一般的です。

より複雑な非学習方法には、ドキュメントの類似性を判断するためのLSAが含まれますが、実装は簡単ではなく、LSAの「スペース」の構築は、大量の処理能力がなければ、数百または数千のドキュメントを超えて拡張できません。

これらは両方とも計算言語学の分野にあります。

幸運を!

于 2012-12-31T04:02:18.563 に答える
0

あなたがやろうとしていることは、私が思うに分類子よりも推奨システムです。

最先端の技術は、各記事の内容を使用して、言葉の袋を作成することです。ここから、さまざまな記事からの距離を計算できます。よく似た記事 (クラスタリングまたは Pearson、Tanimoto のような類似性を使用) は、読みたいと思う可能性が高い記事になります。これは、何かをすばやく取得する最も簡単な方法です。

もちろん、より洗練された正確な方法もあります。

于 2012-12-18T17:06:53.697 に答える
0

2 つのバイナリ分類器を作成します。

1 -> "liked" or not
2 -> "neutral" or not

何かが「好き」と「中立」の両方になるケースを避けるために、それらを連鎖させるオプションもあります。これにより、コンテンツを分類できます。

@ThierryS による他の回答が示しているように、別のオプションは、他の同様のユーザーが「好き」または「中立」と識別したコンテンツを提案できるレコメンダーを作成して、社会的側面を利用することです。

于 2012-12-19T15:44:13.380 に答える