简介
Bagging, Boosting 和 Stacking
Bagging(Bootstrap汇总)是一种集成方法。首先,我们创建随机训练数据集样本(训练数据集的子集)。然后我们为每个样本建立分类器。最后,这些多分类器的结果将结合起来,使用平均或多数投票。Bagging有助于降低方差。
Boosting提供了预测模块的连续学习功能。第一个预测模块从整个数据集上学习,下一个预测模块在前一个的性能基础上在训练数据集上学习。首先对原始数据集进行分类,并给每个观测给予同样的权重。如果第一个学习模块错误预测了类,那么将会赋予错误分类观测较高的权重。这个过程将反复迭代,不断添加分类学习模块,直到达到模型数量或者某个准确度。Boosting有比Bagging更好的预测精准度,但它有时也会过度拟合训练数据。
Stacking工作分为两个阶段。首先,我们使用多个基础分类器来预测分类。然后,一个新的学习模块与它们的预测结果结合起来,来降低泛化误差。
AdaBoost( 待更新)
随机森林
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而”Random Forests”是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的”Bootstrap aggregating”想法和Ho的”random subspace method” 以建造决策树的集合。
算法:
用N来表示训练用例(样本)的个数,M表示特征数目。
1. 输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
2. 对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
3. 每棵树都会完整成长而不会剪枝(Pruning,这有可能在建完一棵正常树状分类器后会被采用)。
优点:
随机森林的优点有:
- 对于很多种数据,它可以产生高准确度的分类器。 它可以处理大量的输入变量。 它可以在决定类别时,评估变量的重要性。
- 在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计。
- 它包含一个好方法可以估计丢失的数据,并且,如果有很大一部分的数据丢失,仍可以维持准确度。 它提供一个实验方法,可以去侦测variable interactions。 对于不平衡的分类数据集来说,它可以平衡误差。
- 它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将数据可视化非常有用。
- 使用上述。它可被延伸应用在未标记的数据上,这类数据通常是使用非监督式聚类。也可侦测偏离者和观看数据。 学习过程是很快速的。
缺点:
1、随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟
2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
XGBOOST
xgboost 的全称是 eXtreme Gradient Boosting。正如其名,它是 Gradient Boosting Machine 的一个 c++ 实现,作者为正在华盛顿大学研究机器学习的大牛陈天奇。他在研究中深感自己受制于现有库的计算速度和精度,因此在一年前开始着手搭建 xgboost 项目,并在去年夏天逐渐成型。xgboost 最大的特点在于,它能够自动利用 CPU 的多线程进行并行,同时在算法上加以改进提高了精度。它的处女秀是 Kaggle 的希格斯子信号识别竞赛,因为出众的效率与较高的预测准确度在比赛论坛中引起了参赛选手的广泛关注,在 1700 多支队伍的激烈竞争中占有一席之地。随着它在 Kaggle 社区知名度的提高,最近也有队伍借助 xgboost 在比赛中夺得第一。
算法
目标函数:
我们要学习的是那些函数