KNN–k近邻学习
KNN基于某种距离度量在训练集中找出与其距离最近的k个带有真实标记的训练样本,然后基于这k个邻居的真实标记来进行预测
- 分类任务:投票法或者加权投票法(基于距离远近,距离越近的样本权重越大)
- 回归任务:平均法或者加权平均法(基于距离远近,距离越近的样本权重越大)
KNN算法的核心在于k值的选取以及距离的度量。k值选取太小,模型很容易受到噪声数据的干扰,例如:极端地取k=1,若待分类样本正好与一个噪声数据距离最近,就导致了分类错误;若k值太大, 则在更大的邻域内进行投票,此时模型的预测能力大大减弱,例如:极端取k=训练样本数,就相当于模型根本没有学习,所有测试样本的预测结果都是一样的。一般地我们都通过交叉验证法来选取一个适当的k值。(??)
KNN的距离度量可以选择欧式距离、马氏距离、曼哈顿距离等
欧式距离
d=∑k=1n(yk−xk)2−−−−−−−−−−−√ d = ∑ k = 1 n ( y k − x k ) 2
曼哈顿距离
d=∑k=1n|yk−xk| d = ∑ k = 1 n | y k − x k |
切比雪夫距离
d=maxk|yk−xk| d = max k | y k − x k |
马氏距离
D(xi,yj)=(xi−yj)TS−1(xi−yj)−−−−−−−−−−−−−−−−−−√ D ( x i , y j ) = ( x i − y j ) T S − 1 ( x