主题:【原创】抛砖!模式识别和机器学习、数据挖掘的区别与联系 -- 永远的幻想
前两天听一个报告,说到一个问题,有点类似于语音分离问题,就是说:一个屋子里,同时几个人说话,记录下来的录音是几个人声音的集合,如何把这几个人的声音都单独分离出来?
有啥关键词没有?或者什么参考文献?谢谢了!
鸡尾酒问题。
要有几个不同的麦克风布置在不同位置才行,好像不能少于人数吧。
去搜索Independent Component Analysis (ICA)独立成分分析吧。
我记得以前选修计算机图形学的时候,老师提到过。
去关心怎么调整传感器来收集数据,而是在给定数据的前提下,研究如何最快最好的进行识别。
现在生物计算很火,特别是DNA序列的检测和识别,很多原来搞模式识别的教授都在做相关的工作。
最后3本,打算先介绍2本俺没细看完的。下一次再用我最喜欢、也看得最仔细的《the Elements of Statistical Learning》 (EoSL)压轴。
《Pattern Recognition and Machine Learning (Information Science and Statistics)》(PRML)
英文原版:
作者个人网站: Christopher M. Bishop 上面有题解。
国内没引进。但是人大经济学论坛和CSDN上有PDF下载,淘宝上好像也有卖打印版的。
优点:
1. comprehensive。即使是打1 2星的读者,也承认这书相对其他同类书里算是好读的了。毕竟,让没接触过的人一下子把脑子切换成用概率来建立数学模型,描述数据,不是太容易的。能用尽量清楚的语言描述清楚已经很显示作者功力了。
2.权威性和读者口碑。作者个人网站上有他的其他著作,不赘述了。关于口碑,不止一个读者在其他书的书评里提到 这本《PRML》和之前第一本介绍的《Pattern Classification》以及下次再说的《EoSL》,并称为3本最pop的ML书。而Pattern Classification 的第1版是1973年,第2版是2000年;《EoSL》第1版是2001年,第2版是2009年;都比2006年才出版的《PRML》出得早。能和这2本并称,可见这本书的在读者心中的地位。
插一句:这种700多页难啃、但又必须通读的理论书,我还是觉得读pop的比较放心。即使暂时读不懂,也不要紧,反正硬读下去就是了,准没错。我不是太敢去碰生僻冷门的著作,一个怕读半截发现不行,浪费时间,一个是怕读完了,结果把路子走野了。
缺点:
1.缺实际例子。Amazon上给1、 2星的大多是因为这个原因。好几个读者说:不要着急,08年出配套的MATLAB示例。结果到现在作者个人网站上也只字未提。
2.主要是以贝叶斯推断的框架来描述问题的。有什么样的世界观就有什么样的方法论,对其他方法介绍得就很少了。难怪不止一个读者说:This books should be called "My personal unifying theory of Machine Learning and Pattern Recognitionusing the Bayesian Approach".
3.数学要求+textbook。因为缺实际例子,所以图就净是示意性质的简单图了。而贝叶斯方法少不了大量的公式和积分符号,这些是工科人最头痛的。最喜欢看能编程实现的伪代码,实在没有,看见sigma求和符号也比积分号舒服点,起码知道这就一个for循环的事。
没把这本放第一本的原因主要就是1 2了,其实2也不能算缺点。
《Semiparametric Regression (Cambridge Series in Statistical and Probabilistic Mathematics)》
英文原版:
本书网站:[URL] http://www.stat.tamu.edu/~carroll/semiregbook/ [/URL]。有MATLAB代码。
网上能找到PDF版下载。
这本看得不仔细,稍微简单说说。缺点是03年出的,稍嫌老了。而且是专以回归角度来叙述的,以ML整个领域来说,涉及面不是太广。
优点是comprehensive。我是作为《EoSL》的第5 6章的补充来看的,对Spline有任何不明白的地方就看这个书。
这次就这样吧,下次最终章详细来说压轴的《EoSL》。
我现在混饭吃的地方,管这一堆东西叫DM;我们用的时候大都是立足于现成的软件包。
我的基本感觉是,这堆东西,你要是就是拣点出来用用,似乎不难;尤其是已经有了个现成的软件包,而且你的目的和任务已经由于历史性的原因非常明确了。
我的理解,如果冒昧地说一下,永远兄的环境,似乎是要从零开始-当然基本的理论和算法已经在那儿了,搞出个应用于某个任务的新"程序"。如果方便的话,能不能说说你要解决的问题都是哪些方面的。
我的疑惑在于,一直不是很清楚基本的框架(Framework):要敲钉子找榔头、要卸螺丝拿扳手,看不到这些技术之间的联系。与此相关的是,这里涉及到计算机、数学、统计(经济、生物、营销等若干学科都有自己的概念/名词体系)、自动化,我的理解是各个学科里面拿出一块或几块,然后放在了一起,到底是哪几块、是怎么凑在一起的(也许根本就没凑在一起)?找了些书看,看着看着就被绕进去了。
不知永远兄和其他各位,如果有空的话,能否释疑解惑一二,我先谢谢大家。
本帖一共被 1 帖 引用 (帖内工具实现)
Speaker diarisation.
一般用语音模型作自适应后进行语音切分.
这节开始标题换了,因为对这本书想多说几句。
正式开始之前,先摆出南寒网友提到的问题:
我现在混饭吃的地方,管这一堆东西叫DM;我们用的时候大都是立足于现成的软件包。
我的基本感觉是,这堆东西,你要是就是拣点出来用用,似乎不难;尤其是已经有了个现成的软件包,而且你的目的和任务已经由于历史性的原因非常明确了。
我的理解,如果冒昧地说一下,永远兄的环境,似乎是要从零开始-当然基本的理论和算法已经在那儿了,搞出个应用于某个任务的新"程序"。如果方便的话,能不能说说你要解决的问题都是哪些方面的。
我的疑惑在于,一直不是很清楚基本的框架(Framework):要敲钉子找榔头、要卸螺丝拿扳手,看不到这些技术之间的联系。与此相关的是,这里涉及到计算机、数学、统计(经济、生物、营销等若干学科都有自己的概念/名词体系)、自动化,我的理解是各个学科里面拿出一块或几块,然后放在了一起,到底是哪几块、是怎么凑在一起的(也许根本就没凑在一起)?找了些书看,看着看着就被绕进去了。
不知永远兄和其他各位,如果有空的话,能否释疑解惑一二,我先谢谢大家。
其实前面帖子的回复里我提到一点了,我现在主要是做图像视频中的目标检测、跟踪。应用环境的软硬件限制了,肯定没法用现成的软件包的,肯定是要自己写程序。而且要兼顾ROC和运行时的时间、空间复杂度。
当然还干些别的,个人兴趣也不止于此,比如这几天就去鼓捣股指去了,这篇才一直没动笔。
——————————————————————————————————————
关于框架,其实是我最想说,但是也最难下笔的问题。
其实学任何一个专业,如果没有一个高屋建瓴的视角看待这个学科,如果心中没有一个脉络把“榔头,扳手”这样的“知识点”串成一个体系,那不管是复习应付考试还是想在实际中把知识应用起来,都很困难的(没有体系纯把知识点都硬背下来,太难了)。这就是当年陆九渊在鹅湖之会时说朱熹理学是格物级别,是支离。(反过来,如果只有理论,不会用“榔头,扳手”,那就是空疏。关于这个问题可以去看晨枫老大的关于工程科研和工业实践的脱节。)
另外,我现在还有一个越来越深的体会就是:有什么样的世界观才会有什么样的方法论。封建社会“皇帝轮流做”的世界观只能建起聚义厅和分金亭,绝不可能建起工农苏维埃政府和银行。如果想自己针对具体问题提出新方法,没有一个世界观是绝对不行的。
这个系列写到(四)之后本来就想开始写框架,但是首先,讲框架离不开具体算法和应用背景,那就难免要列列图表公式啥的,而网文贴图麻烦,“此处并非讲话之所”;再一个,个人水平有限,公式图表还是得去抄书,然后再列出处,反倒不如直接把出处写清楚点,写写书评。第三,俺平时很喜欢东拉西扯的跑题,思路也比较发散(人如其ID),也不太想写得太规矩,还是随便一点。
我就用这本书,借着牛作者的花来献献佛,说说自己对的“体系”理解吧。
写这么多废话,主角还没上场―。―,赶紧有请:
《The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition (Springer Series in Statistics)》
本书网址是我见过的对一本书来说最全面的网站,不但有R程序,还有[URL=http://www-stat.stanford.edu/~hastie/local.ftp/Springer/ESLII_print3.pdf ]本书第2版PDF下载[/URL]!还能由此找到作者个人发表的文章、讲这个课用的讲义、幻灯片、留的作业等等等。
优点:
1.思路和动机。Amazon有读者觉得这书不好,仅仅是作者的研究个人研究笔记而已。没错,这是一本三个作者把70年代以来他们的研究轨迹串起来的书。
对于作案水平高的老大,能毫无保留把作案手法给小贼们讲清楚已经是难能可贵了。而再能进一步交待清楚自己作案动机、怎么逐一发展出的作案手法的心得,这可是很稀有的存在啊。
不得不提到厚积薄发老大的【原创】结束语+全文链接:那些没有拆掉的脚手架们。(全文完),
在里面老大提到:
卢梭曾写过《忏悔录》,剖析自己的心路历程。我读数学家传记,读到高斯时,有后人抱怨,“他建立了一座宏伟的数学宫殿供我们敬仰,却在宫殿建成后把脚手架拆得干干净净,让我们无从知道他是怎么做出那些伟大的发现的。”
可以说,这本书就是三个作者给数据挖掘,机器学习这个宫殿搭的一个脚手架。处处可见作者思路的轨迹,是怎么想出那么多方法的。
我本不想细说这个,正如Amazon上读者说的,这个脚手架的个人色彩浓厚了点,机器学习领域方法太多,走作者这条路未必对就真对路。但是既然南寒问到了,那就提作者背背书吧。
不过这么一来,一篇肯定就放不下了,讲到哪里算哪里,多了就再起新篇吧。
作者出发点是“维数灾难(the curse of dimensionality)”。
如果用“少量的训练样本在高维特征空间中分布变得稀疏,导致算法缺乏泛化能力”这样的话来解释,我想任何人第一次听说的时候绝对不会明白。我即使现在明白了,也还是觉得这种表达太装13了,太绕。那就换一种角度来说。
解方程的时候,理论上方程个数N只要等于未知数个数p,那么就可以了。但是实际中考虑的误差之类的,方程数要比未知数多,才能保证求出的解是“好的”。总是希望最好是“所有可能的样本”拿来都能套用这个解。也就是说是全局最优解。
“维灾难”是说,随着未知数个数增加,需要的方程个数增加得大得多。具体到机器学习上1个训练样本就是1个方程,那么维数p一高,你的训练样本N再多也是“不够用”的,即使N>>p。
解决方法就俩字——想办法“降维”。降低描述每个样本的特征向量的维数p,也就是降未知数的个数。这样方程数量不变的情况下,未知数少了。
除了维灾难,还有一种情况,就是未知数反过来比方程多的时候,而且是p>>N。比如DNA微阵列分析、语义分析这些。以DNA来说,对某种癌症,上万的基因的可能致病作用是未知数(如果考虑不同基因组合作用,就更多了),可病人样本的总是有限的,有时就是要在几千个,几百个的样本上进行分析,希望能“挖掘”到放之四海而皆准的原理来。这时候想把p降到<N,实在不现实。
而方程太少,参数太多,肯定是无穷多种解啊,可是致病机理一定是确定的。想得到唯一解怎么办呢?嗯,加约束条件。
我概括作者研究的总方向就是一个:线性模型+罚约束。
作者在第3章开始讲线性回归,然后第4章线性分类。从最基础的最小二乘解开始,然后是对解加2范数约束得到Ridge Regression岭回归;再到加1范数的约束,于是有了Lasso,LAR;然后是1 2 范数的组合Elastic Net等等等……。一开始读过,觉得这些没什么特别之处啊,说一千道一万,不就是个线性方程组的解么,能有什么意思?就像《地道战》里的牛娃说的:“鼓捣这玩意,能把黑风口的炮楼挖掉么?”Amazon也有读者觉得前几章有点浪费篇幅。除了因为觉得线性回归、分类太简单,还有挤占别的章节篇幅的嫌疑,后面再说。
但是越往后读,就越要经常往回翻第3章。
与其说这是作者的写作方式,倒不如说作者的研究路径就是这种不断“回溯”的过程(借用软件工程里的话)。具体地说:作者就是用这种不断应用“线性模型+罚约束”的思想,串起来一系列的方法:
第5章从样条到加罚平滑样条和小波,这就到了kernel的思想:经过非线性的核/基函数作用,非线性问题又变成了线性问题。
这就到了第9章的广义加法模型:树和多元加法样条。
有了广义加法模型,第10章作者用“逐次向加法模型添加非线性基函数,以使指数形式的损失函数变小”的角度分析了Adaboost,boosting,以及提出了MART。
然后到了第15章Random Forest。这章很短,但是之前一路看过来之后,觉得就是这么简单而已。
16章的Ensemble Learning也是如此,开头的ECOC虚晃一枪。后面仍然使用boosting 、Random Forest的思路,用线性组合+罚来集成多分类器。
最后的18章,推广到p>>N的情况下的特征选择问题。作者展示了在DNA微阵列分析问题上,把之前各种方法随便组合起来一下(比如加罚的logistic 回归,线性回归+PCA = 监督PCA),都有不俗表现。
通读此书之后让人觉得是某位大侠,从最朴实无华的招式起手,初觉平淡无奇,但是后面不断深入、不断变化,到最后的眼花缭乱,屡出奇招。而每次变招都是从原来那最简单的招式开始。这几章构成了一个连贯的思路,作者们30多年来的成果主要也集中上面这几章。
其他的章节要么是为了挂靠在这个思路下面(4线性分类),要么是为了讲这个思路不得不提到(6核平滑、7模型选择、13原型方法和近邻、14无监督学习)。其中的7、14也是非常重要的章节。
剩下的就比较鸡肋了,应该是作者不擅长或者不care,但是因为写书还是放进来的(8 贝叶斯推断、11神经网络、12支持向量机、17图模型)。仅以这些方法本身论,都是能单独写一本书的,也应该算是“必知必会”的知识点了,但是本书中篇幅和内容上都比较简略了。
这篇长度好像差不多了,刚写了第1个优点啊,那么剩下的以后再接着说……
不着急,慢慢写。
遇到一个也对找框架感兴趣的,不亦乐乎。
另外,再冒昧地说一句,河里有没有计算机出身的,也在做这块,有没有可能也从你的专业角度给大家说说你眼里的框架?当然,也可以是说:从这个角度,框架其实并无益处。
如果是从混合录音里面定位每个人的声音,可以考虑Gaussian Mixture Model(GMM)。文献:
D. A. Reynolds, R. C. Rose, Robust text-independent speaker identification using Gaussian mixture speaker models.
GMM的介绍有很多,比如 外链出处
看来这个大家都看过嘛。好像随便哪篇论文的参考文献里都有啊
D. A. Reynolds, R. C. Rose, Robust text-independent speaker identification using Gaussian mixture speaker models.
不过实际会议录音里面,重合的部分会影响准确度,距离麦克远的人音量小也是个问题。
用软件包就能挖出数据,数据挖掘的算法还没有强到这种程度。
说说数据挖掘真的在用的例子:一类是大的网站如Amazon,他们雇的人有专门做这个的,一般也是一流大学CS毕业的博、硕士,本身在学校就做数据挖掘。还有银行,也是直接雇在学校就做过数据挖掘的,对人的要求可能低一点。
另一类是在大学,数据挖掘(还有知识发现)也是跨专业合作。比如搞生物、医学,还有环境、气象的和CS合作。
数据挖掘的算法繁多,本身没有一个统一的理论基础。是什么算法管用就把什么给拉进来。
不过有经验和理论基础的数据挖掘人员,往往有处理大量数据的经验、和从领域专家那里获取相关知识的能力。他会根据需求挑选管用的算法和参数。
要领域专家做数据挖掘的工作,等于让他们改行,不太现实。
这本书实在是太经典了!