一些前提的约定,还是沿用上篇文章的哈。先来致敬下男神。
一:K最近邻(KNN)
KNN是一个监督学习方法,也是一种分类算法。这一篇比较简单,这是个比较古老的算法,其思想也是很简单朴素的,已知我们有一堆样本,都是已经分好了类,每样本都是有个标签的,代表了该样本是属于哪个类别。
KNN的思想就是,好了,我有一堆的样本,我也不管别的,你给我一个新的不带标签的样本A让我分类,我就用已有的分好类的样本集合去匹配。计算新的样本A到每一个已经分配好的样本B之间的距离,看看距离样本A最近最近的前K个样本的标签是什么,在前K个样本中找到最多的样本的标签就认为是该新样本的标签,分类结束。
把到所有点的距离按照从小到大的顺序进行排序,找到最近的前K的距离对应的样本以及对应的标签,对每个标签进行统计数量,选最数量最大的那个标签作为未知样本的分类标签和类别。
二:举例实践
途中红色是一个类别:0,蓝色是一个类别:1,对绿色标签进行分类。
我们选取K= 5,在前5个样本中进行选择。
看来他是分类到了1这个标签,因为前五个标签中有三个是1,,占了多数。
三:进一步学习
1:KNN受K影响大。要选择合适的K值,K值不同,可能直接赢分类的结果。可以不断地调整K值,对进行交叉验证,选择饿一个误差最小的K值。
K值过小,那么模型就会变得复杂,容易导致过拟合,假设K=1,那就是找到离自己最近的样本所在的类别,容易受到噪声干扰,还会受到异常点的干扰。之所以变得复杂呢是因为,整个空间按照距离的划分,就分成了很多个特别复杂的区域,某个区域内的点属于某个样本,另外个区域内的属于另外个样本。比如下图,整个空间被两个样本划分了两个区域。大家可以在整个特征空间内找到很多点,都去计算下他英国属于的样本空间,在图中画出来就是一个很复杂的多区域。
如果K过大,整个模型又太简单,假设K=N,是全部训练样本空间的样本数量,那么最后整个分类就是简单的样本空间谁最多就是谁。也就是着呢个空间区域全部都是样本多的那个类别的区域范围,这时候就是高偏差就出现了。
它太多简单了。。。。