python做3d建模,python主題建模_在PYTHON中進行主題模型LDA分析

 2023-11-30 阅读 31 评论 0

摘要:原文鏈接:在PYTHON中進行主題模型LDA分析?tecdat.cn主題建模是一種在大量文檔中查找抽象主題的藝術方法。一種作為監督無的機器學習方法,主題模型不容易評估,因為沒有標記的“基礎事實”數據可供比較。然而,由于主題建模通常需要預先定義一些參數

原文鏈接:在PYTHON中進行主題模型LDA分析?tecdat.cn

主題建模是一種在大量文檔中查找抽象主題的藝術方法。一種作為監督無的機器學習方法,主題模型不容易評估,因為沒有標記的“基礎事實”數據可供比較。然而,由于主題建模通常需要預先定義一些參數(首先是要發現的主題?的數量),因此模型評估對于找到給定數據的“最佳”參數集是至關重要的。

概率LDA主題模型的評估方法

使用未標記的數據時,模型評估很難。這里描述的指標都試圖用理論方法評估模型的質量,以便找到“最佳”模型。

評估后部分布的密度或發散度

python做3d建模,有些指標僅用于評估后驗分布(主題 - 單詞和文檔 - 主題分布),而無需以某種方式將模型與觀察到的數據進行比較。

使用美聯社數據查找最佳主題模型

計算和評估主題模型

主題建模的主要功能位于tmtoolkit.lda_utils。import matplotlib.pyplot as plt # for plotting the results plt.style.use('ggplot') # for loading the data: from tmtoolkit.utils import unpickle_file # for model evaluation with the lda package: from tmtoolkit.lda_utils import tm_lda # for constructing the evaluation plot: from tmtoolkit.lda_utils.common import results_by_parameter from tmtoolkit.lda_utils.visualize import plot_eval_results

接下來,我們加載由文檔標簽,詞匯表(唯一單詞)列表和文檔 - 術語 - 矩陣組成的數據dtm。我們確保dtm尺寸合適:doc_labels, vocab, dtm = unpickle_file('ap.pickle') print('%d documents, %d vocab size, %d tokens' % (len(doc_labels), len(vocab), dtm.sum())) assert len(doc_labels) == dtm.shape[0] assert len(vocab) == dtm.shape[1]

用python做模型。現在我們定義應該評估的參數集我們設置了一個常量參數字典。const_params,它將用于每個主題模型計算并保持不變我們還設置了。varying_params包含具有不同參數值的字典的不同參數列表:

在這里,我們想要從一系列主題中計算不同的主題模型ks = [10, 20, .. 100, 120, .. 300, 350, .. 500, 600, 700]。由于我們有26個不同的值ks,我們將創建和比較26個主題模型。請注意,還我們alpha為每個模型定義了一個參數1/k(有關LDA中的α和測試超參數的討論,請參見下文)。參數名稱必須與所使用的相應主題建模包的參數匹配。在這里,我們將使用lda,因此我們通過參數,如n_iter或n_topics(例如,而與其他包的參數名稱也會有所不同num_topics,不是而n_topics在gensim)。

我們現在可以使用模塊中的evaluate_topic_models函數開始評估我們的模型tm_lda,并將不同參數列表和帶有常量參數的字典傳遞給它:

默認情況下,這將使用所有CPU內核來計算模型并并行評估它們。

該plot_eval_results函數使用在評估期間計算的所有度量創建33繪圖。之后,如果需要,我們可以使用matplotlib方法調整繪圖(例如添加繪圖標題),最后我們顯示和/或保存繪圖。

python模型?結果

?

主題模型評估,alpha = 1 / k,beta = 0.01

請注意,對于“loglikelihood”度量,僅報告最終模型的對數似然估計,這與Griffiths和Steyvers使用的調和均值方法不同。無法使用Griffiths和Steyvers方法,因為它需要一個特殊的Python包(gmpy2) ,這在我運行評估的CPU集群機器上是不可用的。但是,“對數似然”將報告非常相似的結果。

阿爾法和貝塔參數

python blp模型 估計。除了主題數量之外,還有alpha和beta(有時是文獻中的eta)參數。兩者都用于定義Dirichlet先驗,用于計算各自的后驗分布.Alpha是針對特定于文檔的主題分布的先驗的“濃度參數”,并且是針對主題特定的單詞分布的先前的β 。

?

主題模型,alpha = 1 / k,beta = 0.1

當我們使用與上述相同的alpha參數和相同的k范圍運行評估時,但是當β= 0.1而不是β= 0.01時,我們看到對數似然在k的較低范圍內最大化,即大約70到300(見上圖) 。

組合這些參數有很多種可能性,但是解釋這些參數通常并不容易。下圖顯示了不同情景的評估結果:(1)α和β的固定值取決于k,(2)α和β都固定, (3)α和β均取決于k。

python爬蟲教程。(1)主題模型,alpha = 0.1,beta = 1 /(10k)

?

(2)主題模型,alpha = 0.1,beta = 0.01

?

(3)主題模型,alpha = 1 / k,beta = 1 /(10k)

python 類,LDA超參數α,β和主題數量都相互關聯,相互作用非常復雜。在大多數情況下,用于定義模型“粒度”的beta的固定值似乎是合理的,這也是Griffiths和Steyvers所推薦的。一個更精細的模型評估,具有不同的alpha參數(取決于k)使用解釋的指標可以完成很多主題。

▍需要幫助?聯系我們

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/185983.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息