虽然有很多的机器学习方法,但从投票角度来看仍然不够多。所以需要创建更多的子模型,并且子模型之间不能一致,必须要有差异。 如何创造这种差异性呢?可以每个子模型只看一部分的数据。 比如一共有五百个数据,每个子模型只看其中的100个数据。
假设每个子模型有51%的准确率;
假如我们只有一个子模型,那么整体准确率为:51%; 假如我们有三个子模型,那么整体准确率为:
假如我们有500个子模型,并且有251个子模型预测对结果(251个),那么整体准确率为:
假如子模型的准确度更高一点,能达到60%: 并且有251个子模型预测对结果(251个),那么整体准确率为:
在取样中,有放回取样和不放回取样两种方式。前者被称为Bagging,后者被称为Pasting。Bagging在实际应用中更常见。
sklearn中的使用:
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
bagging_clf = BaggingClassifier(DecisionTreeClassifier(), n_estimators=500,
max_samples=100, bootstrap=True)
# n_estimators是集成多少个tree; bootstrap是否放回取样
bagging_clf.fit(X_train, y_train)
bagging_clf.score(X_test, y_test)
【以上是学习自liuyubobobo的课程】