Ensemble

GB与HGB:

梯度提升的计算专注于单个数据,而直方图梯度提升是先把连续的数据特征分箱,然后在分箱后的特征上构建模型,这样减少理论算法复杂度和内存使用,所以更加适用的大的数据集。

梯度提升的思想在于,按照顺序学习,通过逐步添加弱学习器来最小化损失函数,后续的模型专注于怎么减少前一个模型的残差。

但在有的情况下即使是在小量数据集上,HGB的表现也可能会更好,这可能与数据随机性或者数据内部结构有关,但通常情况下,HGB更适合用于大数据集。

对于GB,在梯度提升算法中,为每个类别都构建独立的模型来估计该类别的概率,所以对于一个n分类的任务,每次需要构建n棵树。在每轮迭代中,每棵树负责预测其对应类别的残差,以这种方式来逐步改进该模型的效果。所以如果总共进行了m论梯度提升,总共需要m*n棵树,这对于计算的要求是巨大的,所以对于类别过多的分类任务,推荐使用HGB。

RF:

对于随机森林,其主要思想是:每个子树在随机的数据子集上进行训练,预测的最后结果通过平均或者回归多棵子树的结果或者采用vote来得出。

subsampling:

这是梯度提升算法中的一个参数用于控制训练的数据集大小。可以避免过拟合,增加数据的随机性以及减少训练时间。如果要使用类似的思想应用与特征上,可以对max_features进行设置。

ExtraTrees:

超随机树也叫极端随机森林,与随机森林比较其特点上在每个分裂点上是随机选择的,增加了更大的随机性和泛化性。

Bagging meta-estimator:

Bagging 元估计器主要是通过结合多个模型来提高机器学习算法的稳定性和准确性。

主要有:

Pasting:不同的模型在不同的数据子集上训练

Bagging:通过在有放回的方法上抽取形成的多个数据集上进行训练(自举采样)

Ranom Subsaces:在不同的特征子集上进行训练

Ranom Patches:结合Pasting和Random Subspecies,在具有不同特征和数据的自己上训练不同的模型

以上多个方法的目的就在于增加模型的泛化性和随机性。

Stacked generalization:

堆叠泛化的思想在于先在训练数据上训练一些初级模型,然后在用这些初级模型进行预测,然后把这些初级模型预测的结果作为次级模型的输入,然后再训练次级模型。

AdaBoost:

自适应提升,主要是在样本中赋予权重,对于预测错的样本就增加其权重,以便在下一个迭代过程中加大解决这个预测错误问题的力度,然后通过不断迭代来提升效果。

梯度提升需要计算当前模型的残差并通过梯度下降的方法来优化下一步的训练,所有所比较复杂适合较为复杂的学习器,而对于AdaBoost是通过根据预测效果不断改变错误样本的权重来优化,但这容易受噪声数据影响进而导致过拟合。

### 网络集成方法在网络训练中的应用 网络集成方法通过组合多个模型的结果来提高预测性能和稳定性。这种方法特别适用于减少单一模型可能存在的偏差或方差问题[^1]。 #### 集成学习的主要类型 常见的集成策略分为两大类: - **Bagging (Bootstrap Aggregating)**: 通过对数据集的不同子样本进行多次采样并分别训练独立的基础估计器,最后汇总这些基础估计器的输出作为最终结果。随机森林就是一种基于决策树的bagging算法实例。 - **Boosting**: 这种技术按顺序构建一系列弱分类器,在每一轮迭代过程中更加关注之前被错误分类的数据点。AdaBoost 和 Gradient Boosting 是两种流行的 boosting 方法。 对于神经网络而言,可以采用类似的思路创建更强大的集成架构。例如,可以通过调整超参数、改变初始化权重等方式生成多样化的个体网络成员;也可以利用不同的损失函数或者正则化项让各个组件之间保持差异性。 #### 实现简单的神经网络集成 下面是一个简单实现多层感知机(MLP)集成的例子: ```python from sklearn.neural_network import MLPClassifier from sklearn.ensemble import VotingClassifier import numpy as np # 定义三个不同配置的MLP分类器 clf1 = MLPClassifier(hidden_layer_sizes=(50,), max_iter=100, random_state=1) clf2 = MLPClassifier(hidden_layer_sizes=(75, 25), max_iter=100, random_state=2) clf3 = MLPClassifier(hidden_layer_sizes=(100,), max_iter=100, random_state=3) # 使用投票机制将它们结合起来形成一个更强壮的模型 ensemble_clf = VotingClassifier(estimators=[ ('mlp1', clf1), ('mlp2', clf2), ('mlp3', clf3)], voting='soft') X_train = np.array([[...], [...]]) # 训练特征矩阵 y_train = np.array([...]) # 对应标签向量 # 拟合整个集成到训练数据上 ensemble_clf.fit(X_train, y_train) ``` 上述代码片段展示了如何使用 `VotingClassifier` 来组合几个具有不同结构设置的多层感知机(即全连接前馈神经网络)。这里选择了软投票方式,意味着每个基分类器会给出概率分布而不是硬类别标记,从而使得整体表现更为平滑可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值