机器学习中如何融合多种特征或分类方法

2020-05-06  本文已影响0人  vieo

机器学习中如何融合多种特征或分类方法? - 微调的回答 - 知乎
https://www.zhihu.com/question/24598447/answer/383717513

我们的目的是构造尽量多个不同的子模型,但我们只有这么多数据,那么常见的构造方法如下:

1. 选用不同类型的分类器,比如逻辑回归、k近邻、支持向量机,在整个X上进行训练。此时的模型的多样性取决于子模型对于数据不同的表达能力,也就是逻辑回归、k近邻、支持向量机之间的不同,它们对于数据的假设、表示抽取能力都有差异。代表算法:stacking

2. 选用同类型的分类器,但使用不同的参数,如对k近邻使用不同的k值,在整个X上进行训练。此时模型的多样性取决于“不同超参数在同一模型上的差异”所决定。从某个角度看,也可以理解为“不同类型的分类器”,和1类似。咋这种情况下,不难看出参数差异所带来的区别远小于模型间的差异,k=1可能和k=3的差别不大,因为本质模型对于数据的假设是一样的。

3. 选用相同的分类器,但在不同的训练集上进行训练。比如先把X分成m份样本(可能存在重复),再在m个样本上单独训练子模型。不难看出,此时的差异性来源于数据的差异性。容易发现,如果n本身很小(小样本)且想要划分出m份子样本(使用采样sampling),那么子样本就会高度重复,因此多样性就打了折扣。但如果每个子样本都很小,模型无法学到数据,表现很差,准确率很低。这是“准确性与多样性的取舍”的一个具体实例。代表算法:bagging。

4. 使用相同的分类器,但在不同特征上进行训练。我们的训练数据有d个特征,我们可以构造m个子模型,每次随机从d个特征中选取例如一部分特征(一般>1/2d)进行训练。同理,此时的多样性来源于数据的差异性。这样的做法是考虑在不同的超空间(hyperspace)上,模型有不同的泛化误差,最终融合可以得到互补的效果。代表算法:feature bagging。

而我们常见的boosting是顺序模型,它的多样性来自于子模型对于不同样本所赋予的权重上的差异,从某个角度上看其实可以归类到方法2中,暂且不表。

虽然我们只列了这四种增强多样性的方法,但事实上它们之间还可以组合使用,比如:

  1. 不同的分类器+不同的子样本(方法1+3)
  2. 不同分类器+不同的特征(方法1+4)
  3. 不同子样本+不同特征(方法3+4)
  4. ...

我们因此发现,构造子模型就已经非常复杂了,融合模型有无数种组合方式,没有唯一正确的方法融合的底线就是尽量保持“准确性”和“多样性”间的平衡。比如不同分类器+不同特征+不同样本虽然会有很高的差异性,但因为数据量有限,每个模型都无法达到充分训练,准确度很低,导致最终模型的效果很差。因此我们特别注意,手动融合模型时一般很少构造大量的弱分类器,而是精挑细选少量的强模型进行融合。具体请参看「融合」机器学习模型:一种提升预测能力的方法中的基本的融合方法。

回归到这个问题上,选用什么方法取决于(1)可用的模型 (2)可调的参数 (3)数据的大小 (4)特征数 (5)能够承受的运算开销。手动构造融合模型时,建议优先考虑准确性,再考虑多样性。有两个框架可能对于手动融合模型比较有帮助,可以参考:

上一篇 下一篇

猜你喜欢

热点阅读