【机器学习】KNN算法

KNN(近邻算法)

KNN (K-Nears-Neighbor),从字面意思可理解为K个最近的邻居。所以KNN算法也叫最近邻算法,一般用于解决分类上的问题。
在机器学习中,KNN做的分类属于监督学习的范畴中,即根据已知的结果标签对未知的标签分类。

物以类聚,人以群分

【机器学习】KNN算法_第1张图片
简单的说就是要判断一个人或者一件物品是属于什么类型的,可以根据它周围的东西去判断。比如说,你想知道你一个朋友是不是有钱人,但是又不好意思直接问他。那么可以根据他周围的人是土豪、富豪、还是月光族的人数来判断。如果他周围的人很多都是土豪富豪,那么可以大概率的估计他也是一个有钱人,反之则同理。
在数据中,会以上图中的X、Y坐标图来做分析。具体的分析过程如下:
【机器学习】KNN算法_第2张图片
由此,引出KNN算法的定义:为了判定未知样本的类别,以全部参与训练的样本为代表点计算未知样本与所有训练样本的距离,并以最近邻者的类别作为决策未知样本类别的依据。
意思就是在未知样本的周围画一个圈,这个圈里面出现哪种类型的样本数量最多就直接影响这个未知样本的类型。

举个栗子

电影类型判别:
【机器学习】KNN算法_第3张图片
采取了打斗、接吻镜头作为特征来判别电影是爱情片还是动作片。然后以上图的数据绘制X、Y坐标图:
【机器学习】KNN算法_第4张图片
以打斗镜头出现的次数作为X轴,接吻镜头出现的次数作为Y轴。根据KNN原理我们可以一眼就给出答案。但是计算机不行,计算机要根据数据之间的计算才能得出结论,由此引入欧式距离
欧式距离又称毕达哥拉斯度量,其实也就是空间中两点之间的直线距离。所以在上面的例子中的计算就是计算未知样本点与各个已知样本点的距离。中学的数学公式这里就不列出来了。
经过计算,未知样本点周围出现的样本都为爱情片,所以判定未知样本点的类别为爱情片。
下面说说KNN算法的缺陷。

算法缺陷

对噪声数据过于敏感。详情见下图:
【机器学习】KNN算法_第5张图片
模糊处就是噪声影响,很难根据未知样本点到各样本点的距离判断这个图形的形状。
还有一种情况如下图:
【机器学习】KNN算法_第6张图片
对于X很容易判断出是属于红色点,但是根据先前的定义,Y点的判别为蓝色三角形。
对于这样的情况,采取的措施是距离加权。即给两点之间的距离加一个权值。距离越短权值越大,这样就不会单单由距离决定最后的结果。
(以上图片均来源于腾讯云)

你可能感兴趣的:(人工智能)