学习 ensemble learning 要如何开始呢?

关注者
722
被浏览
25679

14 个回答

首先要明白集成学习是什么。集成学习通过训练多个分类器,然后把这些分类器组合起来,以达到更好的预测性能。
然后就是有什么好的集成学习算法。集成学习算法主要有Boosting和Bagging两种类型。

Boosting的意思是这样,他通过迭代地训练一系列的分类器,每个分类器采用的样本的选择方式都和上一轮的学习结果有关。例如在AdaBoost中,之前分类错误的样本有较高的可能性被选到,在之前分类正确的样本有较小的概率被选到。就像你在背单词,你今天总会选择前面几天背不下来的单词,Boosting也会选择前面轮数没学下来的样本。
这个类别下面的主要算法是AdaBoostGBDT

另一个类别是Bagging,每个分类器的样本按这样的方式产生:每个分类器都随机从原样本中做有放回的采样,然后分别在这些采样后的样本上训练分类器,然后再把这些分类器组合起来。简单的多数投票一般就可以。
这个类别有个非常牛逼的算法叫Random Forest,它的每个基分类器都是一棵决策树,如果你仔细学习你会发现它的每棵树和基本的决策树的不同,非常神奇的算法。

除此之外还有一类叫做Hybrid的算法。它通过产生几种不同的分类器,然后再把它们集成起来。例如你可以训练一个SVM,一棵决策树,一个kNN...再把它们组合起来。

集成学习有一个重要的概念叫Diversity,也就是说每个分类器要长得尽量不一样。就像一个团队,有的人擅长策划,有人擅长拉赞助,有人擅长执行,这样才是一个牛逼的团队。集成学习中每个分类器也要有一定差异,这样才是一个好的集成。你学习集成学习的时候注意一下这点。

我也不知道你现在是什么基础,那就你如果要找资料你可以搜索上面加黑的几个算法,GBDT和Random Forest都是在各种竞赛大放异彩的算法了。如果找不到合适的资料再来找我。如果想上手试一下ensemble learning的话,Python的sklearn,Java的Weka下面都实现的基本的集成学习算法,你可以先调用着玩玩儿。

南京大学周志华老师有一本书,Ensemble Methods: Foundations and Algorithms (Chapman & Hall/Crc Machine Learnig & Pattern Recognition): Zhi-Hua Zhou: 9781439830031: Amazon.com: Books
你可以找来看看。讲得很全,但程度稍高,有很多理论的东西。
除了周志华老师的Ensemble Methods: Foundations and Algorithms之外,林軒田老师(Hsuan-Tien Lin)在Coursera上的機器學習技法(coursera.org/course/ntu)也有详细讲解Boosting和Bagging的模型。

Course Syllabus
Each of the following items correspond to approximately one hour of video lecture. [以下的每個小項目對應到約一小時的線上課程]

Embedding Numerous Features [嵌入大量的特徵]
-- Linear Support Vector Machine [線性支持向量機]
-- Dual Support Vector Machine [對偶支持向量機]
-- Kernel Support Vector Machine [核型支持向量機]
-- Soft-Margin Support Vector Machine [軟式支持向量機]
-- Kernel Logistic Regression [核型羅吉斯迴歸]
-- Support Vector Regression [支持向量迴歸]

Combining Predictive Features [融合預測性的特徵]
-- Bootstrap Aggregation [自助聚合法]
-- Adaptive Boosting [漸次提昇法]
-- Decision Tree [決策樹]
-- Random Forest [隨機森林]
-- Gradient Boosted Decision Tree [梯度提昇決策樹]

Distilling Hidden Features [萃取隱藏的特徵]
-- Neural Network [類神經網路]
-- Deep Learning [深度學習]
-- Radial Basis Function Network [逕向基函數網路]
-- Matrix Factorization [矩陣分解]

Summary [總結]