建议的程序员学习LDA算法的步骤
2014-12-26 08:43
302 查看
原文链接:/article/7681293.html
一开始直接就下了Blei的原始的那篇论文来看,但是看了个开头就被Dirichlet分布和几个数学公式打倒,然后因为专心在写项目中的具体的代码,也就先放下了。但是因为发现完全忘记了本科学的概率和统计的内容,只好回头去看大学时候概率论的教材,发现早不知道借给谁了,于是上网买了本,花了几天时间大致回顾了一遍概率论的知识,什么贝叶斯全概率公式,正态分布,二项分布之类的。
后来晚上没事儿的时候,去水木的AI版转了转,了解到了Machine Learning的圣经PRML,考虑到反正也是要长期学习了,搞了电子版,同时上淘宝买了个打印胶装的版本。春节里每天晚上看一点儿,扫了一下前两章,再次回顾了一下基本数学知识,然后了解了下贝叶斯学派那种采用共轭先验来建模的方式。于是再次尝试回头去看Blei的那篇论文,发现还是看不太懂,于是又放下了。
然后某天Tony让我准备准备给复旦的同学们share一下我们项目中LDA的使用,为了不露怯,又去翻论文,正好看到Science上这篇Topic
Models Vs. Unstructured Data的科普性质的文章,翻了一遍之后,再去PRML里看了一遍Graphic Models那一张,觉得对于LDA想解决的问题和方法了解了更清楚了。之后从search engine里搜到这篇文章,然后根据推荐读了一部分的Gibbs
Sampling for the Uninitiated。
之后忘了怎么又搜到了Mark Steyvers和Tom Griffiths合著的Probabilistic Topic Models,在某个周末往返北京的飞机上读完了,觉得基本上模型训练过程也明白了。
再之后就是读了一下这个最简版的LDA
Gibbs Sampling的实现.
再回过头读了一下PLDA的源码,基本上算是对LDA有了个相对清楚的了解。
这样前前后后,也过去了三个月,其实不少时间都是浪费掉的,比如Blei的论文在没有任何相关知识的情况下一开始读了好几次,都没读完而且得到到信息也很有限,如果重新总结一下,我觉得对于我们这些门外汉程序员来说,想了解LDA大概需要这些知识:
有基本的概率论的知识,这个拿个大学的课本大概翻一下就好了
PRML的前两章和Graphic Model那部分需要浏览一下,了解一下所谓的贝叶斯学派的方法论,然后理解共轭先验的概念,以及Graphic Model的图形表达的意思。
了解一下Gibbs Sampling的概念
直接读Steyvers的Probabilistic Topic Models,没必要一定去读Blei的论文,开创性的论文不一定好读,最典型的例子就是Paxos了,30多页里多少都是希腊人名,对于英文不够精通,学术训练比较少的工程师来说,其实很痛苦,意义也不大。
对照着Probabilistic Topic Models直接看LdaGibbsSampling.java的源码
并行LDA实现的源码(by 转者)
原文链接:/article/7681293.html
一开始直接就下了Blei的原始的那篇论文来看,但是看了个开头就被Dirichlet分布和几个数学公式打倒,然后因为专心在写项目中的具体的代码,也就先放下了。但是因为发现完全忘记了本科学的概率和统计的内容,只好回头去看大学时候概率论的教材,发现早不知道借给谁了,于是上网买了本,花了几天时间大致回顾了一遍概率论的知识,什么贝叶斯全概率公式,正态分布,二项分布之类的。
后来晚上没事儿的时候,去水木的AI版转了转,了解到了Machine Learning的圣经PRML,考虑到反正也是要长期学习了,搞了电子版,同时上淘宝买了个打印胶装的版本。春节里每天晚上看一点儿,扫了一下前两章,再次回顾了一下基本数学知识,然后了解了下贝叶斯学派那种采用共轭先验来建模的方式。于是再次尝试回头去看Blei的那篇论文,发现还是看不太懂,于是又放下了。
然后某天Tony让我准备准备给复旦的同学们share一下我们项目中LDA的使用,为了不露怯,又去翻论文,正好看到Science上这篇Topic
Models Vs. Unstructured Data的科普性质的文章,翻了一遍之后,再去PRML里看了一遍Graphic Models那一张,觉得对于LDA想解决的问题和方法了解了更清楚了。之后从search engine里搜到这篇文章,然后根据推荐读了一部分的Gibbs
Sampling for the Uninitiated。
之后忘了怎么又搜到了Mark Steyvers和Tom Griffiths合著的Probabilistic Topic Models,在某个周末往返北京的飞机上读完了,觉得基本上模型训练过程也明白了。
再之后就是读了一下这个最简版的LDA
Gibbs Sampling的实现.
再回过头读了一下PLDA的源码,基本上算是对LDA有了个相对清楚的了解。
这样前前后后,也过去了三个月,其实不少时间都是浪费掉的,比如Blei的论文在没有任何相关知识的情况下一开始读了好几次,都没读完而且得到到信息也很有限,如果重新总结一下,我觉得对于我们这些门外汉程序员来说,想了解LDA大概需要这些知识:
有基本的概率论的知识,这个拿个大学的课本大概翻一下就好了
PRML的前两章和Graphic Model那部分需要浏览一下,了解一下所谓的贝叶斯学派的方法论,然后理解共轭先验的概念,以及Graphic Model的图形表达的意思。
了解一下Gibbs Sampling的概念
直接读Steyvers的Probabilistic Topic Models,没必要一定去读Blei的论文,开创性的论文不一定好读,最典型的例子就是Paxos了,30多页里多少都是希腊人名,对于英文不够精通,学术训练比较少的工程师来说,其实很痛苦,意义也不大。
对照着Probabilistic Topic Models直接看LdaGibbsSampling.java的源码
并行LDA实现的源码(by 转者)
原文链接:/article/7681293.html
相关文章推荐
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议的程序员学习LDA算法的步骤
- 建议学习jQuery的步骤!
- (转载)ASP.NET技术初学者学习步骤建议——系统学习ASP.NET技术的学习顺序问题
- 学习linux/unix编程方法的建议,学习Linux的四个步骤 (转)
- C/C++学习建议(摘抄自:程序员2010年8月P61页)
- 嵌入式培训——嵌入式学习步骤及建议
- 学习linux/unix编程方法的建议,学习Linux的四个步骤
- 学习linux/unix编程方法的建议,学习Linux的四个步骤
- 学习linux/unix编程方法的建议,学习Linux的四个步骤
- 学习linux.unix编程方法的建议,学习Linux的四个步骤
- 李开复对于程序员的算法学习建议
- 学习linux/unix编程方法的建议,学习Linux的四个步骤(转)