目录
一、算法概述
二、算法原理
1. 数据集准备
2. 输入新数据
3. 距离计算
4. 选择K个最近邻
5. 预测
三、关键要素
1. K值的选择
2. 距离度量方法
3. 数据预处理
四、算法优缺点
优点
缺点
五、总结
KNN(K-Nearest Neighbors,K最近邻)算法是一种简单直观的机器学习算法,它既可以用于分类也可以用于回归。
一、算法概述
KNN算法通过测量不同数据点之间的距离来进行分类或回归。其核心思想是:对于一个待分类或预测的样本,算法会找到与之距离最近的K个邻居(即训练集中的样本),并根据这K个邻居的类别或属性值来预测该样本的类别或值。
二、算法原理
1. 数据集准备
- 存在一个样本数据集合,也称为训练样本集。
- 样本集中的每个数据都存在标签,即每个数据点与所属分类的对应关系已知。
2. 输入新数据
- 输入一个没有标签的新数据(待分类或预测的样本)。
3. 距离计算
- 将新数据的每个特征与训练样本集中每个数据对应的特征进行比较。
- 使用特定的距离度量方法(如欧氏距离、曼哈顿距离等)计算新数据与每个训练样本之间的距离。
4. 选择K个最近邻
- 根据计算得到的距离,对新数据进行排序,找出距离最小的K个训练样本作为最近邻。
- 通常,K的值是不大于20的整数,需要通过实验调参来确定最优值。
5. 预测
- 对于分类问题:
- 查看K个最近邻中最常见的类别。
- 将这个最常见的类别作为新数据的预测类别。
- 对于回归问题:
- 对K个最近邻的目标值取均值或加权平均值。
- 将这个平均值作为新数据的预测值。
三、关键要素
1. K值的选择
- K值的选择对KNN算法的性能有很大影响。
- 较小的K值可能导致模型过拟合,较大的K值可能导致模型欠拟合。
- 通常通过交叉验证等方法来选择最优的K值。
2. 距离度量方法
- 常用的距离度量方法包括欧氏距离、曼哈顿距离等。
- 距离度量方法的选择取决于数据的特性和问题的背景。
3. 数据预处理
- 在进行KNN算法之前,通常需要对数据进行预处理,包括归一化或标准化等。
- 预处理可以确保所有特征在计算距离时具有相等的权重,避免某些特征因为数值范围大而对结果产生过大的影响。
四、算法优缺点
优点
- 简单易懂,易于实现。
- 适用于多类别问题。
- 无数据输入假定,对数据分布没有假设性。
- 适用于大型数据集,训练时间复杂度较低。
- 可以进行在线学习,即当新的样本出现时可以直接加入到已有的训练样本中进行分类或预测。
缺点
- 计算复杂度高,需要计算待分类样本与所有训练样本的距离。
- 对异常值敏感,异常值可能会对分类或预测结果产生较大影响。
- 需要确定K的值,选择不恰当的K值可能会产生较大的误差。
- 当数据集中某个类别的样本数量较少时,分类结果可能会受到影响。
- 在处理高维度数据时可能会遇到维数灾难的问题。
五、总结
KNN算法是一种基于距离度量的简单直观的机器学习算法,它通过找到待分类或预测样本的K个最近邻来进行分类或预测。