加权投票法是什么?让表现更好的模型说话更有分量
加权投票法(Weighted Voting)是集成学习中把多个模型的预测结果组合起来的一种方法。与每个模型“一人一票”的简单投票不同,加权投票为每个模型分配一个权重,表现更好、更可靠的模型权重更高,它的意见在最终的决定中占更大的分量。
为什么要加权
在集成学习中,我们训练多个模型,把它们的预测组合起来,通常能得到比任何单个模型都更好的效果。最简单的组合方式是多数投票:每个模型投一票,得票最多的类别就是最终结果。但这种方式默认所有模型的水平都一样。现实中,不同模型的能力往往有高有低:比如一个准确率 95% 的模型和一个准确率只有 70% 的模型,如果让它们的投票同等重要,就浪费了好模型提供的信息。这就像一个评审团中既有经验丰富的专家,也有刚入门的新手,让专家的意见更有分量往往更合理。
加权投票是怎么做的
加权投票可以作用在两种不同的输出上。加权硬投票:每个模型给出一个类别,各个类别的得分等于投给它的所有模型的权重之和,得分最高的类别胜出。比如三个模型的权重分别是 0.5、0.3 和 0.2,前两个模型投给“猫”,第三个投给“狗”,那么猫得 0.8 分、狗得 0.2 分,结果是猫。加权软投票:每个模型给出属于各个类别的概率,按权重对这些概率进行加权平均,再选择平均概率最高的类别。软投票利用了模型对自己预测有多大把握的信息,通常效果更好,但要求各个模型给出的概率比较可靠。对于回归问题,也可以对各个模型预测的数值进行加权平均。
权重怎么确定
根据验证集上的表现:最常用的方法是让各个模型在一个单独的验证集上进行测试,表现越好的模型分配越大的权重,比如直接把准确率作为权重,或者经过某种换算。需要注意不能用训练集上的表现来确定权重,因为模型在训练集上的表现往往过于乐观。通过优化来求解:把权重当作需要学习的参数,在验证集上搜索能让集成效果最好的一组权重。如果更进一步,用一个新的模型来学习如何组合各个模型的输出,就变成了堆叠集成(Stacking)。在提升算法中自动计算:比如 AdaBoost 算法在训练每一个弱分类器之后,会根据它的加权错误率计算出它的权重,错误率越低的弱分类器权重越大,最终的强分类器就是所有弱分类器的加权投票。
需要注意的问题
如果验证集太小,根据它计算出的权重可能并不可靠,反而让集成的效果变差,这种情况下简单的等权投票有时更加稳健。另外,集成学习的效果不仅取决于各个模型的水平,还取决于它们之间的差异:如果几个高权重的模型犯的错误都一样,集成就无法起到相互弥补的作用。