摘要:文章介紹了集成學習的概念和它的發展,它有RF和GBDT兩大殺器,它有嫁接法、集成半監督學習的最新進展能夠提升學習效果,文章還著重分析了集成學習成功的關鍵。
編者按:目前機器學習領域誕生的多種算法並不見得都有很好的實戰效果。本文作者認為,集成學習是一種立竿見影、從不過時的方法,堪稱 機器學習兵器譜上排名第一的“屠龍刀”。作者在文章中介紹了集成學習的概念和發展,它有RF和GBDT兩大殺器,著重講解了嫁接法、集成半監督學習等最新 進展,以及集成學習成功的關鍵。
機器學習是一個大武林,這裏麵江湖人士頗多,“發明”出來的算法兵器也是五花八門,浩瀚如海,足夠你數上三 天兩夜了。然而,這些兵器行走江湖能用的不多,真正無敵的更是屈指可數,或許隻有屠龍刀倚天劍了。正如江湖傳言:武林至尊,寶刀屠龍,號令天下,莫敢不 從,倚天不出,誰與爭鋒? 機器學習中還真有這麽一把屠龍刀、一把倚天劍。用上了這兩樣兵器,保你平平安安闖四方,瀟瀟灑灑走江湖。今天,就先絮叨絮叨這把屠龍刀。
在 下以為,集成學習就是這把屠龍刀。為什麽集成學習能稱為“屠龍刀”呢?因為它立竿見影,好像“刀過竹解”;因為它從不過時,儼然“寶刀未老”。它是一把 刀,但不是一把普通的刀;它是一把鋒利的刀,一把可以屠龍的刀。集成學習在眾多的機器學習/數據挖掘競賽中往往探囊取物,屢試不爽,像屠龍刀一樣當之無愧 排行兵器譜第一。
什麽是集成學習
什麽是集成學習呢?通俗的講,就是多算法融合。它的思想相當簡單直接,以至於用一句俗語 就可以完美概括:三個臭皮匠,頂個諸葛亮。實際操作中,集成學習把大大小小的多種算法融合在一起,共同協作來解決一個問題。這些算法可以是不同的算法,也 可以是相同的算法。對於前者,效果一般也不差,但出發點實在過於簡單粗暴,簡直就是一介武夫,就不過多介紹了。這裏著重談一下如何使用同一個算法進行集成 學習(雖然隻關注這個話題,但裏麵很多思想對前者也是適用的)。
用 好集成學習有兩個關鍵點:1)怎麽訓練每個算法?2)怎麽融合每個算法?圍繞這兩個關鍵點,有很多方法提出來,極具代表性就是大家熟知的bagging和 boosting方法,其中Bagging和boosting也是當今兩大殺器RF(Random Forests)和GBDT(Gradient Boosting Decision Tree)之所以成功的主要秘訣。注意,這裏我用的是“方法”,而不是“算法”,個人以為“方法”比“算法”更高一層,更抽象些,更具有普適性。
集成學習的發展
集 成學習是典型的實踐驅動的研究方向,它一開始先在實踐中證明有效,而後才有學者從理論上進行各種分析,這是非常不同於大名鼎鼎的SVM(Support Vector Machine)的。SVM是先有理論,然後基於理論指導實現了算法。這是機器學習研究中少有的理論指導的創新案列。直到如今,它還是部分學者用來看輕工 業界發明的算法的主要證據之一。為了證明我的觀點,我們就回顧下集成學習中最主流的RF的發展曆程。1995年,AT&T bell實驗室的香港女學者Ho Tin Kam最早提出了RF,那個時候還不叫Random Forests, 而叫RDF(Random Decision Forest),她主要是采用Random Subspace的思想使用DT(Decision Tree)來構建Forest。隨後的幾年裏,又有一批人相繼提出了大大小小的一些類似或改進的工作,但都還不足以載入史冊。曆史的年輪不知不覺來到了 2001年,統計學家Breiman已開始在機器學習界站穩腳跟。他在RDF基礎上又引入了Bagging技術,並提出了沿用至今的Random Forests。雖然老人家在那篇後來被引用幾千次的文章裏進行了“理論”分析,並給出了一個看似不錯的誤差上界,但其實那個公式隻是個中看不中用的數學 符號,沒有太多的指導意義。而且,老人家在回顧Ho的工作時,相當輕描淡寫,不知道何故,謹慎懷疑他對她是否有誤會?【批注1】2005 年,Breiman離世,集成學習理論突破的使命交給了後來人。
2005-2015這十年裏,集成學習方麵的論文陸續有放出,但遺憾的是, 個人認為集成學習的理論進展還是非常緩慢。大多工作都是圍繞一個特定的算法做分析,始終沒有一個大一統的理論站穩腳跟。“理論指導實踐”,這是機器學習研 究者們渴望已久的燈塔,但它太遠太遠,以至於我們隻能在茫茫迷霧中懷著這份渴望摸索前行。回顧集成學習理論的發展曆程,為數不多的有用結論之一可能就是—從bias-variance分解角度分析集成學習方法【批 注2】,人們意識到:Bagging主要減小了variance,而Boosting主要減小了bias,而這種差異直接推動結合Bagging和 Boosting的MultiBoosting的誕生。值得一提的是,我國學者在集成學習領域並不落後,以南大周誌華教授為代表的學者的一係列工作走在了 世界前列,如選擇集成技術、集成聚類技術、半監督集成技術等等。周誌華老師還最早將Ensemble Learning翻譯為“集成學習”,是國內這一領域的先行者。
- 實用新方法:算法嫁接
近 年來,除了上麵的這些方法外,還有一些新方法湧現出來,這裏就特別討論下個人認為比較有創意而且很實用的方法,我稱之為“嫁接法”。據百度百科的說法– 所謂嫁接,是指植物的人工營養繁殖方法之一。即把一種植物的枝或芽,嫁接到另一種植物的莖或根上,使接在一起的兩個部分長成一個完整的植株。把這個概念遷 移到集成學習領域,就是把一個算法嫁接到另外一個算法上,從而形成一個新的完整的算法。為什麽要這麽做呢?因為嫁接後有好處啊。回想一下當下我們吃的各種 水果,不少都是嫁接後的產物。不嚴格說來,袁隆平的雜交水稻也是一種高級的嫁接產物。嫁接後的水稻抗病害,易種植,產量還高。同樣,把兩種算法嫁接在一 起,也能達到類似的好效果。
算法嫁接之後為什麽會好呢?回答這個問題得從一個基礎問題講起。以分類算法為例,所有算法大致分為線性和非線性 兩類,線性算法如LR,NB,ME之類;非線性算法如DT,RF,NN之流。一般來說,線性算法訓練和預測的效率較高,但效果較差,而且非常依賴人的知 識。如廣告CTR預估中常用的LR算法,要想達到一定的效果,需要人工或半人工的進行龐大的特征工程–進行特征的變換組合等預處理工作。有過LR使用經 驗的同學一定對這個過程刻骨銘心,沒有一定年限的積累是做不好線性模型的。而非線性算法如DT,理論上是能自動地做這些繁瑣工作的(雖然效果不一定好)。 如果能借助這些算法減少人的工作,豈不大快人心?沒錯,LMT(Logistic Model Tree ) 應運而生,它把LR和DT嫁接在一起,實現了兩者的優勢互補。剛剛過去的一年,網上近乎瘋傳的Facebook的那個GBDT+LR的文章,隻不過是這個 思想的延續,初看下來實在沒啥可追捧的。不同意?先別急,這樣做的確還有一些其他好處,咱們得換另外一個角度來看GBDT+LR。對比GBDT和DT會發 現GBDT較DT有兩點好處:1)GBDT本身是集成學習的一種算法,效果可能較DT好;2)GBDT中的DT一般是RT,所以預測出來的 絕對值本身就有比較意義,而LR能很好利用這個值。這是個非常大的優勢,尤其是用到廣告競價排序的場景上。最後需要說明的是,這隻是從一個角度來理解嫁接 的好處,還有其他方麵就不一一展開了。
- 集成半監督學習的改進
雖 然集成半監督技術在一些數據集或場景下取得了一定效果,個人一直偏執地不看好這個方向。個人拙見:具體到分類問題上,集成方法要想成功,要依賴的有標記的 樣本量要大,至少可能是要大於單個算法的。半監督學習技術雖然可取,但沒有一定量的標記樣本也是瞎折騰。兩者都對樣本要求如此苛刻,融合在一起豈不是更 壞?另一方麵,兩派人的研究方法論不同,根本不看好融合在一起的集成半監督技術【批注3】。所以即便是co-training這樣訓練兩個學習器的算法, 實際預測時也隻使用其中一個。然而,隨後這方麵一係列的工作有理有據,著實給人們上了生動的一課。值得一提的是,我國南大數據挖掘團隊對這個領域的發展起到了推動作用,他們先是做了tri-training,co-forest等算法,驗證了引入集成對半監督學習的好處。後來又在理論上證明了半監督學習引入集成會帶來很大好處。而對集成學習者,他們揭示出引入半監督學習可以不犧牲個體學習器精度就能提升diversity,並設計出UDEED算法。這一係列工作得到了業界高度評價。
集成學習成功的關鍵
集成學習成功的關鍵—要千方百計圍繞學習器的差異和強度做文章。這 兩者有非常密切而又難以描述的關係,其中有對立,也有協同,實際應用中我們要平衡好彼此。瞄準了這個方向,就能事半功倍,才能在正確的道路上越走越遠。怎 樣解決這個關鍵問題呢?答案就一個字:試。如果非要多說兩個字,那就是:試試。如果…你還要我多說嗎?嗬嗬。好吧,不開玩笑了。如果你非想問出個子醜寅卯 來,你可能要用好以下技術:完全隨機,結合先驗的偽隨機,選擇集成,融合進人為思維等等。最最重要的是,會根據不同問題要調一把好參,如特征相關性太強怎麽調隨機選取特征的比例,樣本噪聲太大怎麽調隨機選取示例的比例,正負比例不平衡時怎麽做平衡等等。另外,在實際應用中,還要平衡好性能和效果,做一些工程上的優化,哪些該實時算,哪些可以離線算,哪些可以半實時都要規劃好,還要使用好單機資源,多機資源,甚至犧牲效果換性能。這些點都是要注意的,用過才知道。
小結
集成學習方法是機器學習中最最實用的兵器,堪稱屠龍刀。但並不是每個人都能用好這把刀,我們都要繼續修煉內功,理解數據,用好數據。
希望大家牢記兩句話:
- 機器學習的成功依賴數據,係統和算法,缺一不可。
- 人能做的絕不留給機器。
主要批注:
- 她 是模式識別領域的,研究方法論和機器學習有很大差別。Ho主要的貢獻是隨機子空間,她偶然用了一下決策樹,但是從屬性子空間的角度去做的,是不是決策樹並 不重要,而且最關鍵的是沒有用到bootstrap,而bootstrap是bagging和RF的最精華。從Breiman的角度看,Ho是純屬湊巧弄 了個和RF看上去長得像的東西,而且這東西裏麵沒有RF最寶貴的部分,當然不會看好。Ho的random subspace是模式識別裏麵很有效的技術。她自己也更看重這個。
- bias-variance分解不是集成學習特有的,1992年German發明後借用過來的。集成學習特有的是error-ambiguity分解。
- 集成學習者認為: 隻要允許我使用多個學習器,就能把弱學習器提升到足夠強,根本不需要什麽無標記樣本。半監督學習者認為: 隻要能讓我使用無標記樣本,就能把學習器提升到足夠強,哪需要什麽多學習器。雙方各執一詞,真是老死不相往來的節奏。
本文摘自@龍星鏢局發布於我愛計算機(www.52cs.org)的文章機器學習刀光劍影 之 屠龍刀,有細微刪節和改動。據作者預告還有下篇,講能帶你裝逼帶你飛的倚天劍,敬請期待。另外,如果您有人工智能的好文章要向我們推薦或投遞,請聯係:zhoujd#csdn.net(#換成@)。
原文鏈接:機器學習刀光劍影 之 屠龍刀(責編/周建丁)