Doc2Vecモデルのトレーニング後の精度が低い

firas_frikha

マルチラベルテキスト分類子を作成するために、Doc2Vecモデルをトレーニングしようとしています。
そのために、約70000の記事を含むデータセットを選択しました。すべての記事には、1500〜2000語が含まれています。
これらの記事は5つのクラスに分かれています。
入力を設定するときに、ドキュメントのタグとして対応するラベルを選択しました。私は次のようにそれを行いました:tagged_article = data.apply(lambda r: TaggedDocument(words=r['article'].split(), tags=[r.labels]), axis=1)
それから私は次のラインコードで私のモデルを訓練しました:

model_dbow = Doc2Vec(dm=1, vector_size=300, negative=5, min_count=10, workers=cores)
model_dbow.build_vocab([x for x in tqdm(tagged_article.values)])

print("Training the Doc2Vec model for ", no_epochs, "number of epochs" )
for epoch in range(no_epochs):
     model_dbow.train(utils.shuffle([x for x in tqdm(tagged_article.values)]),total_examples=len(tagged_article.values), epochs=1)
     model_dbow.alpha -= 0.002
     model_dbow.min_alpha = model_dbow.alpha   

その後、すべての記事のタグを予測するために、ロジスティック回帰モデルを作成しました。

そのために、次の関数を作成しました:\

def vec_for_learning(model, tagged_docs):
sents = tagged_docs.values
targets, regressors = zip(*[(doc.tags[0], model.infer_vector(doc.words, steps=inference_steps)) for doc in tqdm(sents)])
return targets, regressors

y_train, X_train = vec_for_learning(model_dbow, tagged_article)

logreg = LogisticRegression(solver='lbfgs',max_iter=1000)
logreg.fit(X_train, y_train)

残念ながら、私は非常に悪い結果を得ています。実際、正解率は22%、F1スコアは21%です。

なぜ私がこれらの悪い結果を得ているのか説明してもらえますか?

ゴジョモ

何よりもまず、自分自身train()を管理しalphaいるときに、自分のループを使用して複数回呼び出すことはほぼ間違いなく望ましくありません参照:私のDoc2Vecコードは、トレーニングを何度も繰り返した後、良い結果が得られていません。何が悪いのでしょうか?

あなたは自分のno_epochs価値を示さないので、あなたが絶対的に最悪のことをしているとは確信できません-最終的alphaには負の値に減少します-しかしあなたはそうかもしれません。それでも、エラーが発生しやすいループは必要ありません。(そして、このコードテンプレートを提案したソースに連絡して、アンチパターンを推進していることを知らせてください。)

たった5つの既知のラベルをドキュメントタグとして使用するのもおそらく間違いです。つまり、すべての記事が5つの巨大なテキストの断片であるかのように、モデルは基本的に5つのドキュメントベクトルのみを学習します。既知のラベルをタグとして使用(または追加)すると便利な場合もありますが、より古典的なトレーニング方法でDoc2Vecは、各ドキュメントに一意のIDが与えられるため、モデルは(あなたの場合)約70,000の異なるドキュメントベクトルを学習し、より豊富に学習できます。すべてのドキュメントとラベルによって、さまざまな不規則な形状にまたがるドキュメントの可能性のあるスペースをモデル化します。

あなたのデータは確かにDoc2Vecアルゴリズムの価値を示す公開された作品に匹敵するサイズですが、あなたのコーパスは巨大ではありません(そしてあなたの語彙がどれほど大きくて多様であるかは不明です)。したがって、300のディメンションは、データの量や種類に対してmin_count=10大きすぎるか、重要性が低く、サンプリングが不十分な単語をトリミングするのに積極的すぎる(または十分に積極的ではない)可能性があります。

最後に、Doc2Vecクラスはデフォルトepochs値の5を継承しますが、公開されているほとんどの作業では10〜20のトレーニングエポックが使用されており、データセットが小さい場合はさらに役立つ場合があります。さらに、推論はepochsモデルの作成時に同じセット(またはデフォルト)を再利用し、(少なくとも)epochsトレーニングと同じ数で最適に機能しinference_stepsますが、を使用しているかは不明です。

(コードの読みやすさの別の問題として:モデルmodel_dbow名前を付けましたが、dm=1実際に使用することによりPV-DBOWモードはなくPV- DMモードを使用しています。)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Doc2Vecモデルのトレーニングを続ける

分類Dev

wikicorpusでトレーニングされたdoc2vecモデルからの新しい文

分類Dev

doc2Vecモデルをトレーニングするには、実際にどのくらいのデータが必要ですか?

分類Dev

トレーニング中にmin_countが1に設定されている場合でも、Doc2VecモデルのKeyError

分類Dev

Gensim: 事前トレーニング済みの doc2vec モデルのロード中にエラーが発生しましたか?

分類Dev

CNNのトレーニング後の精度が低い

分類Dev

gensimの事前トレーニング済みモデルをdoc2vecモデルに使用できますか?

分類Dev

Gensim Doc2vecモデル:事前にトレーニングされたdoc2vecモデルを使用して取得されたコーパスの類似性を計算する方法は?

分類Dev

再トレーニングしたモデルの精度が低いのはなぜですか?

