目录
参考资料:《统计学习方法》 李航
KNN算法
k 近邻法(k-nearest neighbor,kNN)是一种基本的分类与回归方法,也是最简单的机器学习算法之一。k 近邻法的特殊情况是,称为最近邻算法。
该方法的分类思路是:如果一个样本在特征空间中最邻近 k 个样本中的大多数都属于某一个类别,则该样本也属于这个类别。该方法的回归思路是:通过找到一个样本的最邻近k 个样本,将这些样本属性的平均值赋给该样本,作为该样本的属性。
算法分类过程如下:
- 事先确定k值,代表对于一个待分类的样本, 我们要寻找几个它的邻近样本。
- 根据事先确定的距离度量公式,得出在所有已知类别的样本点中,距离待分类样本最近的 k 个样本。 一般情况下,在连续变量情况下,将欧氏距离作为距离度量;而在文本分类这种非连续变量情况下,重叠度量(或海明距离)可以作为距离度量。
- 统计这 k 个样本点中各个类别的数量。我们将待分类样本定为k 个样本中数量最多的类别。
算法回归过程也是类似这样,暂略,区别在于回归是求已知类别的样本属性的平均值。
KNN算法基本要素
k 值的选择、距离度量及分类决策规则是k近邻法的三个基本要素。
1. k值的选择
k 值的选择会对 k 近邻法的结果产生重大影响。如何选择一个最佳的 k 值取决于数据。一般情况下,较大的 k 值能够减小噪声的影响,但会使类别之间的界限变得模糊。在应用中,k 值一般取一个比较小的数值,通常采用交叉验证法来选取最优的 k 值。
- 如果选择较大的 k 值,就相当于用较大邻域中的训练数据进行预测,其优点是可以减少学习的估计误差,但缺点是近似误差会增大,使预测发生错误。 k 值的增大意味着整体的模型变得简单。 如果
,
是所有训练数据的个数,那么无论待分类的样本是什么,都可以简单地预测它属于训练数据中最多的类。这时模型过于简单,完全忽略训练数据中大量的有用信息,是不可取的。
- 如果选择较小的 k 值,就相当于用较小邻域中的训练数据进行预测,学习的近似误差会减小,但缺点是估计误差会增大。预测结果会对邻域中的数据点非常敏感,如果邻近的数据点恰巧是噪声, 预测就会出错。换句话说,k 值的减小意味着整体模型变得复杂,容易发生过拟合。
2. 距离度量
特征空间中样本点的距离反映了它们之间的相似程度。使用的距离度量通常是欧氏距离,也可以是其他距离。
3. 分类决策规则
k 近邻法中的分类决策规则往往是多数表决,即由待分类样本的 k 个邻近分类样本中的多数类决定它的类。
KNN算法的优缺点
优点:1)简单、直观。2)由于 KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分类样本集来说,KNN 方法较其他方法更为适合。
缺点:1)当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入任意一个新样本时,该样本的 K 个邻居中大容量类的样本都占多数。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。2)计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的 K 个近邻点。目前常用的解决方法是事先对已知样本点进行筛选,事先去除对分类作用不大的样本。3)噪声和非相关性特征向量的存在会使 k 近邻算法的准确性减小。如何选择特征向量进行分类,一个普遍的做法是利用进化算法优化功能扩展,还有一种是利用训练样本的互信息进行特征的选择。如果运用一些特殊的算法来计算度量的话,K 近邻分类精度可显著提高,如运用大边缘最近邻法或者近邻成分分析法。
总结
- k 近邻法是最简单的分类与回归方法之一。k 近邻法三要素:k 值的选择、距离度量和分类决策规则。当训练集、k 值、距离度量及分类决策规则确定后,其结果唯一确定。
- 常用的距离度量是欧氏距离或更一般的 Lp 距离。
- 选择较小的k 值时,k 近邻模型会更复杂;选择较大的k 值时,k 近邻模型会更简单。k 值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的 k。
- 常用的分类决策规则是多数表决,对应于经验风险最小化。
- k 近邻法的实现需要考虑如何快速搜索 k 个近邻点。kd 树是一种便于对 k 维空间中的数据进行快速检索的数据结构。kd 树是二叉树,表示对 k 维空间的一个划分,其每个结点对应于 k 维空间划分中的一个超矩形区域。利用 kd 树可以省去对大部分数据点的搜索,从而减少搜索的计算量。