建站快车代理商,上海网站建设 中华企业录,网站设计时间,宁波seo外包优化公司释义
集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式#xff0c;目前的集成学习方法大致可分为两大类#xff1a;
Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本#xff1a;随机森林(random forest)Boosting(个体…释义
集成学习很好的避免了单一学习模型带来的过拟合问题 根据个体学习器的生成方式目前的集成学习方法大致可分为两大类
Bagging(个体学习器间不存在强依赖关系、可同时生成的并行化方法) 流行版本随机森林(random forest)Boosting(个体学习器间存在强依赖关系、必须串行生成的序列化方法) AdaBoost example 选男友: 美女选择择偶对象的时候会问几个闺蜜的建议最后选择一个综合得分最高的一个作为男朋友bagging 追女友: 3个帅哥追同一个美女第1个帅哥失败-(传授经验: 姓名、家庭情况) 第2个帅哥失败-(传授经验: 兴趣爱好、性格特点) 第3个帅哥成功boosting 两者区别
bagging 是一种与 boosting 很类似的技术, 所使用的多个分类器的类型数据量和特征量都是一致的。 bagging 是由不同的分类器1.数据随机化 2.特征随机化经过训练综合得出的出现最多分类结果boosting 是通过调整已有分类器错分的那些数据来获得新的分类器得出目前最优的结果。 bagging 中的分类器权重是相等的而 boosting 中的分类器加权求和所以权重并不相等每个权重代表的是其对应分类器在上一轮迭代中的成功度。
自助采样法(bootstrap sampling)
给定包含m个样本的数据集先随机取出一个样本放入采样集中并记录再把该样本放回初始数据集使得下次采样时该样本仍有可能被选中这样经过m次随机采样操作我们得到含m个样本的采样集初始训练集中有的样本在采样集里多次出现有的则从未出现平均37%没有取到。 这些未取到的样本称为OOB(Out of Bag)可以使用这部分OOB的数据集作为测试集
Bagging的基本流程
基于每个采样集训练出一个基学习器再将这些基学习器进行结合
对分类任务使用简单投票法对回归任务使用简单平均法
随机森林
随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。决策树相当于一个大师通过自己在数据集中学到的知识用于新数据的分类。但是俗话说得好一个诸葛亮玩不过三个臭皮匠。随机森林就是希望构建多个臭皮匠希望最终的分类效果能够超过单个大师的一种算法。
原理
look 数据的随机性化 待选特征的随机化 使得随机森林中的决策树都能够彼此不同提升系统的多样性从而提升分类性能。 数据的随机化: 使得随机森林中的决策树更普遍化一点适合更多的场景。 有放回的准确率在: 70% 以上 无放回的准确率在: 60% 以上 采取有放回的抽样方式 构造子数据集保证不同子集之间的数量级一样不同子集同一子集 之间的元素可以重复 利用子数据集来构建子决策树将这个数据放到每个子决策树中每个子决策树输出一个结果。 然后统计子决策树的投票结果得到最终的分类 就是 随机森林的输出结果。
RF的简单例子
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
data load_iris()
X data.data # 特征
y data.target # 目标# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 创建随机森林分类器
clf RandomForestClassifier(n_estimators100, random_state42)# 训练分类器
clf.fit(X_train, y_train)# 使用分类器进行预测
y_pred clf.predict(X_test)# 计算准确率
accuracy accuracy_score(y_test, y_pred)
print(准确率:, accuracy)
AdaBoost
Adaboost的原理 以分类为例Adaboost算法通过提高前一轮分类器分类错误的样本的权值而降低那些被分类正确的样本的权值。 需要注意的是由于每个子模型要使用全部的数据集进行训练因此 Adaboost算法中没有oob数据集在使用 Adaboost 算法前需要划分数据集train_test_split。 相当于准备个错题本花更多的时间处理错题 在使用Adaboost与决策树结合解决分类问题时使用AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier
ada_clf AdaBoostClassifier(DecisionTreeClassifier(max_depth2), n_estimators500)
ada_clf.fit(X_train, y_train)
ada_clf.score(X_test, y_test)同样的简单例子
from sklearn.datasets import load_iris
from sklearn.ensemble import AdaBoostClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
data load_iris()
X data.data # 特征
y data.target # 目标# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)# 创建 AdaBoost 分类器基分类器为决策树
clf AdaBoostClassifier(n_estimators50, random_state42)# 训练分类器
clf.fit(X_train, y_train)# 使用分类器进行预测
y_pred clf.predict(X_test)# 计算准确率
accuracy accuracy_score(y_test, y_pred)
print(准确率:, accuracy)