2

教師あり機械学習アルゴリズムを使用して、文中の単語の有無に基づいて、一連の文の二変数関数(trueまたはfalse)を予測したいと思います。

理想的には、出力を決定するために使用される単語のセットをハードコーディングする必要がないようにします。これにより、アルゴリズムは、特定の出力をトリガーする可能性が最も高い単語を(一緒に?)自動的に学習します。

http://shop.oreilly.com/product/9780596529321.do(Programming Collective Intelligence)には、第4章の「クリックから学ぶ」というタイトルの素晴らしいセクションがあり、ニューラルネットワークで隠れノードの1つの層を使用してこれを行う方法を説明しています。入力単語の新しい組み合わせごとに1つの新しい隠れノードがあります。

同様に、トレーニングデータセット内の単語ごとに機能を作成し、これらの機能を使用してほとんどすべての従来の機械学習アルゴリズムをトレーニングすることができます。新しいトレーニングデータを追加すると、アルゴリズムを最初から再トレーニングする必要がある新しい機能が生成されます。

それは私の質問に私をもたらします:

  • トレーニングデータセットが拡張されるたびにすべてを最初から再トレーニングする必要がある場合、実際には問題ですか?
  • この種の問題に対して、機械学習ユーザーがより多くの経験を積んだアルゴリズムを使用することをお勧めしますか?
  • アルゴリズムと別のアルゴリズムを選択する際に使用する基準は何ですか?(実際にそれらすべてを試して、適合率/再現率のメトリックでどれがより優れているかを確認する以外)
  • 同様の問題に取り組んだ場合、2グラムで機能を拡張するのはどうですか(特定の2グラムが存在する場合は1、存在しない場合は0)?3グラム?
4

1 に答える 1

2

一般的に一緒に見つかる単語を見つけたい場合は、トピックモデリングの一般的な領域を調べることができます。

最も簡単なアプローチは、潜在意味解析(http://en.wikipedia.org/wiki/Latent_semantic_analysis)を使用することです。これは、用語ドキュメントマトリックスにSVDを適用するだけです。次に、これを特定の結果に適合させるために、追加の事後分析を行う必要があります。

より複雑で、はるかに複雑なアプローチは、潜在的ディリクレ割り当てを使用することです(http://en.wikipedia.org/wiki/Latent_Dirichlet_allocation

再トレーニングする限り、新しい機能(単語)を追加するだけで問題ありません。TF / IDFを使用して、マトリックスを表すときにその特定の単語に値を与えることもできます(1または0だけではありません)。

これを実行しようとしているプログラミング言語はわかりませんが、Javaにはライブラリがあり、Pythontは上記のすべてを実行します。

于 2012-08-09T10:09:49.953 に答える