问题导读 1.什么是集成学习? 2.集成学习怎么训练每个算法? 3.集成学习怎么融合每个算法? 4.集成学习成功的关键是什么? 目前机器学习领域诞生的多种算法并不见得都有很好的实战效果。本文作者认为,集成学习是一种立竿见影、从不过时的方法,堪称机器学习兵器谱上排名第一的“屠龙刀”。作者在文章中介绍了集成学习的概念和发展,它有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分解。
- 集成学习者认为: 只要允许我使用多个学习器,就能把弱学习器提升到足够强,根本不需要什么无标记样本。半监督学习者认为: 只要能让我使用无标记样本,就能把学习器提升到足够强,哪需要什么多学习器。双方各执一词,真是老死不相往来的节奏。
|