KNN(K-Nearest Neighbors,K最近邻)算法是一种基本且广泛使用的分类与回归方法。在分类任务中,KNN的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取为类别集合中任意一个类别。KNN算法的核心思想是:给定一个测试样本,基于某种距离度量找出训练集中与其最靠近的K个训练样本,然后基于这K个“邻居”的信息来进行预测。
KNN是机器学习中最为简单和经典的一个算法。
目录
1.KNN算法概述
2. 算法原理
1.. 步骤
3. 优缺点
优点:
缺点︰
4. 改进方法
1.KNN算法概述
-
距离度量:首先需要有一个衡量样本之间相似度的标准,常用的距离度量包括欧氏距离、曼哈顿距离、闵可夫斯基距离等。在KNN中,通常使用欧氏距离来作为度量标准。
2.K值选择:K是一个重要的超参数,表示在预测过程中要考虑的最近邻的个数。K值的选择 对结果产生重大影响。如果K值过小,模型对噪声数据非常敏感,容易发生过拟合;如果K 值过大,模型会变得简单,容易欠拟合。
3.投票机制:对于分类任务,KNN采用多数投票法来预测测试样本的类别。即,将测试样本 的K个最近邻的类别进行统计,出现次数最多的类别即为该测试样本的预测类别。
4.加权投票:在一些情况下,可以根据距离的不同对K个邻居的投票进行加权,距离越近的邻 居权重越大,这样可以使预测结果更加合理。
2. 算法原理
基本思想: KNN算法的核心思想是通过计算样本间的距离,基于训练集中最接近的K个邻居的标签来预测新样本的标签。在分类任务中,KNN算法预测新样本的类别为其K个最近邻样本中最常见的类别;在回归任务中,KNN算法预测新样本的值为其K个最近邻样本值的平均值。
1.. 步骤
-
选择K值:
- 选择一个合适的K值(通常是奇数,以避免出现平局),这是算法的一个超参数。
-
计算距离:
- 对于新样本,计算其与训练集中所有样本的距离。常用的距离度量包括欧几里得距离、曼哈顿距离和闵可夫斯基距离。
-
选择K个最近邻:
- 根据计算的距离,将训练集中离新样本最近的K个样本选出来。
-
预测标签:
- 分类任务:统计K个邻居中每个类别的出现次数,将新样本的类别预测为出现次数最多的类别。
- 回归任务:计算K个邻居的平均值,将其作为新样本的预测值。
KNN算法示例图中根据形状指代不同类型的数据
给出一个数据通过KNN算法计算,视图中的模型数据会被K值影响
3. 优缺点
优点:
1.简单,易于理解,易于实现,无需训练;
2.适合对稀有事件进行分类;
3.对异常值不敏感。
缺点︰
1.样本容量比较大时,计算时间很长;
⒉.不均衡样本效果较差;
4. 改进方法
距离度量改进:
- 使用加权距离:对邻居的距离进行加权,距离越近的样本权重越大,从而减少远离样本的影响。
- 特征缩放:在特征的尺度差异较大的情况下,对特征进行标准化或归一化处理,以提高算法性能。
K值选择:
- 使用交叉验证:通过交叉验证选择最优的K值,避免过拟合或欠拟合。
高维数据处理:
- 使用降维技术(如PCA)减少特征维度,以降低计算复杂度和提高预测性能。
KNN算法在处理小规模数据集时表现良好,但在大规模数据集或高维数据中可能会遇到挑战。在这些情况下,可能需要考虑其他更复杂的机器学习算法。