LDA也就是隱含狄利克雷分布(Latent Dirichlet Allocation)模型在無監督學習理論中有極為廣泛的應用,LDA由Blei, David M.、吳恩達和吳恩達的老師,機器學習理論的泰鬥Jordan, Michael於2003年提出。
狄利克雷分布是機器學習理論裡面最重要的一個概率分布,今天我們就來聊聊狄利克雷分布以及它的隨機數的Python和Matlab實現。
----「不懂LDA你都不好意思說你也會機器學習理論!LDA可是我和我老師發明的!」
在貝葉斯推斷中,狄利克雷分布作為多項分布的共軛先驗,被用於多項分布、二項分布和類型分布(categorical distribution)的參數估計。
在機器學習領域,狄利克雷分布和廣義狄利克雷分布被應用於構建混合模型(mixture model)以處理高維的聚類和特徵賦權(feature weighting)等非監督學習問題。
使用狄利克雷分布建立的主題模型(topic model),即隱含狄利克雷分布(Latent Dirichlet Allocation, LDA)被應用於自然語言處理(Natural Language Processing, NLP)和生物信息學研究(bioinfomatics)。
狄利克雷分布(Dirichlet distribution)或多元Beta分布(multivariate Beta distribution)是一類在實數域以正單純形(standard simplex)為支撐集(support)的高維連續概率分布,是Beta分布在高維情形的推廣 。
狄利克雷分布是指數族分布之一,也是劉維爾分布(Liouville distribution)的特殊形式,將狄利克雷分布的解析形式進行推廣可以得到廣義狄利克雷分布(generalized Dirichlet distribution)和組合狄利克雷分布(Grouped Dirichlet distribution)。
在貝葉斯推斷(Bayesian inference)中,狄利克雷分布作為多項分布的共軛先驗得到應用 ,在機器學習(machine learning)中被用於構建狄利克雷混合模型(Dirichlet mixture model)。狄利克雷分布在函數空間內對應的隨機過程(stochastic process)是狄利克雷過程(Dirichlet process)。
狄利克雷分布的命名來自德國數學家約翰·彼得·古斯塔夫·勒熱納·狄利克雷(Johann P. G. Lejeune Dirichlet)以紀念其首次得到狄利克雷分布(積分形式)的解析形式 。
狄利克雷是德國數學家。1805年2月13日生於迪倫;1859年5月5日卒於哥廷根。狄利克雷出生於一個具有法蘭西血統的家庭。自幼喜歡數學,在12歲前就將零用錢攢起來買數學書閱讀。16歲中學畢業後,父母希望他學習法律,但狄利克雷卻決心攻讀數學,他先在迪倫學習,後到哥廷根受業於高斯。1822年到1827年間旅居巴黎當家庭教師。
在此期間,他參加了以傅立葉為首的青年數學家小組的活動,深受傅立葉學術思想的影響。1827年在波蘭布雷斯勞大學任講師。1829年任柏林大學講師,1839年升為教授。1855年,高斯逝世後,他作為高斯的繼任者被哥廷根大學聘任為教授,直至逝世。他1831年被選為普魯士科學院院士,1855年被選為英國皇家學會會員。
狄利克雷分布的隨機數實現有很多種方法,最常見的是以下方法:
狄利克雷分布的隨機數實現可以由Gamma分布的隨機數歸一化得到。具體地,首先生成尺度參數為1的Gamma分布隨機數,然後對所有隨機數求和,最後按隨機數除以求和結果輸出狄利克雷分布隨機數。
1.這裡給出Python 3環境下上述過程的編程實現:
2.Matlab實現
3.另外一種用Python實現的代碼