分類Dev

gensim:Googleの事前トレーニング済みword2vecモデルをロードすると、「Doc2Vec」オブジェクトに属性「intersect_word2vec_format」がありません

分類Dev

doc2vec-Pythonでのdoc2vecトレーニングとinfer_vector()の入力形式

分類Dev

Doc2vecモデルの精度を測定する方法は?

分類Dev

doc2vecモデルで事前トレーニングされたword2vecベクトルを使用する方法は?

分類Dev

gensim doc2vecは、事前にトレーニングされたモデルからより多くのドキュメントをトレーニングします

分類Dev

Tensorflowの公式MNISTモデルのトレーニング精度は高いが、予測パフォーマンスは低い

分類Dev

モデルのトレーニング/検証の精度がおかしい

分類Dev

トレーニングの精度は良いが検証の精度は低い

分類Dev

トレーニングモデルの文字認識で精度が向上しない

分類Dev

私のDoc2Vecコードは、トレーニングを何度も繰り返した後、良い結果が得られていません。何が悪いのでしょうか?

分類Dev

doc2vec段落表現をトレーニング後のクラスタグにマッピングする

分類Dev

Doc2VecモデルのDBSCANクラスタリングのプロット

分類Dev

事前にトレーニングされたモデルをgensimにロードし、それを使用してdoc2vecをトレーニングするにはどうすればよいですか?

分類Dev

doc2vec埋め込みをトレーニングするための学習曲線を作成する

分類Dev

単語ベクトルは、doc2vec DBOWの段落ベクトルとどのように共同トレーニングされますか?

分類Dev

MNISTのKerasVGGモデル:トレーニングと検証の精度の違い

分類Dev

基本的な低レベルのTensorFlowトレーニングループを使用したtf.kerasモデルのトレーニングが機能しない

分類Dev

Pythonエラー: "'numpy.ndarray'オブジェクトに属性がありません 'words'" doc2vecのトレーニング時

分類Dev

CNNモデルトレーニングの問題(%16精度)

分類Dev

別の言語でトレーニングされたWord2vecモデルの精度を測定する方法は?

Related 関連記事

  1. 1

    Doc2Vecモデルのトレーニングを続ける

  2. 2

    wikicorpusでトレーニングされたdoc2vecモデルからの新しい文

  3. 3

    doc2Vecモデルをトレーニングするには、実際にどのくらいのデータが必要ですか?

  4. 4

    トレーニング中にmin_countが1に設定されている場合でも、Doc2VecモデルのKeyError

  5. 5

    Gensim: 事前トレーニング済みの doc2vec モデルのロード中にエラーが発生しましたか?

  6. 6

    CNNのトレーニング後の精度が低い

  7. 7

    gensimの事前トレーニング済みモデルをdoc2vecモデルに使用できますか?

  8. 8

    Gensim Doc2vecモデル:事前にトレーニングされたdoc2vecモデルを使用して取得されたコーパスの類似性を計算する方法は?

  9. 9

    再トレーニングしたモデルの精度が低いのはなぜですか?

  10. 10

    gensim:Googleの事前トレーニング済みword2vecモデルをロードすると、「Doc2Vec」オブジェクトに属性「intersect_word2vec_format」がありません

  11. 11

    doc2vec-Pythonでのdoc2vecトレーニングとinfer_vector()の入力形式

  12. 12

    Doc2vecモデルの精度を測定する方法は?

  13. 13

    doc2vecモデルで事前トレーニングされたword2vecベクトルを使用する方法は?

  14. 14

    gensim doc2vecは、事前にトレーニングされたモデルからより多くのドキュメントをトレーニングします

  15. 15

    Tensorflowの公式MNISTモデルのトレーニング精度は高いが、予測パフォーマンスは低い

  16. 16

    モデルのトレーニング/検証の精度がおかしい

  17. 17

    トレーニングの精度は良いが検証の精度は低い

  18. 18

    トレーニングモデルの文字認識で精度が向上しない

  19. 19

    私のDoc2Vecコードは、トレーニングを何度も繰り返した後、良い結果が得られていません。何が悪いのでしょうか?

  20. 20

    doc2vec段落表現をトレーニング後のクラスタグにマッピングする

  21. 21

    Doc2VecモデルのDBSCANクラスタリングのプロット

  22. 22

    事前にトレーニングされたモデルをgensimにロードし、それを使用してdoc2vecをトレーニングするにはどうすればよいですか?

  23. 23

    doc2vec埋め込みをトレーニングするための学習曲線を作成する

  24. 24

    単語ベクトルは、doc2vec DBOWの段落ベクトルとどのように共同トレーニングされますか?

  25. 25

    MNISTのKerasVGGモデル:トレーニングと検証の精度の違い

  26. 26

    基本的な低レベルのTensorFlowトレーニングループを使用したtf.kerasモデルのトレーニングが機能しない

  27. 27

    Pythonエラー: "'numpy.ndarray'オブジェクトに属性がありません 'words'" doc2vecのトレーニング時

  28. 28

    CNNモデルトレーニングの問題(%16精度)

  29. 29

    別の言語でトレーニングされたWord2vecモデルの精度を測定する方法は?

ホットタグ

アーカイブ