本文来自之前在Udacity上自学机器学习的系列笔记。这是第7篇,介绍了监督学习中的K近邻模型。
K近邻
K近邻模型理解起来非常简单。假设我们已经知道下面地图中红点、蓝点和绿点表示的房子的价格了,我们想要预估新的一座房子(用黑点表示)的价格,我们可以选取距离这座房子最近的K个房子,然后按照占大多数类别的点所对应的价格作为这所新房子的价格。
K近邻算法与之前介绍的线性回归有本质的区别。线性回归是通过一组数据得到拟合这些数据点的函数。对于这个函数来说,输入某个已知的特征,得到的输出很可能并不是完全与已知数据一致的,它只是趋近而不是记住已知数据。而K近邻是将数据完全记住,已知数据通过模型计算会得到源数据的结果。所以这里有个范式转移,线性回归是基于参数的,而K近邻是基于实例的模型。
模型
- 给定数据集, 距离函数,近邻的数量为k, 需要求解的分类或预测值;
- 根据已知数据求得最近邻的k个数据点集合
- 根据问题的类型,对集合进行结果的判断。如果是回归问题,我们可以取结果的平均值;如果是分类问题,我们可以根据集合中票数最多的类别作为的类别。另外,如果存在多个同样多票数的结果,我们可以进行加权平均,比如说乘以距离的倒数,这样距离越远,权重越低。
距离函数
上面提到的距离函数常用的有以下几种。
假设
欧氏距离:
曼哈顿距离:
在sklearn上有更加深入的介绍:
https://scikit-learn.org/stable/modules/neighbors.html#classification