K 近邻算法(K-Nearest Neighbor),简称 KNN 算法 简介
2023-12-21 16:18:34
K 近邻算法(K-Nearest Neighbor),简称 KNN 算法
基于距离计算的方式来解决分类问题.
数学描述: 对于一个待测的样本点,我们去参考周围最近的已知样本点的分类,如果周围最近的 K 个样本点属于第一类,我们就可以把这个待测样本点归于第一类。
数学公式计算两个样本之间的距离:
- 欧氏距离 (Euclidean Space)
- 曼哈顿距离(Manhattan Distance)
- 切比雪夫距离(Chebyshev Distance)
- 可夫斯基距离(Minkowski Distance)
- 余弦相似度(Cosine Similarity)
- 汉明距离(Hamming Distance)
- Jaccard相似度(Jaccard Similarity)
详细介绍可以点击查看: https://blog.csdn.net/galoiszhou/article/details/135130388
通过一个样本周围最近的 K 个样本点来进行分类.
K = 1
时, 最近的 1 个样本的值是什么分类, 则待测样本就是什么分类K = 3
时, 最近的 3 个样本的值的分类, 那个分类的样本多, 则待测结果就是哪个分类- …
K 取值:
- 当 K 越小, 越容易过拟合
- 当 K 越大, 越容易欠拟合
- 对于 K 的取值, 可以从 1 开始不断尝试, 对比准确率, 最后选取效果最好的 K 值.
KNN 算法的优点:
- 简单易懂
- 处理边界不规则数据的分类问题, 比线性分类器的效果好
KNN 算法的缺点:
- 只适合小数据集
- 对数据容错性偏低
- 存在错误样本
- 数据分布不均衡
改进:
- 大数据集, 选择 KNN 的优化算法, 如 kd-tree
- 数据分布不均衡, 对待测样本周围 K 个近邻数据增加权重, 距离越近, 权重越大.
KNN 算法适合场景:
- 规模数据集:
- KNN 在小规模数据集上表现良好。当数据集较小且维度不高时,KNN算法能够提供较好的分类效果。
- 非线性数据:
- KNN 不依赖数据的分布假设,适用于非线性数据。它对于数据中包含的复杂结构和边界的识别较为有效。
- 无噪声数据:
- KNN 对于噪声较小的数据表现较好。在数据相对干净的情况下,KNN能够更准确地判定数据点的近邻。
- 数据集具有局部结构:
- 如果数据集具有一定的局部结构,即相似的样本点在空间中彼此靠近,KNN 能够较好地捕捉到这种局部关系。
- 多类别问题:
- KNN 对多类别问题表现较好,且对类别之间的决策边界不敏感。这使得它在处理多类别分类问题时具有一定的优势。
- 对计算开销较为敏感:
- 在模型训练阶段,KNN 不需要训练过程,只需存储训练数据。这使得它对于计算开销较为敏感的场景(相对于训练开销较大的算法)非常适用。
- 特征维度较低:
- KNN 在特征维度较低的情况下表现较好。随着维度的增加,KNN算法可能受到“维度灾难”影响,因为在高维空间中,距离计算变得困难,且样本稀疏性增加。
- 领域边界复杂但类别分布相对均匀:
- KNN 能够较好地适应领域边界较为复杂但类别分布相对均匀的情况,因为它不会对类别分布做出明确的假设。
一些适用于KNN算法的案例:
- 图像识别和分类:
- KNN可用于图像分类,例如手写数字识别、人脸识别等。它能够有效地捕捉图像中像素的相似性,从而进行分类。
- 推荐系统:
- KNN可以用于协同过滤,通过分析用户之间的相似性来为用户提供个性化的推荐。例如,为用户推荐电影、商品或音乐。
- 医学诊断:
- 在医学领域,KNN可以用于诊断患者疾病或根据患者的医疗历史为其提供个性化的治疗建议。
- 欺诈检测:
- KNN可用于检测信用卡欺诈、网络安全威胁等。通过分析异常模式,KNN可以标识出不正常的行为。
- 自然语言处理:
- 在文本分类、情感分析等自然语言处理任务中,KNN可以用于度量文本之间的相似性,以便进行分类或聚类。
- 预测:
- KNN可用于预测问题,如股票价格预测、房价预测等。通过分析相似样本的标签,可以为新样本提供预测值。
- 无监督学习:
- KNN还可以用于聚类问题,将相似的样本分组在一起,无监督地发现数据的内在结构。
- 语音识别:
- 在语音处理领域,KNN可以用于识别语音模式,例如说话人识别、语音指令识别等。
- 人脑活动分类:
- 在神经科学中,KNN可以用于分析和分类不同的脑电图(EEG)模式,以研究脑部活动。
- 农业预测:
- KNN可以用于预测农业领域的一些问题,如作物生长预测、疾病诊断等。
文章来源:https://blog.csdn.net/galoiszhou/article/details/135131347
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!