大規模主題模型:對Spark LDA算法的改進

2021-01-10 CSDN技術社區

這篇文章由Databricks的Feynman Liang和Joseph Bradley,以及Intel的Yuhao Yang撰寫。

在使用LDA之前,請先 下載Spark 1.5或是 申請試用版的Databricks。

人們正在推特上討論什麼呢?為了關注分布式計算,我該閱讀哪些資訊文章呢?這些問題都能夠被話題模型所解答,它是分析文檔集所涵蓋話題類別的一種技術。本文將要討論Spark 1.4和1.5使用強大的隱含狄利克雷分布 (Latent Dirichlet Allocation,LDA)算法對話題模型的性能提升。

Spark 1.4和1.5引入了一種增量式計算LDA的在線算法,在已訓練的LDA模型上支持更多的查詢方式,以及支持似然率(likelihood)和複雜度(perplexity)的性能評估。我們給出了一個例子,用超過450萬條維基百科詞條的文檔集訓練一個話題模型。

話題模型和LDA

話題模型分析一個大規模的文檔集,並且自動推測其所討論的話題。舉個例子,我們用Spark的LDA算法訓練450萬條維基百科詞條,可以得到下表中的這些話題。

表一:用維基百科文檔集訓練得到的LDA話題示例

此外,LDA告訴我們每篇文檔分別屬於哪些話題;文檔X有30%的概率屬於話題1(「政治」)以及70%的概率屬於話題5(「航線」)。隱含狄利克雷分布(LDA)是實踐中最成功的話題模型之一。閱讀我們 之前的文章了解更多關於LDA的介紹。

一種新的在線變分學習算法

在線變分預測是一種訓練LDA模型的技術,它以小批次增量式地處理數據。由於每次處理一小批數據,我們可以輕易地將其擴展應用到大數據集上。MLlib按照 Hoffman論文裡最初提出的算法實現了一種在線變分學習算法。

性能對比

上表所示的話題是用新開發的在線變分學習算法訓練得到。如果我們對比時間開銷,可以發現新算法相比原來的EM算法效率有顯著提升:

圖1:在線學習算法比之前的EM算法速度更快

實驗細節

我們首先對數據預處理,濾去常見的英語停用詞,並且將詞表限制在10000個常用單詞之內。然後用在線LDA優化器迭代100次訓練得到100個LDA話題模型。我們的實驗在 Databricks上進行,訓練用到了16個節點的AWS r3.2x大集群,數據存放在S3。具體代碼詳見 github。

改進的預測、評估和查詢 預測新文檔的話題

除了描述訓練文檔集的話題之外,Spark 1.5支持讓用戶預測新測試文檔所屬的話題,使得已訓練的LDA模型更有用。

用似然率和複雜度評估模型

在訓練完一個LDA模型之後,我們通常關心模型在數據集上的表現如何。我們增加了兩種方式來評估效果: 似然率和 複雜度。

支持更多的查詢方式

新的版本添加了一些新的查詢方式,用戶可以用在已訓練的LDA模型上。例如,現在我們不僅能獲得每篇文檔的top k個話題(「這篇文檔討論了什麼話題?」),也能得到每個話題下排名靠前的文檔(「若要學習X話題,我該閱讀哪些文檔?」)。

運行LDA的小技巧

確保迭代次數足夠多。前期的迭代返回一些無用的(極其相似的)話題,但是繼續迭代多次後結果明顯改善。我們注意到這對EM算法尤其有效。 對於數據中特殊停用詞的處理方法,通常的做法是運行一遍LDA,觀察各個話題,挑出各個話題中的停用詞,把他們濾除,再運行一遍LDA。 確定話題的個數是一門藝術。有些算法可以自動選擇話題個數,但是領域知識對得到好的結果至關重要。 特徵變換類的Pipeline API對於LDA的文字預處理工作極其有用;重點查看Tokenizer,StopwordsRemover和CountVectorizer接口。 

下一步是什麼?

Spark貢獻者正在積極地優化我們的LDA實現方式。正在進行的工作有: 吉布斯採樣(一種更慢但是有時更準確的算法), 流式LDA算法和 分層狄利克雷處理(自動選擇話題個數)。

感謝

LDA的開發得益於眾多Spark貢獻者的通力合作。

Feynman Liang、Yuhao Yang、Joseph KBradley等人完成了最近這次優化, 其它眾多朋友對早期版本亦有貢獻。

