K近邻算法的理论基础
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K近邻算法的理论基础相关的知识,希望对你有一定的参考价值。
参考技术A从理论基础、手写数字识别算法、手写数字识别实例等角度介绍K近邻算法。
K近邻算法的本质是将指定对象根据已知特征值分类。
例如,看到一对父子,一般情况下,通过判断他们的年龄,能够马上分辨出哪位是父亲,哪位是儿子。这是通过年龄属性的特征值来划分的。
上述例子是最简单的根据单个特征维度做的分类,在实际场景中,情况可能更复杂,有多个特征维度。
例如,为一段运动视频分类,判断这段视频是乒乓球比赛还是足球比赛。
为了确定分类,需要定义特征。这里定义两个特征,一个是运动员“挥手”的动作,另一个是运动员“踢脚”的动作。当然,我们不能一看到“挥手”动作就将视频归类为“乒乓球比赛”,因为我们知道某些足球运动员习惯在运动场上通过挥手来跟队友进行交流。同样,我们也不能一看到“踢脚”动作就将视频归类为“足球比赛”,因为有些乒乓球运动员会通过“踢脚”动作来表达自己的感情。
我们分别统计在某段特定时间内,视频中“挥手”和“踢脚”动作的次数,发现如下规律:
● 在乒乓球比赛的视频中,“挥手”的次数远多于“踢脚”的次数。
● 在足球比赛的视频中,“踢脚”的次数远多于“挥手”的次数。
根据对一组视频的分析,得到如表20-1所示的数据。
为了方便观察,将上述数据绘制为散点图,如图20-1所示。
从图20-1中可以看到,数据点呈现聚集特征:
● 乒乓球比赛视频中的数据点聚集在x轴坐标为[3000, 5000], y轴坐标为[1,500]的区域。
● 足球比赛视频中的数据点聚集在y轴坐标为[3000, 5000], x轴坐标为[1,500]的区域。
此时,有一个视频Test,经过统计得知其中出现2000次“挥手”动作,100次“踢脚”动作。如果在图20-1中标注其位置,可以发现视频Test的位置最近的邻居是乒乓球比赛视频,因此可判断该视频是乒乓球比赛视频。
上面的例子是一个比较极端的例子,非黑即白,而实际的分类数据中往往参数非常多,判断起来也不会如此简单。因此,为了提高算法的可靠性,在实施时会取k个近邻点,这k个点中属于哪一类的较多,然后将当前待识别点划分为哪一类。为了方便判断,k值通常取奇数,这和为了能得到明确的投票结果通常将董事会成员安排为奇数的道理是一样的。
例如,已知某知名双胞胎艺人A和B长得很像,如果要判断一张图像T上的人物到底是艺人A还是艺人B,则采用K近邻算法实现的具体步骤如下:
以上所述就是K近邻算法的基本思想。
以上是关于K近邻算法的理论基础的主要内容,如果未能解决你的问题,请参考以下文章