机器学习 刀光剑影 之屠龙刀

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

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

集成学习是什么:

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

集成学习有两个关键点:

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. 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)

机器学习 刀光剑影 之屠龙刀_腾讯大数据相关推荐

  1. 查看某个分区之前所有的数据_腾讯大数据面试真题汇总

    腾讯面试题 学长1 1)笔试部分 (1)有一表名t_sh_mtt_netdisk_log,从表名可以看出该表是什么业务的,是什么周期粒度的表. (2)怎么查看表结构,表创建语句?怎么查看表有哪些分区? ...

  2. 腾讯技术工程 | 腾讯数据平台部总监刘煜宏:这5大产品平台,展示了腾讯大数据的核心能力...

    12月13日,"2017互联网+大数据高峰论坛"在北京中国大饭店拉开帷幕.来自政府.研究机构及高校.企业的大数据专业人士共聚一堂,以"慧聚数据之力,赋能智慧政企" ...

  3. 腾讯大数据平台,要“没人管”了

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 接入消息量:55万亿 实时计算:65万亿 分析任务:1500万 -- 可以想象吗?这些万亿级的数字,竟是一家企业每天都要处理的数据量. 没错 ...

  4. 腾讯大数据回答2019:鹅厂开源先锋,日均计算量超30万亿,全力打破数据墙

    乾明 发自 腾讯汇  量子位 报道 | 公众号 QbitAI 开源,开源,开源. 这就是腾讯2019年技术领域最直观的变化. 最新代表事件,来自于腾讯首个开源的AI项目Angel,完成3.0版本进化后 ...

  5. 腾讯大数据星火计划--Angel技术沙龙 对外报名正式启动!

    导语:腾讯大数据举办星火计划技术沙龙为广大大数据爱好者提供线下交流活动机会,技术沙龙第一期将于10月13日在深圳腾讯大厦举办,为您揭秘海量机器学习之道与Angel开源背后的故事. 大数据技术在过去10 ...

  6. 荣登2019中国“十佳大数据案例”,腾讯大数据再获国家认可

    5月26日,由工业和信息化部.国家发展和改革委员会.国家互联网信息办公室和贵州省人民政府主办,国家工业信息安全发展研究中心承办的<大数据优秀产品和应用解决方案案例系列丛书>发布会暨数博会& ...

  7. 十年磨一剑 | 《腾讯大数据构建之道》正式出版

    文章来源于"腾讯大数据",作者星火菌 近日,在刚刚出版的<腾讯大数据构建之道>新书中,腾讯首次对外披露了自身大数据核心技术体系架构和海量业务应用实践.作为国内大数据领域 ...

  8. 腾讯大数据总体架构图,对外公开!

    导读:腾讯作为国内体量最大的互联网公司之一,业务涵盖用户日常生活的方方面面,面对如此巨大业务数据量,如果不能对数据进行专业化处理并高效有序地存.管.用,如果不能使数据产生应有的价值,那么数据资产将会成 ...

  9. 腾讯大数据平台构建之道

    点击上方 "大数据肌肉猿"关注, 星标一起成长 点击下方链接,进入高质量学习交流群 今日更新| 1052个转型案例分享-大数据交流群 导读:腾讯作为国内体量最大的互联网公司之一,业 ...

最新文章

  1. centos 7 密码破解 rm -rf 删除恢复
  2. Spring Boot——HTTP访问重定向到HTTPS解决方案
  3. else if mybatis 嵌套_新手如何书写C++代码,远离深度嵌套的if-else
  4. 剑指offer试题(PHP篇一)
  5. python计算机视觉编程——第一章(基本的图像操作和处理)
  6. mysql gtid 主主_mysql GTID主从复制(主库在线,添加新丛库)
  7. Windows系统带你一步一步无脑使用babel
  8. 政府公务办公安全保密邮件系统建设
  9. store.js - 轻松实现本地存储(LocalStorage)
  10. ie浏览器样式兼容写法_浏览器兼容性以及写法
  11. UE4脸部捕捉关键函数使用
  12. oracle 18c 新特性,Oracle 18c新特性测试
  13. Nerv实战 - 京东首页改版小结
  14. 第三集 怪物学院 第二十章
  15. 未连接到互联网代理服务器出现问题,或者地址有误,该如何解决?
  16. VS2019安装教程(C语言)
  17. CCF CSP认证 难度及经历
  18. 喜马拉雅忙着上市,蜻蜓FM忙着融资
  19. 【数学建模常用模型】图论专题
  20. cas:174899-82-2|1-乙基-3-甲基咪唑双(三氟甲磺酰)亚胺|EMIMTFSI

热门文章

  1. python3 爬虫日记(三) 爬取堆糖动态加载网页
  2. mysql5.7导出数据提示--secure-file-priv选项问题的解决方法
  3. 王半仙儿的日记-0007
  4. Unity3D脚本中的Awake()和Start()的本质区别
  5. 小说《肖申克的救赎》的优秀读后感2600字
  6. 嵌入式系统设计--课堂总结(概述)
  7. 交付是一种基本的态度
  8. 利用MAPI实现邮件收发(VC++)
  9. 机器学习 K近邻之KD树 搜索KD树
  10. 网约车中场战事:曹操出行融资数十亿,谁在觊觎龙头位置?