KNN补充:算法
一、K值设定为多大?性能
k过小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。学习
(对距离加权,能够下降k值设定的影响)测试
k值一般是采用交叉检验来肯定(以k=1为基准)spa
经验规则:k通常低于训练样本数的平方根效率
二、类别如何断定最合适?变量
加权投票法更恰当一些。而具体如何加权,须要根据具体的业务和数据特性来探索方法
三、如何选择合适的距离衡量?经验
高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。数据
变量值域对距离的影响:值域越大的变量经常会在距离计算中占据主导做用,所以应先对变量进行标准化。
四、训练样本是否要一视同仁?
在训练集中,有些样本多是更值得依赖的。
也能够说是样本数据质量的问题
能够给不一样的样本施加不一样的权重,增强依赖样本的权重,下降不可信赖样本的影响。
五、性能问题?
KNN是一种懒惰算法,平时很差好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。
懒惰的后果:构造模型很简单,但在对测试样本分类的系统开销大,由于要扫描所有训练样本并计算距离。
已经有一些方法提升计算的效率,例如压缩训练样本量等。