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\)个点的均值,作为测试样本的预测值输出 |
参考资料
KNN(k-Nearest Neighbor,K近邻)学习笔记
http://example.com/2024/11/28/KNN算法/