KNN算法--个人总结

KNN

如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

在k-NN分类中,输出是一个分类族群。一个对象的分类是由其邻居的“多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k = 1,则该对象的类别直接由最近的一个节点赋予。

在k-NN回归中,输出是该对象的属性值。该值是其k个最近邻居的值的平均值。

选取k值以及它的影响

我们可以得到k太小会导致过拟合,选取较大的k值,就相当于用较大邻域中的训练数据进行预测,这时与输入实例较远的(不相似)训练实例也会对预测起作用,使预测发生错误。选取k值很重要的关键是实验调参(通常采取交叉验证法来选取最优的k值。),类似于神经网络选取多少层这种,通过调整超参数来得到一个较好的结果。

最邻近是如何度量呢?

P=2欧氏距离   p=1 曼哈顿距离

特征归一化的必要性

为了保证每个特征同等重要性,我们这里对每个特征进行归一化。

优点

1、理论成熟,思想简单,既可以用来做分类也可以用来做回归;

2、可用于非线性分类;

3、训练时间复杂度为O(n);

4、对数据没有假设,准确度高,对outlier不敏感;

5、KNN是一种在线技术,新数据可以直接加入数据集而不必进行重新训练;

6、KNN理论简单,容易实现;

缺点

1、样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少)效果差;

2、需要大量内存;

3、对于样本容量大的数据集计算量比较大(体现在距离计算上);

4、样本不平衡时,预测偏差比较大。如:某一类的样本比较少,而其它类样本比较多;

5、KNN每一次分类都会重新进行一次全局运算;

6、k值大小的选择没有理论选择最优,往往是结合K-折交叉验证得到最优k值选择;

 

 

参考:https://zhuanlan.zhihu.com/p/25994179

https://easyai.tech/ai-definition/k-nearest-neighbors/

原文地址:https://www.cnblogs.com/lwx521/p/12872514.html