Bootstrap,Bagging and Random Forest Algorithm

Bootstrap Method:在统计学中,Bootstrap从原始数据中抽取子集,然后分别求取各个子集的统计特征,最终将统计特征合并。例如求取某国人民的平均身高,不可能测量每一个人的身高,但却可以在10个省市,分别招募1000个志愿者来测量并求均值,最终再求取各省市的平均值。

Bagging(Bootstrap Aggregating):应用了 Bootstrap的思想,从Training Set抽取k次subset,分别用来训练k个单独的模型,然后用这k个模型来做预测。最终,如果是Regression问题,则Average k个模型的输出;如果是Classification问题,则进行Majority Vote。

 

Example:Bagged Decision Trees.引用自Springer Nature的文章‘Ensemble methods: bagging and random forests’。我们可以看到,图a中的数据点,是根据抛物线图(虚线)叠加噪音而生成。如果直接采用CART Decision Tree,拟合模型如图a的实线;图b给出了4个Bootstraps分别的拟合图像;图c的蓝线则是将4个Bootstrap进行了平均,更好的还原了抛物线图像。

其中εB是对bags内部数据的差错曲线,而εOOB则是对Out-Of-Bag数据的测评。OOB在这里的作用类似于Cross Validation。

 

Random Forest: 和Bagged Decision Tree的大体结构十分相似,Random Forest也是对Training Set进行k次随机抽样、种树、再求取平均(Majority Vote)。但Random Forest修改了Decision Tree中Greedy Search的部分:Decision Tree在每次分割时,会考虑所有的feature,然后选择最佳分割点;Random Forest为了增加随机性,在分割时使用1/3*D( regression), sqrt(D)(classification)的features来做选择,由此也减少了属于书之间的关联性。

所以说,Bagged Decision Tree只有一个参数,那就是树的数量;而Random Forest却有两个参数:树的数量,以及分割时feature的数量。

转载于:https://www.cnblogs.com/rhyswang/p/9551956.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
BaggingRandom Forest都是基于Bootstrap抽样和集成学习的分类器,它们的主要区别在于: - Bagging是对同一类型的基分类器进行集成,每个基分类器的权重相等,最终的分类结果是基分类器投票结果的简单平均值。 - Random Forest也是基于Bootstrap抽样和集成学习的分类器,但它对基分类器进行了改进。Random Forest在原始数据的随机子集上构建多个决策树,每个决策树是基于随机特征子集进行构建的。最终的分类结果是所有决策树投票结果的简单平均值。 因此,Random Forest是Bagging的一种扩展,它可以通过引入随机特征子集的方式来提高模型的多样性和泛化能力。 在Python中,我们可以使用scikit-learn库中的`RandomForestClassifier`类来构建一个Random Forest分类器,代码如下: ```python # 导入需要的库和数据集 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 构建Random Forest分类器 rfc = RandomForestClassifier(n_estimators=10, random_state=42) # 训练Random Forest分类器 rfc.fit(X_train, y_train) # 预测测试集结果 rfc_y_pred = rfc.predict(X_test) # 输出Random Forest分类器的准确率 print("Random Forest Classifier Accuracy:", rfc.score(X_test, y_test)) ``` 在上面的代码中,我们使用`load_iris()`函数加载鸢尾花数据集,并将其划分为训练集和测试集。然后,我们构建了一个Random Forest分类器,并指定了`n_estimators`参数为10,表示使用10棵决策树进行集成。`random_state`参数指定了随机数生成器的种子,以确保结果的可重复性。 通过`fit()`方法训练Random Forest分类器,并使用`score()`方法计算分类器的准确率,并输出结果。 需要注意的是,Random Forest分类器对于高维数据和大规模数据集表现较好,在某些情况下可能比Bagging分类器更优秀,但是在一些小型数据集上,Bagging分类器可能表现更好。对于不同的数据集和任务,我们需要进行实验比较来确定最优的分类器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值