kNN(k邻近算法)
核心思想
kNN 算法的核心思想是如果一个样本在特征空间中的 k 个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。
kNN 方法在类别决策时,只与极少量的相邻样本有关。由于 kNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN 方法较其他方法更为适合。
KNN 算法不仅可以用于分类,还可以用于回归。通过找出一个样本的 k 个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值 (weight),如权值与距离成反比。
两个优势
在 KNN 中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离。
同时,KNN 通过依据 k 个对象中占优的类别进行决策,而不是单一的对象类别决策。这两点就是 KNN 算法的优势。
总结
就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前 K 个数据,则该测试数据对应的类别就是 K 个数据中出现次数最多的那个分类。
算法的描述
1)计算测试数据与各个训练数据之间的距离;
2)按照距离的递增关系进行排序;
3)选取距离最小的 K 个点;
4)确定前 K 个点所在类别的出现频率;
5)返回前 K 个点中出现频率最高的类别作为测试数据的预测分类。