挖掘原理|k近邻法原理

k近邻法(k-NN)是一种机器学习算法,用于分类任务。它基于实例,通过计算新实例与训练集中样本的距离来决定新实例的类别。距离度量包括曼哈顿距离、欧氏距离和切比雪夫距离等。k值的选择对分类结果影响较大,过小易受噪声干扰,过大可能导致少数类别被忽视。通过比较不同k值的预测准确率,可以选择最佳k值。文中还给出了手算鸢尾花数据集的k-NN分类示例。
摘要由CSDN通过智能技术生成

k近邻法原理

        k近邻法(k-nearest neighbor)用于分类时,给定一个训练数据集,对于新输入的实例,计算得出与该实例距离最近的k个样本,由k个样本中的大多数决定出该实例属于哪一类。

        假设数据集

T=\{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})\}

其中x_{i}为样本的特征向量,y_{i}为类别,判断实例x所属的类别y。

        我们知道相同类别的样本点总是有着相似的特征值,表现在多维空间中就是有着相近的距离,因此我们可以通过判断与该实例距离相近的样本点大多是哪一类别,就可以将该实例划分到哪一类别中。

        在该过程中,涉及到两个关键问题,一个是距离,一个是选取几个样本点进行判断,也即k值得选取。

        (1)关于距离:

         我们在初高中时学习过平面直角坐标系或者空间直角坐标系时,学习过两点间距离公式,各坐标差值的平方和,在求其算数平方根就是两点间距离,事实上关于距离得度量有着更广泛的定义。

        闵可夫斯基距离:

D(x,y)=(\sum_{i}^{n}|x_{i}-y_{i}|^{p})^{\frac{1}{p}}

其中x,y表示空间中的两个点,x_{i},y_{i}表示某一轴上的值。

        当p=1时,

D(x,y)=\sum_{i}^{n}|x_{i}-y_{i}|

就是曼哈顿距离,指各个坐标距离之和。

        当p=2时,

D=(\sum_{i}^{n}(x_{i}-y_{i})^{2})^{\frac{1}{2}}

就是我们熟悉的欧氏距离,在二维和三维空间中就是两点间距离公式。

        当p→∞时,

D=\max_{i}|x_{i}-y_{i}|

就是切比雪夫距离,指各个坐标距离的最大值,这是因为

lim_{p \to \infty }(\sum_{i}^{n}|x_{i}-y_{i}|^{p})^{\frac{1}{p}} = \max_{i}|x_{i}-y_{i}|

        (2)关于k值的选择

        k过大过小都会影响预测的准确率。

        当k过小时,预测结果可能会受到噪声的影响,如图:红色和蓝色点分别代表两个不同颜色类别,绿色是待预测的点,如果选择k=1,则会将其划分为红色类别,而事实上属于蓝色类别,由此导致分类错误。

         当k过大时,样本点数量较少的类别可能会被忽略掉,如图:红色和蓝色点分别代表两个不同颜色类别,绿色是待预测的点,如果选择k=20,由于红色类别只有8个点,无论绿点在哪里都会将其划分为蓝色类别,而事实上属于红色类别,会导致分类错误。

         在选择k值时,可以适当选择几个k值进行预测,然后计算准确率并进行比较,然后选出最合适的k值。

手算示例

        我们从鸢尾花数据集中的三个类别各选取十个样本点为示例,选取欧式距离作为度量,k=5,进行手算演示。

数据集:

Setal_lengthx^{(1)}

Setal_width

x^{(2)}

Petal_lengthx^{(3)}

Petal_width

x^{(4)}

class

y

0

5.1

3.5

1.4

0.2

0

1

4.9

3.0

1.4

0.2

0

2

4.7

3.2

1.3

0.2

0

3

4.6

3.1

1.5

0.2

0

4

5.0

3.6

1.4

0.2

0

5

5.4

3.9

1.7

0.4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘落心上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值