前言: 在传统分类器例如(SVM,LDA,PLDA)等算法逐渐趋近完善的情况下。如何进一步提高系统性能?
近邻算法能够在这些分类器走到90步的时候,能再push你往前走5步(indirect impore),即95步。
一、什么是近邻算法。
主要目的是通过找到目的类的邻近点(也就是混淆点)然后将其与目的类的点进行操作。
目前我所看到的操作分为两类。
1.对目的类每个近邻点和目的类每个点度量关系
2.对目的类近邻点中心和目的类中心度量关系
二、如何求近邻点
如图所示。根据k近邻算法描述(统计学习方法,李航)一般用距离度量(欧式、马氏、余弦等)
三、目前疑惑
到底多少个近邻点对于System的提高是有助的?(欢迎大神和我讨论...最近一直在困扰)
书中所说:k值的选择会对近邻法的结果产生重大影响。
如果选择较小的k值,就相当于用较小的领域中的训练实例进行预测,"学习"的近似误差会减小,只有与输入实例较近(相似)的训练实例才会对预测结果起作用。
但缺点是"学习"的估计误差会增大,预测结果会对近邻的实例点非常敏感,如果邻近的实例点恰恰是噪声,预测就会出错。
换句话说,k值的减少就意味着整体模型变得复杂,容易发生过拟合。
如果选择较大的k值,就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时与输入实例较远(不相似的)训练实例也会对预测起作用,使预测发生错误。k值的增大就意味着模型变得简单。
如果k=N,那么无论输入实例是什么,都将简单地预测它属于在训练实例中最多的类。这时,模型过于简单,完全忽略训练实例中大量有用信息,是不可取的。