Bootstrap sampling

bootstrap可以看作非参Monte Carlo
再次重申非参不是没有参数,非参是无穷维参数空间,是无法想到合适参数模型时的默认模式。
bootstrap看作对样本经验分布作随机数生成,产生模拟样本。
Monte carlo的解释是依赖随机数生成而产生新样本对其进行模拟。bootstrap完全符合这个定义。


作者:陈无左
链接:https://www.zhihu.com/question/22929263/answer/31705696
来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


来简单讲讲Bootstrap,(Monte Carlo法在中文维基上有了还不错的解答,题主可以参考, 蒙地卡羅方法)。

Bootstrap,即“拔靴法”(不知道翻得对不对),是用小样本来估计大样本的统计方法。举个栗子来说明好了,(我不会贴一个举栗子的图片的放心!)

你要统计你们小区里男女比例,可是你全部知道整个小区的人分别是男还是女很麻烦对吧。
于是你搬了个板凳坐在小区门口,花了十五分钟去数,准备了200张小纸条,有一个男的走过去,你就拿出一个小纸条写上“M”,有一个女的过去你就写一个“S”。
最后你回家以后把200张纸条放在茶几上,随机拿出其中的100张,看看几个M,几个S,你一定觉得这并不能代表整个小区对不对。
然后你把这些放回到200张纸条里,再随即抽100张,再做一次统计。
…………
如此反复10次或者更多次,大约就能代表你们整个小区的男女比例了。

你还是觉得不准?没办法,就是因为不能知道准确的样本,所以拿Bootstrap来做模拟而已。


作者:EdisonChen
链接:https://www.zhihu.com/question/22929263/answer/23098749
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Bagging(Bootstrap Aggregating)算法是一种集成学习方法,通过对原始数据集进行自助采样(Bootstrap sampling),构建多个基学习器,最后将这些基学习器的结果进行综合,以提高模型的稳定性和泛化能力。以下是对Bagging算法相关内容的拓展,包含三种前沿技术并保留关键代码。 1. 传统Bagging算法基础代码 Python from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 生成示例数据 X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建基分类器 base_clf = DecisionTreeClassifier() # 创建Bagging分类器 bagging_clf = BaggingClassifier(base_estimator=base_clf, n_estimators=10, random_state=42) # 训练模型 bagging_clf.fit(X_train, y_train) # 预测 y_pred = bagging_clf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"传统Bagging算法准确率: {accuracy}") 2. 前沿技术一:自适应Bagging(Adaptive Bagging) 自适应Bagging算法会根据每个基学习器的性能动态调整样本的权重,使得表现差的基学习器在后续训练中能更多地关注那些被误分类的样本。 Python from sklearn.ensemble import AdaBoostClassifier # 创建自适应Bagging分类器 adaptive_bagging_clf = AdaBoostClassifier(base_estimator=base_clf, n_estimators=10, random_state=42) # 训练模型 adaptive_bagging_clf.fit(X_train, y_train) # 预测 y_pred_adaptive = adaptive_bagging_clf.predict(X_test) # 计算准确率 accuracy_adaptive = accuracy_score(y_test, y_pred_adaptive) print(f"自适应Bagging算法准确率: {accuracy_adaptive}") 3. 前沿技术二:随机子空间Bagging(Random Subspace Bagging) 随机子空间Bagging算法在自助采样的基础上,还对特征进行随机采样,每个基学习器只使用部分特征进行训练,增加了基学习器之间的多样性。 Python from sklearn.ensemble import BaggingClassifier # 创建随机子空间Bagging分类器 random_subspace_bagging_clf = BaggingClassifier(base_estimator=base_clf, n_estimators=10, max_features=0.5, random_state=42) # 训练模型 random_subspace_bagging_clf.fit(X_train, y_train) # 预测 y_pred_random_subspace = random_subspace_bagging_clf.predict(X_test) # 计算准确率 accuracy_random_subspace = accuracy_score(y_test, y_pred_random_subspace) print(f"随机子空间Bagging算法准确率: {accuracy_random_subspace}") 4. 前沿技术三:多核Bagging(Multi - Kernel Bagging) 多核Bagging算法结合了多种核函数,在处理复杂数据时能更好地捕捉数据的不同特征。 Python from sklearn.svm import SVC from sklearn.ensemble import BaggingClassifier # 创建多核基分类器 base_clf_multi_kernel = SVC(kernel='poly') # 创建多核Bagging分类器 multi_kernel_bagging_clf = BaggingClassifier(base_estimator=base_clf_multi_kernel, n_estimators=10, random_state=42) # 训练模型 multi_kernel_bagging_clf.fit(X_train, y_train) # 预测 y_pred_multi_kernel = multi_kernel_bagging_clf.predict(X_test) # 计算准确率 accuracy_multi_kernel = accuracy_score(y_test, y_pred_multi_kernel) print(f"多核Bagging算法准确率: {accuracy_multi_kernel}") 总结 通过上述三种前沿技术,对传统Bagging算法进行了拓展。自适应Bagging能动态调整样本权重,随机子空间Bagging增加了特征的随机性,多核Bagging结合多种核函数,这些方法都在一定程度上提高了模型的性能和泛化能力。 用鸢尾花的数据进行分析
最新发布
12-11
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值