机器学习笔记(7):K近邻

2020-03-01  本文已影响0人  链原力

本文来自之前在Udacity上自学机器学习的系列笔记。这是第7篇,介绍了监督学习中的K近邻模型。

K近邻

K近邻模型理解起来非常简单。假设我们已经知道下面地图中红点、蓝点和绿点表示的房子的价格了,我们想要预估新的一座房子(用黑点表示)的价格,我们可以选取距离这座房子最近的K个房子,然后按照占大多数类别的点所对应的价格作为这所新房子的价格。

image.png

K近邻算法与之前介绍的线性回归有本质的区别。线性回归是通过一组数据得到拟合这些数据点的函数。对于这个函数来说,输入某个已知的特征,得到的输出很可能并不是完全与已知数据一致的,它只是趋近而不是记住已知数据。而K近邻是将数据完全记住,已知数据通过模型计算会得到源数据的结果。所以这里有个范式转移,线性回归是基于参数的,而K近邻是基于实例的模型。

模型

  1. 给定数据集D=(x^{(i)}, y^{(i)}), 距离函数d(q,x),近邻的数量为k, 需要求解q的分类或预测值;
  2. 根据已知数据求得最近邻的k个数据点集合NN=\{i:d(q, x^{(i)})\}
  3. 根据问题的类型,对集合NN进行结果的判断。如果是回归问题,我们可以取结果的平均值;如果是分类问题,我们可以根据集合中票数最多的类别作为q的类别。另外,如果存在多个同样多票数的结果,我们可以进行加权平均,比如说乘以距离的倒数,这样距离越远,权重越低。

距离函数
上面提到的距离函数常用的有以下几种。
假设x \in R^n
欧氏距离:
d(q, x) = \sqrt{(q_1-x_1)^2+(q_2-x_2)^2+ {\cdots} +(q_n-x_n)^2}

曼哈顿距离:
d(q, x) = |q_1-x_1| + |q_2-x_2| +{\cdots} + |q_n-x_n|

在sklearn上有更加深入的介绍:
https://scikit-learn.org/stable/modules/neighbors.html#classification

上一篇下一篇

猜你喜欢

热点阅读