1、bagging(bootstrap aggregating 自助聚集)
比如做回答问题,答案是真假,让每个人都回答问题,然后投票,选择票数最多的就是答案
boosting(提升算法)adaboost
比如做回答问题,答案是真假,让每个人回答自己擅长的问题,即回答的是整体问卷的一部分,然后综合答案
决策树是一个“弱”学习器。实际上,大多数集成方法都默认使用sklearn中的决策树。
找到一个拟合能力好的机器学习模型要看两个相互竞争的变量:偏差 和 方差 。
偏差:当一个模型有高偏差,这意味它弹性差(欠拟合),不能很好拟合数据。通常具有高偏差的算法的例子是线性回归。
方差:当模型有高方差,这意味它会剧烈变化(过拟合),以满足数据集中每个点的需求。决策树作为一种高方差算法,倾向于将每个点尽可能分割成一个独立的分支。这是高方差、低偏差算法的一个特点:它们非常灵活,可以精确地拟合所见的任何数据。
将随机性引入集成
另一种用于改进集成算法的方法是先将随机性引入高方差算法,再进行集成。随机性的引入消除了这些算法的过拟合(或直接拟合数据)的趋势。引入随机性的方法主要有两种:
1.数据的自助采样法 - 也就是说,对数据先使用自助采样(或有放回的采样),再用算法拟合采样数据。
2.特征子集法 - 在决策树的每次分支中,或在使用集成的每个算法时,只使用全部可用特征的子集。
实际上,这是我们将看到的下一个算法中使用的两个随机组件,称为随机森林。随机森林就是随机选择多个列,当新用户推荐时,看每个决策树推荐的是什么,然后票数多的,作为推荐的
>>> from sklearn.ensemble import AdaBoostClassifier
>>> model = AdaBoostClassifier()
>>> model.fit(x_train, y_train)
>>> model.predict(x_test)
超参数
当我们定义模型时,我们可以确定超参数。在实际操作中,最常见的超参数为:
base_estimator:弱学习器使用的模型(切勿忘记导入该模型)。
n_estimators:使用的弱学习器的最大数量。
比如,在下面的例子中,我们定义了一个模型,它使用 max_depth 为 2 的决策树作为弱学习器,并且它允许的弱学习器的最大数量为 4。
>>> from sklearn.tree import DecisionTreeClassifier
>>> model = AdaBoostClassifier(base_estimator = DecisionTreeClassifier(max_depth=2), n_estimators = 4)
在本节课,你学习了集成算法中的许多常用技术。在开始研究这些技术之前,你看到两个需要权衡的变量偏差和方差。
高偏差,低方差 模型不够灵活,常会欠拟合。线性模型属于这类模型。
高方差,低偏差 模型因为太灵活,往往会过拟合。决策树属于这类模型。
集成算法
为了能同时对方差和偏差做优化,我们采用集成算法。集成方法已成为在Kaggle比赛上最流行的方法之一,并在现实行业中广泛使用。
有两种随机化技术可以防止过拟合:
数据的自助采样法 - 也就是说,对数据先使用自助采样(或有放回的采样),再用算法拟合采样数据。
特征子集法 - 在决策树的每次分支中,或在使用集成的每个算法时,只使用全部可用特征的子集。
技术
你在本课程中看到了许多集成方法,包括:
Bagging分类器
RandomForest分类器
AdaBoost分类器