原文連結: Large Scale Topic Modeling: Improvements to LDA on Spark(譯者/趙屹華 審校/朱正貴 責編/仲浩)

譯者簡介:趙屹華,搜狗算法工程師,關注大數據和機器學習。

本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)

相關焦點

  • 淺談人工智慧產品設計:LDA主題模型
    本文探討的是第一種Latent Dirichlet Allocation(潛在狄利克雷分配模型)技術。LDA通俗的來講就是一種主題抽取模型。它是一種無監督的算法,作用是從一份文檔中提出文檔的主題,以及主題中的詞語。LDA模型應用範圍很廣,如我們熟知個性化推薦、商品標籤、智能分類等等。有監督學習和無監督學習以及半監督學習的概念是比較容易理解的。這邊就簡單的提一下。
  • 深入了解LDA以及其在推薦系統上的引用
    導讀LDA是文檔分類上的經典算法,如何應用到推薦系統上,大家可以看看。Latent Dirichlet Allocation(LDA)是一種無監督發現語料庫底層主題的主題建模算法。它已被廣泛應用於各種領域,特別是在自然語言處理和推薦系統中。
  • 利用Spark 和 scikit-learn 將你的模型訓練加快 100 倍
    import timefrom sklearn import datasets, svmfrom skdist.distribute.search import DistGridSearchCVfrom pyspark.sql import SparkSession # instantiate spark sessionspark
  • 基於Bert和通用句子編碼的Spark-NLP文本分類
    類別取決於所選的數據集,並且可以從主題開始。每一個文本分類問題都遵循相似的步驟,並用不同的算法來解決。更不用說經典和流行的機器學習分類器,如隨機森林或Logistic回歸,有150多個深度學習框架提出了各種文本分類問題。文本分類問題中使用了幾個基準數據集,可以在nlpprogress.com上跟蹤最新的基準。以下是關於這些數據集的基本統計數據。
  • 讓機器搞懂100萬種隱含語義,騰訊Peacock大規模主題模型首次全揭秘
    編者按:LDA是一個簡潔、優雅、實用的隱含主題模型,騰訊效果廣告平臺部(廣點通)的工程師們為了應對網際網路的大數據處理,開發了大規模隱含主題模型建模系統Peacock,通過並行計算對10億x1億級別的大規模矩陣進行分解,從而從海量樣本數據中學習10萬到100萬量級的隱含語義。
  • 運用sklearn進行線性判別分析(LDA)代碼實現
    關鍵代碼如下:lda = LDA(n_components=2)lr = LogisticRegression()x_train_lda = lda.fit_transform(x_train_std, y_train) # LDA是有監督方法,需要用到標籤x_test_lda = lda.fit_transform(x_test_std, y_test) # 預測時候特徵向量正負問題
  • 如何找到好的主題模型量化評價指標?這是一份熱門方法總結
    圖 1:主題模型(圖源:https://medium.com/@tengyuanchang/%E7%9B%B4%E8%A7%80%E7%90%86%E8%A7%A3-lda-latent-dirichlet-allocation-%E8%88%87%E6%96%87%E4%BB%B6%E4%B8%BB%E9%A1%8C%E6%A8%A1%E5%9E%8B-ab4f26c27184
  • Spark在360商業數據部的應用實踐
    與原有MapReduce模型相比,其具有下面3個特點:1) 充分使用內存作為框架計算過程存儲的介質,與磁碟相比大大提高了數據讀取速度。利用內存緩存,顯著降低算法迭代時頻繁讀取數據的開銷。2) 更好的DAG框架。原有在MapReduce M-R-M-R的模型,在Spark框架下,更類似與M-R-R,優化掉無用流程節點。3) 豐富的組件支持。
  • 基於改進的LM算法的可見光定位研究
    同時,本文還針對LED燈進行輻射分析,提出了對應的信道模型。結果表明,該模型與廣義朗伯模型具有一致性,且μ值選取正確時算法最少只需17次迭代,而基於此的可見光定位系統在1.48m x 1.51m x 1.65m的實際定位空間中達到了10cm的精度水平。
  • 基於單純形的改進精英人工蜂群算法
    金葉2,孫越泓*1,2,王加翠2,王丹21.江蘇省大規模複雜系統數值模擬重點實驗室2.南京師範大學  數學科學學院
  • Spark Streaming:大規模流式數據處理的新貴
    BDAS就是以Spark為基礎的一套軟體棧,利用基於內存的通用計算模型將以上三種情景一網打盡,同時支持Batch、Interactive、Streaming的處理,且兼容支持HDFS和S3等分布式文件系統,可以部署在YARN和Mesos等流行的集群資源管理器之上。
  • 【BDTC先睹為快】百度沈國龍:BML百度大規模機器學習雲平臺實踐
    在推薦系統論壇,本次大會邀請到了百度基礎架構部高級架構師沈國龍擔任演講嘉賓,進行題為「 BML百度大規模機器學習雲平臺實踐」的主題演講,分享百度機器學習平臺BML的底層框架實現,包括框架演進、算法研究過程等,以及在不同的業務場景下是如何應用這些算法。沈國龍在接受CSDN的會前採訪中表示,大數據其實是一個綜合學科,開發者需要具備多方面的知識儲備才能勝任。
  • 大數據掃盲——什麼是spark
    spark的出現就彌補了MapReduce的不足。 spark是一種基於內存的快速、通用、可擴展的大數據計算引擎。它集批處理、實時流處理、交互式查詢、圖計算與機器學習於一體Spark應用場景批處理可用於ETL(抽取、轉換、加載)。 機器學習可用於自動判斷淘寶的買家評論是好評還是差評。 交互式分析可用於查詢Hive數據倉庫。
  • 烏海spark培訓_博雅環球教育放心之選
    烏海spark培訓,博雅環球教育放心之選,是以網際網路企業技術研發、軟體開發、大數據分析、雲計算、人工智慧開發應用等網際網路技術為依託,以校企專業共建,崗前技能實訓,高薪就業安置,網際網路人才外包服務等業務為核心的高端就業培訓。烏海spark培訓, Oracle認證講師、Microsoft認證講師。
  • GPU上的隨機森林:比Apache Spark快2000倍
    隨機森林是一種機器學習算法,以其魯棒性、準確性和可擴展性而受到許多數據科學家的信賴。該算法通過bootstrap聚合訓練出多棵決策樹,然後通過集成對輸出進行預測。由於其集成特徵的特點,隨機森林是一種可以在分布式計算環境中實現的算法。樹可以在集群中跨進程和機器並行訓練,結果比使用單個進程的訓練時間快得多。
  • 基於MUSIC算法的相干信號DOA估計改進及應用
    在面對相干信號時,MUSIC算法等子空間類算法已經無法滿足空間譜估計的性能。因此,本文提出了一種改進的MUSIC算法能夠較好的解決該問題。在面對相干信號時,MUSIC算法等子空間類算法已經無法滿足空間譜估計的性能。因此,本文提出了一種改進的MUSIC算法能夠較好的解決該問題。
  • 基於PVANet卷積神經網絡模型的交通標誌識別算法
    針對這一瓶頸問題, 採用對PVANet網絡的淺層特徵提取層、深層特徵提取層和HyperNet層(多層特徵信息融合層)進行改進的措施, 提出了一種適用於小目標物體檢測的改進PVANet卷積神經網絡模型, 並在TT100K(Tsinghua-Tencent 100K)數據集上進行了交通標誌檢測算法驗證實驗。
  • 風雲衛星雲導風算法改進
    基於此,「風雲二號雲導風改進和歷史資料再處理」項目應運而生。前不久,該項目順利通過驗收,完成了對衛星雲導風算法的改進。  該項目的用改進後的新算法對2006年至2013年定點於105°E的風雲二號C星和E星每天00、06、12、18世界時四個時次雲導風的歷史資料進行再處理,使歷史資料庫中的衛星風資料達到改進後同樣的質量水平。
  • 應用改進的算法,優化波浪能轉換裝置陣列,提升系統發電效率
    差分進化算法全局搜索能力強並且計算時間少;同時,差分進化算法在精度和收斂速度上沒法兩全且可能會陷入局部解,為了使優化結果更準確,引入了自適應變異算子的概念對差分進化算法進行改進,改進後的算法收斂速度相對較快而且結果準確度高。結合改進算法,分別針對不同浮子數目的陣列進行優化與對比分析。
  • 深度| Facebook官方詳解:使用Apache Spark進行大型語言模型訓練
    它的歷史是「你能來嗎(Can you please come)」基於這個歷史,N-gram 語言模型可以計算出單詞「這裡。(here.)」的條件概率。大規模、高階的 N-gram 語言模型(例如 N = 5)已經被證明在許多應用中非常有效,例如自動語音識別和機器翻譯。