KNN算法介绍:
KNN,k-NearestNeighborK,又称K最近邻。所谓K最近邻,就是k个最近的邻居的意思。
说的是每个样本都可以用它最接近的k个邻居来代表,是一种分类算法,用于参考已知的数据,对未知实例的类别进行判断。
算法步骤:
将每个样本视作一个点
1.载入数据集,对数据进行必要的预处理
2.设置参数K,K最好选择奇数,因为后续进行归类的策略是少数服从多数,设置K为奇数的话总会有结果。
3.计算待预测点与已知点之间的关系,这里的关系可以有多种方式来体现,常用如下:
①欧式距离(应用较广,其他及其算法也有广泛应用),其计算方法:
②余弦值
③相关度
④曼哈顿距离
⑤…
4.之前确定了参数K,计算了待预测点与已知点之间的距离衡量,将计算的结果进行从小到大排序,取前K个点
5.将待预测点归类为多数的那一个类别,这便是对于未知点的类别预测结果了。
算法优点:
1.简单,易于理解,易于实现,无需估计参数,无需训练;
2.适合对稀有事件进行分类;
3.特别适合于多分类问题(multi-modal,对象具有多个类别标签),kNN比SVM的表现要好。
算法缺点:
需要大量的空间来存储已知的实例,再一个是算法复杂度较高。
算法理解:
我们根据一张图来理解这个算法吧。
未知点X延伸出的5个箭头,表示我们的K为5,也就是我们选取了5个已知点用于对X进行归类预测
特殊情况:
对于未知点Y不使用算法,我们会将未知点Y归类为W1这一类,运行了算法后,会将Y归类为W2类,这明显是错误的归类结果。
这是由于样本分布不平衡造成的。我们可以通过给计算后的距离加上权重来控制不同距离的点对结果的贡献程度,离未知点越近的,权重大,对结果贡献度大,反之离未知点远的,权重小,对结果的贡献度小。
下一篇:网络新梗k是什么意思