《统计学习方法》笔记(三)K近邻法

前言

关于写作:

博主(暂且如此自称)是北京某高校的计算机系研究生在读,入行AI领域时间不久,正在努力进修。最近利用工作之余的时间正在学习李航博士的《统计学习方法》,一方面希望能够通过写作整理思路,另一方面,分享学习心得也希望可以和志同道合的小伙伴们共同探讨进步啦~

github传送门

GitHub - wyynevergiveup/Statistical-Learning-Method: 《统计学习方法》--李航 实现学习过程中的算法以加深理解

系列文章:

1.《统计学习方法》笔记(一) 统计学习及监督学习概论 - 简书

2.《统计学习方法》笔记(二)感知机模型 - 简书

3.《统计学习方法》笔记(三)K近邻法 - 简书

4.《统计学习方法》笔记(四)朴素贝叶斯法 - 简书

正文

3.1 K近邻算法(K-NN)

3.1.1 概述

k近邻法是一种基本分类与回归方法。因其多用与分类问题,本文只讨论其在分类问题中的应用。

k近邻算法的输入为样本的特征向量,对应于特征空间中的点;输出为样本所属的类别。具体地,k近邻算法给定一个训练数据集,其中的样本类别已定。对新的样本进行分类时,根据与其最近邻的k个样本的类别,通过多数表决等方式进行预测。

因此,k近邻算法不需要显式的学习过程,它实际上是利用训练集对特征向量空间进行了划分,并作为其分类的“模型”。

k近邻算法的三要素:1)k值的选择;2)距离度量;3)分类决策规则。

3.1.2 算法形式化定义

KNN算法形式化定义

3.2 k近邻模型

k近邻法使用的模型实际上对应于对特征空间的划分。模型由三个基本要素决定,分别为:k值的选择、距离度量和分类决策规则。

3.2.1 k值的选择

k值的选择往往会对k近邻法的结果产生重大影响。

选择较小的k值,就相当于在较小的邻域中的训练实例进行预测,近似误差会减小,估计误差会增大。(什么是近似误差和估计误差?)在这种情况下,只有与输入样本较近的训练样本对结果预测起作用,因此,预测结果会对近邻的样本点非常敏感,如果邻近的实例点恰好存在噪声,预测就很有可能会出错。换句话说,k值的减小意味着整体模型变得复杂,容易过拟合。

选择较大的k值,就相当于在较大的邻域中的训练实例进行预测,估计误差会减小,近似误差会增大。在这种情况下,与输入样本距离较远的训练样本也会对预测起作用,使得预测发生错误。换句话说,k值的增大意味着整体的模型变得简单,容易欠拟合。

现在,我们来解释一下什么是近似误差和估计误差。(此答案来自网络,个人认为这种理解方式简单易懂,值的推荐。)

近似误差,更关注于“训练”。最小化近似误差,即为使估计值尽量接近真实值,但是这个接近只是对训练样本(当前问题)而言,模型本身并不是最接近真实分布。换一组样本,可能就不近似了。这种只管眼前不顾未来预测的行为,即为过拟合。

估计误差,更关注于“测试”、“泛化”。最小化估计误差,即为使估计系数尽量接近真实系数,但是此时对训练样本(当前问题)得到的估计值不一定是最接近真实值的估计值;但是对模型本身来说,它能适应更多的问题(测试样本)。

3.2.2 距离度量

特征空间中的两个实例点的距离是两个实例点相似程度的度量。这里介绍一种比较一般(通用)的距离度量——L_p距离(或Minkowski距离)。

假设特征空间X是n维实数向量空间R^n,x_i,x_j \in X,x_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T,x_j=(x_j^{(1)},x_j^{(2)},...,x_j^{(n)})^T,x_i,x_j之间的L_p距离定义为:

                                                                        L_p(x_i, x_j) = (\sum_{l=1}^n\vert x_i^{(l)} - x_j^{(l)} \vert ^p )^{\frac{1}{p}}

这里的p\geq 1

p=2时,称为欧式距离。

                                                                        L_2(x_i, x_j) = (\sum_{l=1}^n\vert x_i^{(l)} - x_j^{(l)} \vert ^2 )^{\frac{1}{2}}

当时,称为曼哈顿距离。

                                                                        L_p(x_i, x_j) = \sum_{l=1}^n\vert x_i^{(l)} - x_j^{(l)} \vert

当时,它是各个坐标距离的最大值。

                                                                        L{\infty}(x_i, x_j) = max_l \vert x_i^{(l)} - x_j^{(l)} \vert

下图为2维空间中,p取不同值时,与原点的L_p距离为1的点的图形。


Lp距离间的关系

3.2.3 分类决策规则

k近邻法中分类决策规则往往是多数表决,即由输入实例的k个近邻的训练实例中的多数类决定输入实例的类别。

多数表决规则有如下解释:如果分类的损失为0-1损失函数,分类函数为:

                                                                        f:R^n \rightarrow \{ c_1, c_2, ... ,c_K\}

那么误分类的概率为:

                                                                        P(Y\neq f(X)) = 1-P(Y=f(X))

对给定的实例x \in X,其最邻近的k个训练实例点构成集合N_k(x)。如果涵盖N_k(x)的区域的类别时c_j,那么误分类率时:

                                                                        \frac{1}{k} \sum_{x \in N_k{(x)}} I(y_i\neq c_j) = 1-\frac{1}{k}\sum_{x \in N_k{(x)}} I(y_i = c_j)

要使误分类率最小,就要使\sum_{x \in N_k{(x)}} I(y_i = c_j) 最大,所以多数表决规则等价于经验风险最小化。

3.3 k近邻法的实现:kd树

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。