Boosting

博客出于待完善阶段,

 

Boosting 算法是一种加法模型(additive training)

### Boosting算法原理 Boosting是一种集成学习方法,通过结合多个弱学习器来构建强学习器,从而显著提升单一模型的预测性能[^4]。该方法的核心在于迭代训练一系列弱分类器,并赋予不同权重给这些分类器,最终形成一个更强大的综合模型。 #### 初始化阶段 在初始化过程中,所有样本被赋予相同的初始权重。对于含有\(N\)个样本的数据集而言,每个样本的起始权重通常设定为\(\frac{1}{N}\)[^5]。 #### 迭代训练过程 每次迭代都会基于当前加权误差率最小化原则挑选出一个新的弱分类器加入到现有集合中。如果某个特定的学习器对某些样例做出了错误判断,则会在下一轮给予更高重视度;反之亦然。这一机制使得后续生成的学习器更加关注之前难以处理的部分,进而逐步改进整体表现[^1]。 ```python import numpy as np def adaboost_train(X, y, M=10): n_samples, _ = X.shape # Initialize weights to 1/N for each sample. w = np.ones(n_samples) / n_samples models, model_weights = [], [] for m in range(M): clf_m = DecisionTreeClassifier(max_depth=1) # Fit weak learner using weighted samples. clf_m.fit(X, y, sample_weight=w) pred_m = clf_m.predict(X) error_m = sum(w[i] * (pred_m != y).astype(int) for i in range(len(y))) alpha_m = 0.5 * np.log((1-error_m)/(error_m + 1e-8)) # Update the weight of misclassified examples and normalize them so they add up to one again. w *= np.exp(-alpha_m*y*pred_m) w /= np.sum(w) models.append(clf_m) model_weights.append(alpha_m) return models, model_weights ``` #### 组合弱学习器 当所有的弱分类器都经过训练之后,它们会被按照各自的重要性系数线性组合起来构成最终的强大分类器。这个重要性系数反映了各个子模型在整个系统里所占的比例大小,一般由各轮次中的误分比例决定。 ### 应用实例 Boosting广泛应用于各种类型的机器学习任务当中,比如图像识别、自然语言处理等领域内的分类和回归问题。其中最著名的几种变体形式包括AdaBoost、Gradient Boosting以及XGBoost等。特别是后者由于引入了许多优化措施而成为了目前工业界最受欢迎的选择之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值