1. 引言

在机器学习中,集成方法(Ensemble Methods)是一种通过组合多个分类器来提升预测准确率的策略。

本文将重点讲解两种常用的集成方法:硬投票(Hard Voting)软投票(Soft Voting),并对比它们的原理、适用场景以及优缺点。适合有一定机器学习基础的开发者或数据科学家作为参考。


2. 集成分类器概述

传统的机器学习建模方法通常是使用全部数据训练一个单一的分类器。

然而,每种分类器模型都对数据分布有一定的假设,其性能也依赖于这些假设是否成立。即使使用同一种模型,训练数据的不同子集也可能导致性能差异。

为了解决这个问题,我们可以训练多个分类器,并将它们的预测结果进行融合。这种方式通常可以提升模型整体表现,但代价是增加了计算资源的消耗。

集成方法的核心思想是:“众人拾柴火焰高” —— 多个模型的组合往往比单个模型表现更好。


3. 硬投票(Hard Voting)

硬投票的基本思想是:

✅ 每个基分类器输出一个类别标签
✅ 最终预测结果为所有分类器预测结果的众数

举个例子:

  • 有三个分类器:f₁(x) = 1f₂(x) = 1f₃(x) = 0
  • 硬投票的结果就是 1,因为它在三个结果中出现次数最多

⚠️ 注意:最终结果不一定是“多数派”,在多分类问题中,可能没有一个类别获得多数票。


4. 软投票(Soft Voting)

软投票与硬投票的核心区别在于:它不是直接使用类别标签,而是使用每个分类器输出的概率或置信度分数

4.1 二分类场景

以二分类为例:

  • 逻辑回归(Logistic Regression)输出的是某个样本属于类别1的概率
  • SVM 输出的是距离分类超平面的带符号距离(也可以转换为概率)

软投票的流程是:

✅ 每个分类器输出一个概率值
✅ 对这些概率取平均值(或其它聚合方式)
✅ 如果平均值大于阈值(如 0.5),则判定为类别1,否则为类别0

举个例子:

  • f₁(x) = 0.8f₂(x) = 0.51f₃(x) = 0.1
  • 平均概率:(0.8 + 0.51 + 0.1) / 3 = 0.47
  • 因为 0.47 < 0.5,所以软投票结果为 0

⚠️ 与前面硬投票的例子相比,结果不同,说明软投票更注重模型的“置信度”。

4.2 是否只能使用平均值?

虽然通常使用平均值来聚合概率,但也可以使用中位数(median),尤其是在:

  • 存在极端值(outliers)时
  • 某些模型输出明显偏离其它模型

✅ 中位数对异常值更鲁棒,能更好反映整体趋势

⚠️ 但中位数并非总是更优选择。例如:

  • 有两个模型非常确定某个样本不属于类别1(概率接近0)
  • 其余模型都略高于0.5

在这种情况下,可能更应该相信那两个“高度自信”的模型,而不是取平均或中位数。

4.3 多分类场景

在多分类问题中,每个分类器输出一个概率向量,例如:

f_1(x) = 
\begin{bmatrix}
0.71 \\
0.09 \\
0.05 \\
0.15
\end{bmatrix},\quad
f_2(x) = 
\begin{bmatrix}
0.43 \\
0.25 \\
0.20 \\
0.12
\end{bmatrix},\quad
f_3(x) = 
\begin{bmatrix}
0.51 \\
0.29 \\
0.17 \\
0.03
\end{bmatrix}

软投票的处理方式是:

✅ 对每个类别的概率进行逐元素平均:

\frac{1}{3} \begin{bmatrix}
0.71 + 0.43 + 0.51 \\
0.09 + 0.25 + 0.29 \\
0.05 + 0.20 + 0.17 \\
0.15 + 0.12 + 0.03
\end{bmatrix}
=
\begin{bmatrix}
\boldsymbol{0.55} \\
0.21 \\
0.14 \\
0.10
\end{bmatrix}

最终结果为概率最高的类别,即类别1。


5. 总结

方法 输入类型 输出方式 适用场景
硬投票 类别标签 众数(多数投票) 模型之间差异大,置信度不可靠
软投票 概率或置信度分数 平均或中位数 + 阈值判断 模型输出概率较稳定,可信

硬投票适用于模型之间差异较大、但预测结果较稳定的情况
软投票适用于模型输出概率比较一致、可以信任其置信度的场景

📌 小贴士:在实际项目中,建议先尝试软投票,尤其是使用像逻辑回归、随机森林等本身输出概率的模型时效果更佳。如果某些模型无法输出概率,或者概率不可靠,可以考虑使用硬投票。



原始标题:Hard vs. Soft Voting Classifiers

« 上一篇: 什么是 Wardriving?
» 下一篇: 函数分解法详解