Ensemble methods(集成方法)
机器学习中的集成方法指结合若干个简单的基模型,最后得到一个相对复杂的预测模型。具体为对不同算法得到的结果通过某种方式集成在一起,或者对相同算法的参数组合在一起得到最后结果。常见的集成方法可分为平均方法(Average methods)和提升方法(Boost methods),本文对这两种方法做些简单介绍,主要对提升方法中的若干问题进行一些总结。
1. Average methods(平均方法)
这里主要以比赛中用到比较多的随机森林(Random Forests)进行介绍。随机森林在python中的sklearn.ensemble目录下,而在R中包名为randomForest。
主要思想是:首先对训练数据集有放回地行采样,再列采样即对特征采样,建立若干决策树。当有新的输入样本时,由这些决策树投票得到最后结果。因为其行列采样都是随机的,因此,一般情况下就算不剪枝也不会出现过拟合。
随机森林分类回归具体算法:
1. for (b = 1:B):
(a) 通过自举法(bootstrap)在训练数据集中获得大小为N的样本Z。
(b) 根据自举法得到的数据建立树 Tb 。对树的每个节点递归地重复下面的步骤,直到到达最小节点数量 nmin :
i. 在p个特征中随机选择m个特征。
ii. 在m个特征中选择最佳分裂特征。
iii. 把该节点分裂为两个子节点。
2. 输出组合树 [Tb]B1 .
预测:对一个新的输入点x
回归: f^Brf(x)=1/B∑Bb=1Tb(x) 。
分类:令 C^b(x) 为第b棵树的分类结果,则 C^rf(x)=多数表决[C^b(x)]B1
2. Boost methods(提升方法)
2.1 Adaboost算法
用于处理二分类问题。基本思想是:通过一系列的迭代,提高那些被前一轮弱分类器错误分类样本的权值,而降低那些被正确分类样本的权值;加大分类误差率小的弱分类器的权值,使其在表决中起较大的作用,减小分类误差率大的弱分类器的权值,使其在表决中起较小的作用。
2.1.1 具体算法:
- 初始化训练数据的权值分布:
D1=(w11,...,w1i,...,w1N),w1i=1/N,i=1,2,...,N - for (m = 1:M):
(a) 根据具有权值分布的训练数据 Dm 训练数据,得到基本分类器:
Gm(x):x→{ −1,+1}
(b) 计算 Gm(x) 在训练数据集上的分类误差率:
errm=∑i=1NwmiI(Gm(xi)≠yi)
(c)计算 Gm(x) 的系数:
αm=12log1−errmerrm
(d) 更新训练数据集的权值分布:
Dm+1=(wm+1,1