机器学习 刀光剑影 之屠龙刀_腾讯大数据
機(jī)器學(xué)習(xí) 刀光劍影 之屠龍刀
機(jī)器學(xué)習(xí)是一個(gè)大武林,這里面江湖人士頗多,“發(fā)明”出來的算法兵器也是五花八門,浩瀚如海,足夠你數(shù)上三天兩夜了。然而,這些兵器行走江湖能用的不多,真正無敵的更是屈指可數(shù),或許只有屠龍刀倚天劍了。正如江湖傳言:武林至尊,寶刀屠龍,號(hào)令天下,莫敢不從,倚天不出,誰與爭鋒? 機(jī)器學(xué)習(xí)中還真有這么一把屠龍刀、一把倚天劍。用上了這兩樣兵器,保你平平安安創(chuàng)四方,瀟瀟灑灑走江湖。今天,就先絮叨絮叨這把屠龍刀。
在下以為,集成學(xué)習(xí)就是這把屠龍刀。為什么集成學(xué)習(xí)能稱為“屠龍刀”呢?因?yàn)樗⒏鸵娪?#xff0c;好像“刀過竹解”;因?yàn)樗鼜牟贿^時(shí),儼然“寶刀未老”。它是一把刀,但不是一把普通的刀;它是一把鋒利的刀,一把可以屠龍的刀。集成學(xué)習(xí)在眾多的機(jī)器學(xué)習(xí)/數(shù)據(jù)挖掘競賽中往往探囊取物,屢試不爽,像屠龍刀一樣當(dāng)之無愧排行兵器譜第一。
集成學(xué)習(xí)是什么:
通俗的講,就是多算法融合。它的思想相當(dāng)簡單直接,以至于用一句俗語就可以完美概括:三個(gè)臭皮匠,頂個(gè)諸葛亮。實(shí)際操作中,集成學(xué)習(xí)把大大小小的多種算法融合在一起,共同協(xié)作來解決一個(gè)問題。這些算法可以是不同的算法,也可以是相同的算法。對(duì)于前者,效果一般也不差,但出發(fā)點(diǎn)實(shí)在過于簡單粗暴,簡直就是一介武夫,就不過多介紹了。這里著重談一下如何使用同一個(gè)算法進(jìn)行集成學(xué)習(xí)(雖然只關(guān)注這個(gè)話題,但里面很多思想對(duì)前者也是適用的)。
集成學(xué)習(xí)有兩個(gè)關(guān)鍵點(diǎn):
1)怎么訓(xùn)練每個(gè)算法?2)怎么融合每個(gè)算法?圍繞這兩個(gè)關(guān)鍵點(diǎn),有很多方法提出來,極具代表性就是大家熟知的Bagging和Boosting方法,其中Bagging和Boosting也是當(dāng)今兩大殺器RF(Random Forests)和GBDT(Gradient Boosting Decision Tree)成功的主要秘訣。 注意,這里我用的是“方法”,而不是“算法”,個(gè)人以為“方法”比“算法”更高一層,更抽象些,更具有普適性。
集成學(xué)習(xí)是典型的實(shí)踐驅(qū)動(dòng)的研究方向,它一開始先在實(shí)踐中證明有效,而后才有學(xué)者從理論上進(jìn)行各種分析,這是非常不同于大名鼎鼎的SVM(Support Vector Machine)的。SVM是先有理論,然后基于理論指導(dǎo)實(shí)現(xiàn)了算法。這是機(jī)器學(xué)習(xí)研究中少有的理論指導(dǎo)的創(chuàng)新案列。直到如今,它還是部分學(xué)者用來看輕工業(yè)界發(fā)明的算法的主要證據(jù)之一。為了證明我的觀點(diǎn),我們就回顧下集成學(xué)習(xí)中最主流的RF的發(fā)展歷程。1995年,AT&T bell實(shí)驗(yàn)室的香港女學(xué)者Ho Tin Kam最早提出了RF,那個(gè)時(shí)候還不叫Random Forests, 而叫RDF(Random Decision Forest),她主要是采用Random Subspace的思想使用DT(Decision Tree)來構(gòu)建Forest。隨后的幾年里,又有一批人相繼提出了大大小小的一些類似或改進(jìn)的工作,但都還不足以載入史冊(cè)。歷史的年輪不知不覺來到了2001年,統(tǒng)計(jì)學(xué)家Breiman已開始在機(jī)器學(xué)習(xí)界站穩(wěn)腳跟。他在RDF基礎(chǔ)上又引入了Bagging技術(shù),并提出了沿用至今的Random Forests。雖然老人家在那篇后來被引用幾千次的文章里進(jìn)行了“理論”分析,并給出了一個(gè)看似不錯(cuò)的誤差上界,但其實(shí)那個(gè)公式只是個(gè)中看不中用的數(shù)學(xué)符號(hào),沒有太多的指導(dǎo)意義。而且,老人家在回顧Ho的工作時(shí),相當(dāng)輕描淡寫,不知道何故,謹(jǐn)慎懷疑他對(duì)她是否有誤會(huì)?(批注1)2005年,Breiman離世,集成學(xué)習(xí)理論突破的使命交給了后來人。
2005-2015這十年里,集成學(xué)習(xí)方面的論文陸續(xù)有放出,但遺憾的是,個(gè)人認(rèn)為集成學(xué)習(xí)的理論進(jìn)展還是非常緩慢。 大多工作都是圍繞一個(gè)特定的算法做分析,始終沒有一個(gè)大一統(tǒng)的理論站穩(wěn)腳跟。“理論指導(dǎo)實(shí)踐”,這是機(jī)器學(xué)習(xí)研究者們渴望已久的燈塔,但它太遠(yuǎn)太遠(yuǎn),以至于我們只能在茫茫迷霧中懷著這份渴望摸索前行。回顧集成學(xué)習(xí)理論的發(fā)展歷程,為數(shù)不多的有用結(jié)論之一可能就是—從bias-variance分解角度分析集成學(xué)習(xí)方法(批注2),人們意識(shí)到:Bagging主要減小了variance,而Boosting主要減小了bias,而這種差異直接推動(dòng)結(jié)合Bagging和Boosting的MultiBoosting的誕生。值得一提的是,我國學(xué)者在集成學(xué)習(xí)領(lǐng)域并不落后,以南大周志華教授為代表的學(xué)者的一系列工作走在了世界前列,如選擇集成技術(shù)、集成聚類技術(shù)、半監(jiān)督集成技術(shù)等等。周志華老師還最早將Ensemble Learning翻譯為“集成學(xué)習(xí)”,是國內(nèi)這一領(lǐng)域的先行者。
實(shí)用的嫁接法:
近年來,除了上面的這些方法外,還有一些新方法涌現(xiàn)出來,這里就特別討論下個(gè)人認(rèn)為比較有創(chuàng)意而且很實(shí)用的方法,我稱之為“嫁接法”。據(jù)百度百科的說法–所謂嫁接,是指植物的人工營養(yǎng)繁殖方法之一。即把一種植物的枝或芽,嫁接到另一種植物的莖或根上,使接在一起的兩個(gè)部分長成一個(gè)完整的植株。把這個(gè)概念遷移到集成學(xué)習(xí)領(lǐng)域,就是把一個(gè)算法嫁接到另外一個(gè)算法上,從而形成一個(gè)新的完整的算法。為什么要這么做呢?因?yàn)榧藿雍笥泻锰幇 ;叵胍幌庐?dāng)下我們吃的各種水果,不少都是嫁接后的產(chǎn)物。不嚴(yán)格說來,袁隆平的雜交水稻也是一種高級(jí)的嫁接產(chǎn)物。嫁接后的水稻抗病害,易種植,產(chǎn)量還高。同樣,把兩種算法嫁接在一起,也能達(dá)到類似的好效果。
算法嫁接之后為什么會(huì)好呢?回答這個(gè)問題得從一個(gè)基礎(chǔ)問題講起。以分類算法為例,所有算法大致分為線性和非線性兩類,線性算法如LR,NB,ME之類;非線性算法如DT,RF,NN之流。一般來說,線性算法訓(xùn)練和預(yù)測(cè)的效率較高,但效果較差,而且非常依賴人的知識(shí)。如廣告CTR預(yù)估中常用的LR算法,要想達(dá)到一定的效果,需要人工或半人工的進(jìn)行龐大的特征工程–進(jìn)行特征的變換組合等預(yù)處理工作。有過LR使用經(jīng)驗(yàn)的同學(xué)一定對(duì)這個(gè)過程刻骨銘心,沒有一定年限的積累是做不好線性模型的。而非線性算法如DT,理論上是能自動(dòng)地做這些繁瑣工作的(雖然效果不一定好)。如果能借助這些算法減少人的工作,豈不大快人心?沒錯(cuò),LMT(Logistic Model Tree ) 應(yīng)運(yùn)而生,它把LR和DT嫁接在一起,實(shí)現(xiàn)了兩者的優(yōu)勢(shì)互補(bǔ)。剛剛過去的一年,網(wǎng)上近乎瘋傳的Facebook的那個(gè)GBDT+LR的文章,只不過是這個(gè)思想的延續(xù),初看下來實(shí)在沒啥可追捧的。不同意?先別急,這樣做的確還有一些其他好處,咱們得換另外一個(gè)角度來看GBDT+LR。對(duì)比GBDT和DT會(huì)發(fā)現(xiàn)GBDT較DT有兩點(diǎn)好處:1)GBDT本身是集成學(xué)習(xí)的一種算法,效果可能較DT好;2)GBDT中的DT一般是RT,所以預(yù)測(cè)出來的絕對(duì)值本身就有比較意義,而LR能很好利用這個(gè)值。這是個(gè)非常大的優(yōu)勢(shì),尤其是用到廣告競價(jià)排序的場(chǎng)景上。最后需要說明的是,這只是從一個(gè)角度來理解嫁接的好處,還有其他方面就不一一展開了。
集成半監(jiān)督學(xué)習(xí):
接著,嘮叨幾句紅紅火火的集成半監(jiān)督學(xué)習(xí)。坦白講,雖然它在一些數(shù)據(jù)集或場(chǎng)景下取得了一定效果,個(gè)人一直偏執(zhí)地不看好這個(gè)方向。個(gè)人拙見:具體到分類問題上,集成方法要想成功,要依賴的有標(biāo)記的樣本量要大,至少可能是要大于單個(gè)算法的。半監(jiān)督學(xué)習(xí)技術(shù)雖然可取,但沒有一定量的標(biāo)記樣本也是瞎折騰。兩者都對(duì)樣本要求如此苛刻,融合在一起豈不是更壞?另一方面,兩派人的研究方法論不同,根本不看好融合在一起的集成半監(jiān)督技術(shù)【批注3】。所以即便是co-training這樣訓(xùn)練兩個(gè)學(xué)習(xí)器的算法,實(shí)際預(yù)測(cè)時(shí)也只使用其中一個(gè)。然而,隨后這方面一系列的工作有理有據(jù),著實(shí)給人們上了生動(dòng)的一課。值得一提的是,我國南大數(shù)據(jù)挖掘團(tuán)隊(duì)對(duì)這個(gè)領(lǐng)域的發(fā)展起到了推動(dòng)作用,他們先是做了tri-training,co-forest等算法,驗(yàn)證了引入集成對(duì)半監(jiān)督學(xué)習(xí)的好處。后來又在理論上證明了半監(jiān)督學(xué)習(xí)引入集成會(huì)帶來很大好處。而對(duì)集成學(xué)習(xí)者,他們揭示出引入半監(jiān)督學(xué)習(xí)可以不犧牲個(gè)體學(xué)習(xí)器精度就能提升diversity,并設(shè)計(jì)出UDEED算法。這一系列工作得到了業(yè)界高度評(píng)價(jià)。
相信其他常用的集成方法和算法大家都比較熟悉,就不再贅述了。這里著重提一下集成學(xué)習(xí)成功的關(guān)鍵—要千方百計(jì)圍繞學(xué)習(xí)器的差異和強(qiáng)度做文章。這兩者有非常密切而又難以描述的關(guān)系,其中有對(duì)立,也有協(xié)同,實(shí)際應(yīng)用中我們要平衡好彼此。瞄準(zhǔn)了這個(gè)方向,就能事半功倍,才能在正確的道路上越走越遠(yuǎn)。怎樣解決這個(gè)關(guān)鍵問題呢?答案就一個(gè)字:試。如果非要多說兩個(gè)字,那就是:試試。如果…你還要我多說嗎?呵呵。好吧,不開玩笑了。如果你非想問出個(gè)子丑寅卯來,你可能要用好以下技術(shù):完全隨機(jī),結(jié)合先驗(yàn)的偽隨機(jī),選擇集成,融合進(jìn)人為思維等等。最最重要的是,會(huì)根據(jù)不同問題要調(diào)一把好參,如特征相關(guān)性太強(qiáng)怎么調(diào)隨機(jī)選取特征的比例,樣本噪聲太大怎么調(diào)隨機(jī)選取示例的比例,正負(fù)比例不平衡時(shí)怎么做平衡等等。另外,在實(shí)際應(yīng)用中,還要平衡好性能和效果,做一些工程上的優(yōu)化,哪些該實(shí)時(shí)算,哪些可以離線算,哪些可以半實(shí)時(shí)都要規(guī)劃好,還要使用好單機(jī)資源,多機(jī)資源,甚至犧牲效果換性能。這些點(diǎn)都是要注意的,用過才知道。
好了,準(zhǔn)備收筆了。做個(gè)小結(jié):集成學(xué)習(xí)方法是機(jī)器學(xué)習(xí)中最最實(shí)用的兵器,堪稱屠龍刀。但并不是每個(gè)人都能用好這把刀,我們都要繼續(xù)修煉內(nèi)功,理解數(shù)據(jù),用好數(shù)據(jù)。
末了,希望大家牢記兩句話:
1) 機(jī)器學(xué)習(xí)的成功依賴數(shù)據(jù),系統(tǒng)和算法,缺一不可。
2) 人能做的絕不留給機(jī)器。
主要批注:
1. 她是模式識(shí)別領(lǐng)域的,研究方法論和機(jī)器學(xué)習(xí)有很大差別。Ho主要的貢獻(xiàn)是隨機(jī)子空間,她偶然用了一下決策樹,但是從屬性子空間的角度去做的,是不是決策樹并不重要,而且最關(guān)鍵的是沒有用到bootstrap,而bootstrap是bagging和RF的最精華。從Breiman的角度看,Ho是純屬湊巧弄了個(gè)和RF看上去長得像的東西,而且這東西里面沒有RF最寶貴的部分,當(dāng)然不會(huì)看好。Ho的random subspace是模式識(shí)別里面很有效的技術(shù)。她自己也更看重這個(gè)。
2. bias-variance分解不是集成學(xué)習(xí)特有的,1992年German發(fā)明后借用過來的。集成學(xué)習(xí)特有的是error-ambiguity分解。
3. 集成學(xué)習(xí)者認(rèn)為: 只要允許我使用多個(gè)學(xué)習(xí)器,就能把弱學(xué)習(xí)器提升到足夠強(qiáng),根本不需要什么無標(biāo)記樣本。半監(jiān)督學(xué)習(xí)者認(rèn)為: 只要能讓我使用無標(biāo)記樣本,就能把學(xué)習(xí)器提升到足夠強(qiáng),哪需要什么多學(xué)習(xí)器。雙方各執(zhí)一詞,真是老死不相往來的節(jié)奏。
(非常感謝周志華、陳天奇等學(xué)者指正了本文中的明顯錯(cuò)誤,并進(jìn)行了主要批注。)
主要參考文獻(xiàn):
1. Ho, Tin Kam (1995). Random Decision Forest. Proceedings of the 3rd International Conference on Document Analysis and Recognition, Montreal, QC, 14–16 August 1995. pp. 278–282.
2. Ho, Tin Kam (1998). “The Random Subspace Method for Constructing Decision Forests”. IEEE Transactions on Pattern Analysis and Machine Intelligence 20 (8): 832–844. doi:10.1109/34.709601.
3. Landwehr, N.; Hall, M.; Frank, E. (2005). “Logistic Model Trees”. Machine Learning 59: 161.
4. http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial
5. Breiman, Leo (2001). “Random Forests”. Machine Learning 45 (1): 5–32. doi:10.1023/A:1010933404324.
6. Dietterich, Thomas (2000). “An Experimental Comparison of Three Methods for Constructing Ensembles of Decision Trees: Bagging, Boosting, and Randomization”. Machine Learning: 139–157.
7. Breiman, Leo (1996). “Bagging predictors”. Machine Learning 24 (2): 123–140. doi:10.1007/BF00058655. CiteSeerX: 10.1.1.121.7654.
8. Geoffrey I. Webb (2000). MultiBoosting: A Technique for Combining Boosting and Wagging. Machine Learning. Vol.40(No.2).
9. Xinran He, Junfeng Pan, Ou Jin, Tianbing Xu, Bo Liu, Tao Xu, Yanxin Shi, Antoine Atallah, Ralf Herbrich, Stuart Bowers and Joaquin Quinonero Candela,Practical Lessons from Predicting Clicks on Ads at Facebook, ADKDD’14.[PDF]
10. Z.-H. Zhou. Ensemble Methods: Foundations and Algorithms, Boca Raton, FL: Chapman & Hall/CRC, 2012. (ISBN 978-1-439-830031)
總結(jié)
以上是生活随笔為你收集整理的机器学习 刀光剑影 之屠龙刀_腾讯大数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MBTI性格测试结果
- 下一篇: 腾讯微云 for Mac v5.2.11