机器学习是一个大武林,这里面江湖人士颇多,“发明”出来的算法兵器也是五花八门,浩瀚如海,足够你数上三天两夜了。然而,这些兵器行走江湖能用的不多,真正无敌的更是屈指可数,或许只有屠龙刀倚天剑了。正如江湖传言:武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋? 机器学习中还真有这么一把屠龙刀、一把倚天剑。用上了这两样兵器,保你平平安安创四方,潇潇洒洒走江湖。今天,就先絮叨絮叨这把屠龙刀。

在下以为,集成学习就是这把屠龙刀。为什么集成学习能称为“屠龙刀”?因为它立竿见影,好像“刀过竹解”;因为它从不过时,俨然“宝刀未老”。它是一把刀,但不是一把普通的刀;它是一把锋利的刀,一把可以屠龙的刀。集成学习在众多的机器学习/数据挖掘竞赛中往往探囊取物,屡试不爽,像屠龙刀一样当之无愧排行兵器谱第一。

集成学习是什么:

通俗的讲,就是多算法融合。它的思想相当简单直接,以至于用一句俗语就可以完美概括:三个臭皮匠,顶个诸葛亮。实际操作中,集成学习把大大小小的多种算法融合在一起,共同协作来解决一个问题。这些算法可以是不同的算法,也可以是相同的算法。对于前者,效果一般也不差,但出发点实在过于简单粗暴,简直就是一介武夫,就不过多介绍了。这里着重谈一下如何使用同一个算法进行集成学习(虽然只关注这个话题,但里面很多思想对前者也是适用的)。

用好集成学习有两个关键点:

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算法。这一系列工作得到了业界高度评价。

相信其他常用的集成方法和算法大家都比较熟悉,就不再赘述了。这里着重提一下集成学习成功的关键---要千方百计围绕学习器的差异和强度做文章。这两者有非常密切而又难以描述的关系,其中有对立,也有协同,实际应用中我们要平衡好彼此。瞄准了这个方向,就能事半功倍,才能在正确的道路上越走越远。怎样解决这个关键问题呢?答案就一个字:试。如果非要多说两个字,那就是:试试。如果…你还要我多说吗?呵呵。好吧,不开玩笑了。如果你非想问出个子丑寅卯来,你可能要用好以下技术:完全随机,结合先验的伪随机,选择集成,融合进人为思维等等。最最重要的是,会根据不同问题要调一把好参,如特征相关性太强怎么调随机选取特征的比例,样本噪声太大怎么调随机选取示例的比例,正负比例不平衡时怎么做平衡等等。另外,在实际应用中,还要平衡好性能和效果,做一些工程上的优化,哪些该实时算,哪些可以离线算,哪些可以半实时都要规划好,还要使用好单机资源,多机资源,甚至牺牲效果换性能。这些点都是要注意的,用过才知道。

好了,准备收笔了。做个小结:集成学习方法是机器学习中最最实用的兵器,堪称屠龙刀。但并不是每个人都能用好这把刀,我们都要继续修炼内功,理解数据,用好数据。

末了,希望大家牢记两句话:
1) 机器学习的成功依赖数据,系统和算法,缺一不可。
2) 人能做的绝不留给机器。

主要批注:
1. 她是模式识别领域的,研究方法论和机器学习有很大差别。Ho主要的贡献是随机子空间,她偶然用了一下决策树,但是从属性子空间的角度去做的,是不是决策树并不重要,而且最关键的是没有用到bootstrap,而bootstrap是bagging和RF的最精华。从Breiman的角度看,Ho是纯属凑巧弄了个和RF看上去长得像的东西,而且这东西里面没有RF最宝贵的部分,当然不会看好。Ho的random subspace是模式识别里面很有效的技术。她自己也更看重这个。
2. bias-variance分解不是集成学习特有的,1992年German发明后借用过来的。集成学习特有的是error-ambiguity分解。
3. 集成学习者认为: 只要允许我使用多个学习器,就能把弱学习器提升到足够强,根本不需要什么无标记样本。半监督学习者认为: 只要能让我使用无标记样本,就能把学习器提升到足够强,哪需要什么多学习器。双方各执一词,真是老死不相往来的节奏。

(非常感谢周志华、陈天奇等学者指正了本文中的明显错误,并进行了主要批注。)

