乐趣区

关于机器学习:机器学习K近邻算法

K 近邻算法

一、什么是 k 近邻算法

给定一个训练数据集、对新的输出实例,在训练集中找到与该实例 最邻近 的 k 个实例,这 k 个 实例的少数属于某个类,就把该输出实例分为这个类。如下图所示:输出新的❓点判断它属于 classA 还是 classB

那么问题来了 k 近邻算法市 最近邻,那么这个最近邻怎么判断?计算间隔!怎么计算间隔

二、间隔度量

1、欧几里得间隔

$$
d(x,y)=\sqrt{\displaystyle\sum_{i=1}^{n}(y_i-x_i)^2}
$$

3、曼哈顿间隔

$$
d(x,y)=(\displaystyle\sum_{i=0}^{n}{|y_i-x_i|})
$$

4、闵可夫斯基间隔

$$
Minkowski Distance=(\displaystyle\sum_{i=0}^{n}{|y_i-x_i|})^\frac{1}{p}
$$

当初咱们晓得了如何确定间隔,然而问题又来了,咱们应该怎么去定义咱们的 K 值呢?

三、K 值抉择

如果抉择较小的 k 值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差 (approximation error) 会减小,只有与输出实例较近的 (类似的) 训练实例才会对预测后果起作用。但毛病是“学习”的预计误差 (estimation error) 会增大,预测后果会对近邻的实例点十分敏感。如果邻近的实例点恰巧是噪声,预测就会出错。换句话说,k 值的减小就意味着整体模型变得复杂,容易产生过拟合。

如果抉择较大的 k 值,就相当于用较大邻域中的训练实例进行预测。其长处是能够缩小学习的预计误差,但毛病是学习的近似误差会增大。这时与输出实例较远的 (不类似的) 训练实例也会对预测起作用,使预测产生谬误。k 值的增大就意味着整体的模型变得简略。

如果 k =N,那么无论输出实例是什么,都将简略地预测它属于在训练实例中最多的类。这时,模型过于简略,齐全疏忽训练实例中的大量有用信息,是不可取的。在利用中,k 值个别取一个比拟小的数值。通常采纳 穿插验证法 来选取最优的 k 值

参考

1、https://www.ibm.com/cn-zh/topics/knn#:~:text=k%2D%E6%9C%80%E8…,%E6%9C%80%E5%B8%B8%E8%A1%A8%E7%A4%BA%E7%9A%84%E6%A0%87%E7%AD%BE%E3%80%82
2、李航《统计学学习办法第二版》

退出移动版