集成学习投票法实践案例

Posted 肖永威

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成学习投票法实践案例相关的知识,希望对你有一定的参考价值。

通常情况下由一群人做出的决策比由该群体中的任何一个成员做出的决策会产生更好的结果,这被称为群体的智慧。集成学习(Ensemble Learning)类似于这种思想,集成学习结合了来自多个模型的预测,旨在比集成该学习器的任何成员表现得更好,从而提升预测模型的准确率。

单个学习器要么容易欠拟合要么容易过拟合,为了获得泛化性能优良的学习器,可以训练多个个体学习器,通过一定的结合策略,最终形成一个强学习器。这种集成多个个体学习器的方法称为集成学习(ensemble learning)。

集成学习通过组合多种模型来改善机器学习的结果,与单一的模型相比,这种方法允许产生更好的预测性能。

集成学习属于元算法,即结合数个“好而不同”的机器学习技术,形成一个预测模型,以此来降方差(bagging),减偏差(boosting),提升预测准确性(stacking)。

1. 集成学习投票法

投票法(voting)是集成学习⾥⾯针对分类问题的⼀种结合策略。是⼀种遵循少数服从多数原则的集成学习模型,通过多个模型的集成降低⽅差,从⽽提⾼模型的鲁棒性 (算法对数据变化的容忍度有多⾼)。在理想情况下,投票法的预测效果应当优于任何⼀个基模型的预测效果。

投票法在回归模型与分类模型上均可使⽤:

  • 回归投票法:预测结果是所有模型预测结果的平均值。
  • 分类投票法:预测结果是所有模型种出现最多的预测结果

分类投票法又可以被划分为硬投票与软投票:

  • 硬投票:预测结果是所有投票结果最多出现的类(众数)。
  • 软投票:预测结果是所有投票结果中概率加和最大的类(平均概率)。

下面我们使用一个例子说明硬投票:

对于某个样本:

  • 模型 1 的预测结果是 类别 A
  • 模型 2 的预测结果是 类别 B
  • 模型 3 的预测结果是 类别 B

有2/3的模型预测结果是B,因此硬投票法的预测结果是B

同样的例子说明软投票:

对于某个样本:

  • 模型 1 的预测结果是 类别 A 的概率为 99%
  • 模型 2 的预测结果是 类别 A 的概率为 49%
  • 模型 3 的预测结果是 类别 A 的概率为 49%

最终对于类别A的预测概率的平均是 (99 + 49 + 49) / 3 = 65.67%,因此软投票法的预测结果是A。

从上面我们是可以看出相对于硬投票,soft考虑到了预测概率这一额外的信息,因此可以得出比hard更加准确的预测结果。

2. 如何用好投票法

在投票法中,我们还需要考虑到不同的基模型可能产生的影响。理论上,基模型可以是任何已被训练好的模型。

2.1. 使用条件

在实际应用上,想要投票法产生较好的结果,需要满足两个条件:

  • 基模型之间的效果不能差别过大。
    当某个基模型相对于其他基模型效果过差时,该模型很可能成为噪声。
  • 基模型之间应该有较小的同质性。
    例如在基模型预测效果近似的情况下,基于树模型与线性模型的投票,往往优于两个树模型或两个线性模型。

2.2. 使用场景

  • 当投票合集中使用的模型能预测出清晰的类别标签时,适合使用硬投票。
  • 当投票集合中使用的模型能预测类别的概率时,适合使用软投票。
    软投票同样可以用于那些本身并不预测类成员概率的模型,只要他们可以输出类似于概率的预测分数值(例如支持向量机、k-最近邻和决策树)。

2.3. 使用限制

投票法的局限性在于,它对所有模型的处理是一样的,这意味着所有模型对预测的贡献是一样的。如果一些模型在某些情况下很好,而在其他情况下很差,这是使用投票法时需要考虑到的一个问题。

2.4. 投票法的实现方法

Sklearn中提供了 VotingRegressor 与 VotingClassifier 两个投票方法。 这两种模型的操作方式相同,并采用相同的参数。

class sklearn.ensemble.VotingClassifier(estimators, *, voting=‘hard’, weights=None, n_jobs=None, flatten_transform=True, verbose=False)
针对非拟合估计器的Soft Voting/Majority规则分类器。

参数说明
estimatorslist of (str, estimator) tuples。由基模型的名字和基模型组成的元组
voting‘hard’, ‘soft’, default=’hard’。其中"hard":多数决定投票,“soft”:基于预测概率总和最大值的投票
weightsarray-like of shape (n_classifiers,), default=None。权重序列(float或int),用于在平均(soft voting)之前对预测的类标签(hard voting)或类概率的出现进行加权。如果没有,使用统一的权重。
n_jobsint, default=None。所有并行estimators fit作业数量,None表示是1。-1表示使用所有处理器。
flatten_transformbool, default=Tru。如果voting= 'soft’且flatten_transform=True, 转化方法返回大小为(n_samples, n_classifiers * n_classes)的矩阵。如果flat _transform=False,它返回(n_classifiers, n_samples, n_classes)。
verbosebool, default=Fals。如果为True,拟合时经过的时间将在拟合完成时打印出来。

3. 集成模型投票设计

算法模型使用XGBoost、随机森林、多层神经网络等三种,训练集抽样出三个训练集。

  • 训练集
    通过调整限定条件,随机抽样多个(初步拟定3个)训练集。

  • 算法使用XGBoost、随机森林、多层神经网络等三种

  • 训练基模型
    每套训练集,使用三种算法学习训练出3个基模型,如果使用三套训练集则将形成9个基模型。

  • 投票设计
    使用Sklearn中提供的 VotingClassifier 投票方法,或者,采用随机森林区分基模型权重方法。

参考:
[1]. 文采兰花正谊00. 机器学习(中)-投票法原理+思路+案例. 百度文库
[2]. LKID体. 集成学习任务七和八、投票法与bagging学习.CSDN博客. 2021.04
[3]. 小米n416. 集成学习——投票法、bagging. CSDN博客. 2021.04
[4]. 少年阿斌. 集成学习的不二法门bagging、boosting和三大法宝<结合策略>平均法,投票法和学习法(stacking). 博客园. 2019.10

以上是关于集成学习投票法实践案例的主要内容,如果未能解决你的问题,请参考以下文章

集成学习投票法实践案例

深度学习应用技巧4-模型融合:投票法加权平均法集成模型法

集成学习voting Classifier在sklearn中的实现

[转]使用sklearn进行集成学习——实践

集成学习与随机森林

集成学习与随机森林