一、什么是K-NN算法?
K-NN算法即K-近邻算法,是机器学习中最简单的一种算法,也是监督学习的一种,可用来处理分类型问题。K-NN秉持“越相近越相似”的原理,其本质就是通过距离判断两个样本是否相似,距离越近越相似,如果足够相似就判定他们同属一个类别。
假设有一个新样本,我们需要确定它的标签类别。那么首先,找到离新样本最近的K个样本,这些样本称之为「近邻」(nearest neighbor);其次,查看这K个近邻分别属于什么类别(这些类别我们称之为「标签」(labels));最后,根据“少数服从多数,一点算一票”的原则进行判别,其中数量最多的标签类别就是新样本的标签类别。
简单总结就是两句话:“越相近越相似”,“少数服从多数,一点算一票”。
二、算法模型
从以上内容,可以看到K-NN就是通过距离来解决分类问题。它的整个算法结构是这样的:
第一步:算距离
给定测试对象Item,计算它与训练集中每个的对象的距离。
依据公式计算Item与D1,D2,…,Dj之间的相似度,得到Sim(Item,D1),Sim(Item,D2),…,Sim(Item,Dj)。
第二步:找距离
圈定距离最近的k个训练对象,作为测试对象的近邻。
将Sim(Item,D1),Sim(Item,D2),…,Sim(Item,Dj)进行排序,若是超过相似度阈值t,则放入邻居集合NN。
第三步:做分类
根据这k个近邻归属的主要类别