KNN(k-Nearest Neighbor,K近邻)学习笔记

本文为KNN算法的学习笔记

KNN(k-Nearest Neighbor,K近邻)

监督学习、lazy learning

给定测试样本,基于某种距离度量找出训练集中与其最靠近的\(k\)个样本,然后进行相应处理得到预测结果。

距离度量标准

名称 公式 概况 是否常用
欧氏距离 \(d=\sqrt{\sum_{k=1}^{n}(x_{1k}-x_{2k})^2}\),两个\(n\)维向量之间的欧氏距离 简易理解为两点之间的直线距离 更常用
曼哈顿距离 \(d=|x_{1k}-x_{2k}|+\dots|x_{1n}-x_{2n}|\),两个\(n\)维向量之间的曼哈顿距离 简易理解为两个点之间的网格距离
Lp距离 \(d=[\sum_{k=1}^{n}\vert x_{1k}-x_{2k} \vert^p]^{1/p}\),当\(p=1\),为曼哈顿距离;当\(p=2\)时,为欧氏距离

\(k\)值选取

\(k\)折交叉验证法

  • 将数据集分为训练集(大部分)和测试集(小部分)
  • 将训练集分为\(k\)个互不相交、大小相同的子集,进行\(k\)次KNN模型,每次选择其中1个子集作为验证集,其余\(k-1\)个子集为训练集。
  • 选择要设置的\(k\)值范围,从最小值开始,每次以固定值增加。每次迭代计算准确率。
  • 选择上述准确率最高的\(k\)

用于分类

对象的分类由其最相邻的\(k\)个最近邻居中最常见的分类决定

用于回归

输出值是其\(k\)个最近邻居值的平均值或加权平均值

算法流程

KNN算法流程
需要提前设置的 1、选用距离类型
2、选择\(k\)
3、可对不同取值范围特征值进行归一化
计算测试数据和每个训练数据之间的距离
对上述计算的距离进行排序
选择最近的\(k\)个点
分类:统计这\(k\)个点类别出现的频率,频率最高的类别为测试样本的预测分类
回归:计算着\(k\)个点的均值,作为测试样本的预测值输出

参考资料

  1. 图解机器学习 | KNN算法及其应用
  2. KNN算法(k近邻算法)原理及总结-CSDN博客
  3. 机器学习.周志华

KNN(k-Nearest Neighbor,K近邻)学习笔记
http://example.com/2024/11/28/KNN算法/
Author
John Doe
Posted on
November 28, 2024
Licensed under