TalkingPuffin Twitterクライアントに機能を追加することを考えています。この機能では、ユーザーとのトレーニングの後、予測値に従って着信ツイートをランク付けできます。Java仮想マシン(ScalaまたはJavaが推奨)がこの種のことを行うためのソリューションは何ですか?
2 に答える
これは分類の問題であり、基本的に、ラベルのないツイートである「x」がクラス「貴重」に属するか、クラス「価値がない」に属するかを予測する関数y(x)を学習する必要があります。
ここで最もトリッキーなビットはアルゴリズムではありません(Naive Bayesは単にカウントと乗算を行っており、コーディングが簡単です!)が:
- トレーニングデータの収集
- 最適な機能セットの定義
1つは、ユーザーがお気に入り、返信、リツイートしたツイートを追跡することをお勧めします。2つ目は、ツイートを書いた人、ツイート内の単語、リンクが含まれているかどうかなどの品質を確認することです。
これをうまくやるのは簡単ではありません。グーグルは、Netflix(「彼らが評価する映画」)や他の多くのことと同様に、そのようなこと(「ユーザーが評価するリンク」)を実行できることを望んでいます。実際、 Netflixプライズの入賞作品に関するメモを読んでおくとよいでしょう。
次に、@ hmasonが言うように、一連の機能を抽出する必要があります。そして、適切な機械学習アルゴリズムが必要です。関数近似(たとえば、0と1の間の値を予測するために機能を使用しようとする場合、1は「史上最高のツイート」、0は「気になるオム」)または分類子(使用する場合)のいずれかが必要です。それが「良い」または「悪い」ツイートであるかどうかを予測しようとするあなたの機能)。
後者を選択する場合(ソーシャルネットワークのメタファーを混合するために)「いいね」でツイートをスコアリングするだけなので、ユーザーのトレーニングが簡単になります。通常は、サポートベクターマシンを使用するのが最善です。かなり包括的なJavaライブラリ。
前者の場合、試す価値のあるさまざまな手法があります。LIBSVMライブラリーを使用することにした場合、それらには回帰(つまりパラメーター推定)のバリエーションもあります。