目录
K近邻算法:
·思想极度简单
·应用的数学知识少(近乎为零)
·效果好(有什么缺点?)
·可以解释机器学习算法使用过程中的很多的细节问题
·更完整的刻画机器学习应用的流程
1.什么是KNN?
已经知道的数据点其实是分布在一个特征空间中的,如上图为了可视化方便用一个二维的平面来演示。如图所示一个肿瘤病人的数据,红色代表良性肿瘤,蓝色代表恶性肿瘤。当出现一个新的肿瘤如上图绿色的点,应用k近邻算法,首先就需要取一个k值(k值该如何取),假设现在根据经验k=3,k近邻算法做的事情就是在所有的数据点找出离这个点最近的三个点,然后这三个最近的点以自己的label(结果)进行投票,也就是说离这个新的数据点(上图绿色的点)最近的三个点都是蓝色的点也就是恶性的肿瘤,所以这个新的点和有可能也是一个蓝色的点。k近邻算法的本质就是认为两个样本足够的相似的话,那就有更高的概率属于同一个类别。看离它最近的一个样本显然是不靠谱的,所以多看几个样本,一共看k个样本,看和它相似的k个样本中,哪种类别最多,那就认为新的样本更有可能属于那个类别。那描述两个样本的相似性是靠这两个样本在空间中的距离来进行描述的。
通过k近邻算法上述可以看出,k近邻居算法首先可以解决的就是监督学习中的分类问题,同时k近邻算法也可以解决回归问题。
下面是详细介绍:
何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1时,算法便成了最近邻算法,即寻找最近的那个邻居。
用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居),这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。也就是说,现在,我们不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形or红色小三角形),KNN就是解决这个问题的。
如果K=3,绿色圆点的最近的3个邻居是2个红色小三角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
如果K=5,绿色圆点的最近的5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。
于此我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,我们可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类。这就是K近邻算法的核心思想。
2.近邻的距离度量
我们看到,K近邻算法的核心在于找到实例点的邻居,这个时候,问题就接踵而至了,如何找到邻居,邻居的判定标准是什么,用什么来度量。这一系列问题便是下面要讲的距离度量表示法。 欧氏距离,最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x = (x1,…,xn) 和 y = (y1,…,yn) 之间的距离为:
3.K值该如何去选择?
3.1如果选择较小的K值,就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的