分享
[算法学习] KNN近邻算法 分类/回归/聚类
输入“/”快速插入内容
[算法学习] KNN近邻算法 分类/回归/聚类
用户8537
用户8537
用户5027
用户5027
2025年12月10日修改
4022
4166
👨💻
作者:吵爷
基础概念
KNN算法,全称为K-Nearest Neighbors(K-最近邻)算法,是一种基本的分类和回归算法。它的工作原理非常直观:通过测量不同特征值之间的距离来进行分类或回归预测。
优势/劣势
KNN算法简单易懂,并且无需训练过程,缺点是计算成本高(尤其是在大数据集上),对噪声数据敏感,以及需要合理选择K值和距离度量方法。
此外,KNN是一种惰性学习算法,它在训练阶段不进行模型训练,而是在预测阶段直接使用整个训练数据集。
计算步骤
我们用一个简单的三维数据集做例子,每个点由其三维坐标(x, y, z)和对应的类别标签组成
已知:
点1: (1, 2, 3), 类别A
点2: (2, 3, 4), 类别A
点3: (6, 5, 3), 类别B
点4: (7, 7, 8), 类别B
点5: (5, 5, 5), 类别C
在已知数据的基础上,我们要预测一个新的点(4, 5, 6)的类别。
步骤1:确定K值
假设我们选择K = 4,即距离最近的4个点。(由于一共只有5个数据,K=1,2,3都有可能造成无法分类的情况,所以这里选择4)
注意:K值的选择并不是恒定的,取决于多种因素:
1.
数据集的大小
:较小的数据集可能需要较小的K值,以避免过拟合;较大的数据集可能允许使用较大的K值。
2.
数据的维度
:高维数据集可能需要较大的K值,因为高维空间中的点之间的距离较为分散。
3.
噪声和异常值的影响
:较小的K值可能对噪声和异常值更敏感。如果数据集中存在噪声或异常值,较大的K值可以帮助减少这些因素的影响。
4.
类别的分布
:如果数据集中的类别分布不均匀,可能需要调整K值来平衡不同类别的影响。
5.
实验和验证
:通常通过交叉验证等实验方法来确定最佳的K值。通过在不同的K值上测试模型的性能,选择能够提供最佳分类准确率的K值。
6.
计算资源
:较小的K值可以减少计算量,因为需要计算的距离更少。但是,如果计算资源充足,可以选择较大的K值。
7.
问题的特性
:某些问题可能天然适合使用较小或较大的K值。例如,如果问题需要捕捉非常细微的模式,可能需要较小的K值。
步骤2:距离度量
通常KNN会选择欧式距离作为度量方法,欧氏距离是最直观的距离度量方式,用来测量两点在多维空间中的直线距离。与其他距离度量方法相比,欧氏距离的计算相对简单,特别是在低维空间中。
计算公式为:
而在高维空间中,欧氏距离具有局限性,因为数据点之间的距离会趋向于相同,这种现象被称为“维度的诅咒”。在特定情况下,可能需要考虑其他距离度量方法,如
曼哈顿距离、切比雪夫距离、闵可夫斯基距离或余弦相似度
等,以更好地适应数据的特性和问题的需求。