2

私はsklearn(Python)にさまざまな確率モデル(latent Dirichlet Allocation、Non-negative Matrix Factorizationなど)を適合させる最良の方法を見つけようとしています。scikit-learn - 私はTFまたはTF-IDFでモデルに合うべきですか?

sklearnのドキュメントの例を見ると、なぜLDAモデルがTFアレイに適合しているのか、NMFモデルはTF-IDFアレイに適合しているのだろうと思っていました。この選択の正確な理由はありますか?ここで

は一例です。またhttp://scikit-learn.org/stable/auto_examples/applications/topics_extraction_with_nmf_lda.html#sphx-glr-auto-examples-applications-topics-extraction-with-nmf-lda-py

、私のモデルをフィッティングするための最良のパラメータ(反復回数、トピックの数を...)を見つける方法については任意のヒントはよく受け入れられています。

ありがとうございます。

+0

パラメータ最適化のコメントです。メタ最適化手法についてのリソースを確認する必要があります(たとえば、遺伝的アルゴリズムやPSO - Particle Swarm Optimizationを使用するアルゴリズムでは、所定のセットアップで最適なパラメータ値が得られることが保証されています)。メタ最適化は、可能な各パラメータの組み合わせの検索スペースをすばやく効率的にトラバースする方法です。 – rpd

+0

ありがとうございます@rpd! –

答えて

3

答えを明確にするには、最初に2つのモデルの定義を調べる必要があります。

LDAは、単語ごとにトピックをサンプリングし、次にサンプルされたトピックから単語をサンプリングすることによってドキュメントを生成する確率論的生成モデルです。生成された文書は単語の袋として表されます。

NMFは一般的な定義において、W*H=Vのような2つの行列WとHを探索します。ここでVは観測された行列です。これらの行列の唯一の要件は、すべての要素が負でなければならないということです。

上記の定義から、LDAでは、実際のベクトルが意味をなさないため、単語頻度カウントのバッグのみを使用できます。 1.2倍の単語を作りましたか?一方、NMFに対しては非負の表現を使用することができ、例ではtf-idfが使用されています。

scimitのNMFの学習回数を選択する限り、私は停止基準を知りませんが、損失関数がしきい値よりも相対的に改善されていると信じています。実験。 LDAについては、保持されている検証セットのログ尤度の改善を手作業でチェックし、しきい値を下回ったときに停止することをお勧めします。

残りのパラメータはデータに大きく依存するので、@ rpdの示唆するように、パラメータ検索を行うことをお勧めします。

だから周波数のみを生成することができ、LDA を総括するとNMF は任意の非負行列を生成することができます。

+0

ありがとう、@ katharas!他のパラメータをチューニングする限り、私は、私のモデルの良好なフィットのメッシュとしてperplexityを使用して、より低いperplexityを与えるパラメータ(alpha、tau_0およびbatch-size)を推定しようとしました。これもLDAのパラメータを評価する良い方法だと思いますか? –

+0

ありがとうございました。(おそらくもっと良いかもしれません)。本質的にPerplexityは、1ワードあたりの累乗尤度が累乗されたものです。これは、異なる文書とコーパスの値を比較できるように使用されます。 – katharas

+0

詳細な説明ありがとうございます;) –

関連する問題