knn k近邻算法 绝对干货!!!

k-近邻算法(k-neighbor,k-NN)是一种基于分类和回归的方法, 回归的值由k个最近的样例值的平均值作为预测决定,还可以基于距离远近进行加权平均,距离越近的样本权重越近。本节只讨论分类问题中的k近邻法。

k近邻假设给定一个训练数据集,其中的实例类别已定(已有标签).在分类时,对新的实例,根据其k个最近邻的训练实例的类别(即选中的k个样本),通过多数表决(投票法)等方式进行预测新的实例的类别(即k个样本中同类类别最多的那个类别即为预测的类别)。

注意:这里的训练数据集并没有训练的过程(学习的过程),它只是将训练数据集对特征向量进行划分,并将其作为分类的“模型”,它是“懒惰学习”的代表。

knn k近邻算法 绝对干货!!!_第1张图片

上图为:k=3时,绿色的点的类别被判定为红点

k=5时,绿色的点的类别被判定为蓝点

knn k近邻算法 绝对干货!!!_第2张图片

k-近邻算法的三个基本要素为:

  1. k的取值 (k值可以有交叉验证法选取最优的k值)
  2. 距离度量 (一般使用欧氏距离,也可以使用其他距离)
  3. 分类决策 (往往是多数表决法)

3.1 k-近邻算法

knn k近邻算法 绝对干货!!!_第3张图片

附:argmaxf(x)函数为返回使f(x)最大的x值(这里指的就是同类类别最多的那个x类别)

3.2 k-近邻模型

3.2.1 模型

knn k近邻算法 绝对干货!!!_第4张图片

即根据选中的k划分特征空间,如:
k=5,从任意一点开始,选中5个为一个单元(cell),直至划分完毕

3.2.2 距离度量

一个点和一个点之间的距离,无论是什么计算方式,基本上离不开 L p L_p Lp距离。我们熟知的欧式距离,则是 L 2 L_2 L2范式,也就是p=2的情况,而另一个很熟悉的距离曼哈顿距离,则是 L 1 L_1 L1范式。 L − p L-p Lp距离的定义如下:

knn k近邻算法 绝对干货!!!_第5张图片

附:关于机器学习中的距离和相似性度量方法可以参考以下文章,总结的非常全面:

  1. 理论:https://blog.csdn.net/mingzai624/article/details/53814409
  2. python代码实现部分可以看:http://www.cnblogs.com/denny402/p/7027954.html

3.2. 3 k值的选择

knn k近邻算法 绝对干货!!!_第6张图片

1. 附:如何理解和区分近似误差和估计误差?

近似误差:可以理解为对现有训练集的训练误差。

估计误差:可以理解为对测试集的测试误差。

在这个k临近法中其实设定的k值越小,得出的模型是越复杂的,因为k值越小会**导致特征空间被划分成更多的子空间(可以理解为模型的项越多)。**而k值越大得到的模型其实是越简单的.

所以当k值越小,对于训练集的预测更加精确,近似误差会越小(因为你选择了更加复杂的模型去预测训练集)。当k值越大,对于训练集的预测则不会那么准确,所以近似误差会越大(因为你选择了更加简单的模型去预测)。

2.交叉验证将在后面“模型评估与模型选择”博客中详细叙述,这一话题比较大,后面会综合很多资料写一篇总结

3.2.4分类决策规则

knn k近邻算法 绝对干货!!!_第7张图片

你可能感兴趣的:(python3,机器学习,AI)