k近邻算法的回归问题(一文搞懂K近邻算法)
K近邻算法,英文名称为K-Nearest Neighbor,简称KNN,所以又叫做KNN算法。
K近邻算法基本原理K近邻算法的原理很简单,看下面这个图中的左边的这个图,图中有两个类别, 号表示正类,-表示负类,x表示待分类的未知样本。
如何分类这个未知样本呢?我们看离它最近的一个样本(虚线圆圈标注),这个样本是负类,所以将这个未知样本归为负类,这就是当K=1的情况。
如果K=2,也就是要看离这个未知样本最近的两个样本,中间的图所示,发现离它最近的两个样本中,一个是正类,另一个是负类,此时,这个未知样本归为正类或者负类均可。
说明:从这里看出,K值一般去奇数,防止出现无法分类情况的出现。
如果K=3,也就是看离这个未知样本最近的三个样本,右侧的图所示,发现离它最近的三个样本中,有两个是正类,一个是负类,所以,将这个未知样本归为正类。
这就是K近邻算法的基本原理,即看离未知样本距离最近的K个样本(邻居),它们是哪个类别,就把这个未知样本归为那个类别。
K近邻算法实例
例如,我们需要按照搞笑镜头数量和打斗镜头数量对电影进行分类,分为动作片或者喜剧片。现在有以下电影题材数据。
现在的情况是:
- 7个样本(电影),每个样本有两个特征:搞笑镜头数量和打斗镜头数量。
- 类别是电影类型:动作片或者喜剧片。
- 任务目标:对电影按照题材进行分类。
现在有一部未知电影《唐人街探案》,其中,搞笑镜头数量:23,打斗镜头数量:17,问题:这部电影属于动作片还是喜剧片?
根据已知的电影特征数据,绘制散点图如下。
在上图中,
- 横坐标代表搞笑镜头数量,纵坐标代表打斗镜头数量。
- 用颜色区分电影类型,黄色代表动作片,红色代表喜剧片。
- 将未知类型的电影也绘制在散点图中,图中的蓝色点。
在这散点图中,若取K=1,则离这个未知样本距离最近的一个样本是“美人鱼”,属于喜剧片,所以可以判定这个未知样本(唐人街探案)属于喜剧片。
若取K=3,则离这个未知样本距离最近的三个样本是美人鱼、我的特工爷爷和功夫熊猫3,这三个样本中有两个是喜剧片,所以可以判定这个未知样本属于喜剧片。
这就是用K近邻算法对电影按照题材进行分类的基本思路。
以上是通过散点图进行定性分析,当数据比较多的时候,就需要通过计算进行定量分析。
距离的度量从前面的分析中可以看到,我们需要判断样本之间的距离,距离有很多,最常用的就是欧氏距离,例如,给两个点,它们之间的欧氏距离为:
就个不就是初高中数学学过的两点距离公式吗? 例如,计算这个未知电影和电影《美人鱼》之间的距离,计算公式为:
按照类似的方式可以将未知样本点和已知样本点的距离都计算出来,并按照升序排列,如下所示。
假定K=3,距离最近的三部电影为:美人鱼、我的特工爷爷和功夫熊猫3,这三部电影中有两部是喜剧片,一部是动作片,因此判定这个未知电影是喜剧片。
通过这个例子,你已经掌握了K近邻算法的基本原理。
点下【分享】给小编加点料呗
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com