机器学习 刀光剑影 之屠龙刀相关推荐

  1. 机器学习 刀光剑影 之屠龙刀_腾讯大数据

    机器学习 刀光剑影 之屠龙刀 机器学习是一个大武林,这里面江湖人士颇多,"发明"出来的算法兵器也是五花八门,浩瀚如海,足够你数上三天两夜了.然而,这些兵器行走江湖能用的不多,真正无 ...

  2. 集成学习:机器学习兵器谱的“屠龙刀”

    转载地址:http://www.csdn.net/article/2015-03-02/2824069 编者按:目前机器学习领域诞生的多种算法并不见得都有很好的实战效果.本文作者认为,集成学习是一种立 ...

  3. 【机器学习】集成学习知识点总结一

    集成学习算法概述 严格意义上来说,集成学习算法不算是一种机器学习算法,而更像是一种优化手段或策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策.有人把它称为机器学习中的"屠龙刀&q ...

  4. 机器学习实战(三)——决策树

    出处:https://blog.csdn.net/jiaoyangwm/article/details/79525237 决策树 3.1 决策树的构造 3.1.1 信息增益 3.1.2 编写代码计算经 ...

  5. ML机器学习基于树的家族

    ML机器学习基于树的家族 目录 决策树模型与学习 特征选择 决策树的生成 3.1 决策树的编程实现 3.2 画出决策树的方式 决策树的剪枝 DBGT 随机森林 参考资料: 机器学习实战 统计学习方法 ...

  6. 【机器学习实战】3、决策树

    文章目录 决策树 3.1 决策树的构造 3.1.1 信息增益 3.1.2 编写代码计算经验熵 3.1.4利用代码计算信息增益 3.2 决策树的生成和修剪 3.2.1 决策树的构建 1. ID3算法 2 ...

  7. 随机森林和gbdt结合_决策树与迭代决策树(GBDT)

    关注数学,关注AI,关注我们公众号ID:Math-AI 阅读目录 1. 决策树的模型 2. 决策树的基本知识 3. ID3.C4.5&CART 4. Random Forest 5. GBDT ...

  8. [Machine Learning Algorithm] 决策树与迭代决策树(GBDT)

    阅读目录 1. 决策树的模型 2. 决策树的基本知识 3. ID3.C4.5&CART 4. Random Forest 5. GBDT 6. 参考内容 谈完数据结构中的树(详情见参照之前博文 ...

  9. 【数据挖掘】-决策树算法+代码实现(七)

    目录 从例子出发 算法原理 算法的优缺点 关于剪枝 代码实现 随机森林.GBDT.XGBOOST 总结 决策树(decision tree):是一种基本的分类与回归方法,此处主要讨论分类的决策树. 在 ...

最新文章

  1. 【 C 】对指针表达式的个人总结与思考
  2. 《大型网站技术架构:核心原理及案例分析》阅读笔记01
  3. 利用matlab画混淆矩阵(confusion matrix)
  4. 编译原理实验语义分析_「编译原理」LL(1)文法分析,简单优先分析
  5. python函数 global_**Python的函数参数传递 和 global
  6. 接口自动化测试 返回html,接口自动化测试实战(更新完毕)
  7. 商城小程序源码开源版-可二开
  8. 蓝桥杯 ADV-74 算法提高 计算整数因子
  9. 电厂供配电模拟实训系统QY-GPD03
  10. 下载篇:程序员修炼之道+从小工到专家(高清、免费)
  11. python读取odb_python提取Abaqus软件odb文件位移数据(方法1)
  12. Android 微信聊天记录、联系人备份并导出为表格
  13. Hibernate中类的继承使用union-subclass实现
  14. 项目经理需要什么职称 计算机,项目经理要什么职称
  15. 应用宝成腾讯王卡官方应用商店 全部APP下载免流量
  16. RK3288-ANDROID8.1-电源指示灯
  17. JAVA学习第21天; 聚合 aggregation
  18. 利用Python实现word文档合并
  19. MacBook自动获取DNS
  20. YUV图像格式进行的ALPHA BLEND操作

热门文章

  1. 牛客网——数组中重复的数字
  2. 计算机毕业设计Java南京新东方学校家校通系统(源码+系统+mysql数据库+lw文档)
  3. android五子棋源代码,Android五子棋游戏源码详解
  4. 以梦为码,不负韶华。
  5. 二维码生成工具微信小程序源码下载
  6. 嵌入式系统设计与开发的生命周期简析
  7. Cytoscape.js – 用于数据分析和可视化的交互图形库
  8. Ansys-静力学分析-薄壁圆筒学习心得
  9. DTX-1800精度恢复,调教之路?
  10. php下载 微信头像图片_php微信公众号开发,获取用户头像,并下载