楼主: 白bai
67 0

[学科前沿] 2. 机器学习 - KNN算法 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
70 点
帖子
6
精华
0
在线时间
0 小时
注册时间
2018-1-16
最后登录
2018-1-16

楼主
白bai 发表于 2025-12-11 14:47:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

2. 机器学习 - KNN算法

1)是什么

K近邻(K-Nearest Neighbors,简称KNN)是一种直观且易于理解的监督学习方法,广泛应用于分类与回归任务中。其核心思想是:对于一个待预测的新样本,算法会在训练数据中找出与其最相似的K个已知样本(即“邻居”),然后依据这些邻居的信息来决定该样本的类别或输出值。通常使用欧氏距离、曼哈顿距离等度量方式计算样本间的相似性。

???? 小结: KNN是一种典型的“懒惰学习”算法,不进行显式训练过程,而是通过查找最近的K个邻居实现预测,依赖于局部相似性原则。

2)为什么有效

KNN的有效性建立在一个基本假设之上:相似的输入往往具有相似的输出。当数据在空间中呈现出明显的局部聚集特性时,这种“物以类聚”的规律使得KNN能够准确捕捉到潜在模式。此外,由于无需模型训练阶段,KNN直接基于原始数据进行推理,因此实现简单、逻辑清晰,适合快速验证和解释性要求较高的场景。

???? 小结: 基于“相似性驱动”的预测机制,KNN适用于局部结构明显的数据分布,且避免了复杂的建模流程。

3)适用场景

  • 数据集规模较小或中等;
  • 特征维度较低,变量数量有限;
  • 样本在空间中呈现清晰的局部聚集趋势;
  • 分类边界复杂、非线性或不规则;
  • 需要高可解释性或用于快速原型开发。

???? 小结: 在低维、小样本且局部结构显著的情况下,KNN是一个高效且可靠的初始选择。

4)不适用场景

  • 高维数据(易受“维度灾难”影响);
  • 训练样本量极大(导致预测速度慢);
  • 特征之间存在显著的量纲差异(需预处理);
  • 对实时响应有严格要求(每次预测需遍历全部数据);
  • 类别严重不平衡(可能偏向多数类)。

???? 小结: 面对高维、大规模或对效率敏感的应用,KNN性能下降明显,应谨慎使用或结合优化手段。

5)总结

KNN作为基础但实用的算法,具备无需训练、逻辑透明、实现简便的优点,特别适用于小规模、低维数据的分类任务。然而,其预测复杂度随数据增长而上升,且对噪声、异常值较为敏感。实际应用中,建议配合特征缩放、降维、距离加权等预处理策略提升鲁棒性和效率。

???? 小结: KNN堪称“懒人算法”的代表——简单直接,适合作为基准模型或入门工具,但在精度与效率之间需合理权衡。

概念扩展

2.1 距离度量方式

在聚类、分类及回归任务中,衡量样本间“相似性”或“差异性”的关键在于距离的选择。不同距离公式适应不同数据特性和应用场景。

2.1.1 曼哈顿距离

又称“城市街区距离”,表示两点在标准坐标系上的绝对轴距总和,仅允许沿坐标轴方向移动。

  • 适用场景:高维稀疏数据、具有明确边界结构的特征空间;
  • 优点:对异常值鲁棒性强,计算开销小;
  • 缺点:忽略变量之间的几何关联,无法反映斜向关系。

???? 小结: 曼哈顿距离适用于网格状路径问题,在L1正则化及相关模型中有广泛应用。

2.1.2 欧式距离

基于勾股定理定义的两点间直线距离,是最符合人类直觉的距离形式。

  • 适用场景:连续型数值特征、低维空间中的相似性比较;
  • 优点:几何意义明确,广泛用于KNN、K-Means等算法;
  • 缺点:受特征尺度影响大,高维下易出现“距离趋同”现象。

???? 小结: 欧式距离是标准几何距离,但使用前应进行归一化处理以消除偏差。

2.1.3 切比雪夫距离

定义为各维度上差值的最大绝对值,即最大坐标差距。

  • 适用场景:棋盘上国王移动路径模拟、误差容忍系统设计;
  • 优点:关注最不利维度的变化,适合极端情况分析;
  • 缺点:忽略其他维度贡献,信息利用率较低。

???? 小结: 切比雪夫距离强调“最大偏差”,适用于对极端偏差敏感的任务控制。

2.1.4 闵可斯基距离

作为多种距离的统一表达形式,其公式随参数p变化而演化:

  • 当 p=1 → 对应曼哈顿距离;
  • 当 p=2 → 对应欧式距离;
  • 当 p→∞ → 趋近于切比雪夫距离。

该距离具备高度灵活性,可通过调节p值适配不同需求。

???? 小结: 闵可夫斯基距离提供了一个通用框架,便于在聚类与相似度分析中动态调整距离行为。

2.2 分类与回归问题的解决流程

无论是分类还是回归任务,通用的建模范式如下:

  1. 确定任务类型:判断为分类或回归问题;
  2. 收集并清洗数据;
  3. 执行特征工程(包括选择、构造与变换);
  4. 选择合适模型(如KNN);
  5. 模型拟合(KNN省略此步);
  6. 交叉验证与超参数调优;
  7. 模型评估与部署上线。

2.3 特征预处理:归一化与标准化

为了防止某些特征因数值范围过大而主导模型决策,必须进行特征缩放处理。这是提升模型稳定性和性能的关键步骤。

2.3.1 归一化
  • 输出范围:[0, 1]
  • 常用方法:Min-Max Scaling
  • 适用场景:数据分布较稳定、无显著异常值、需要限定区间(如图像像素)

???? 小结: 归一化将原始数据线性压缩至指定区间,常用于神经网络、图像处理等领域。

2.3.2 标准化
  • 输出性质:均值为0,标准差为1
  • 常用方法:Z-score 标准化
  • 适用场景:存在离群点、满足近似正态分布、用于线性模型(如SVM、逻辑回归)

???? 小结: 标准化消除量纲干扰,使特征更具统计一致性,有助于模型更快收敛。

2.4 超参数选择:交叉验证与网格搜索

超参数的选择直接影响模型表现,合理的调参策略至关重要。交叉验证与网格搜索是经典组合方案。

2.4.1 交叉验证

目的:更可靠地评估模型泛化能力,降低过拟合风险。

常用方法包括:

  • K折交叉验证(K-Fold CV)
  • 留一法(Leave-One-Out)
  • 时间序列分割(TimeSeriesSplit)
from sklearn.model_selection import cross_val_score

2.4 模型评估与优化

2.4.1 交叉验证(Cross-Validation)

为提升模型评估的稳定性,避免因训练集和测试集单次划分带来的偶然偏差,常采用交叉验证方法。通过将数据多次划分并计算平均性能,能够更可靠地反映模型的真实表现。 代码示例: scores = cross_val_score(model, X, y, cv=5, scoring='accuracy') 小结: 交叉验证通过多轮数据划分有效降低评估结果的波动性,提供更为稳健的模型性能估计,适用于各类建模任务中的效果验证。

2.4.2 网格搜索(Grid Search)

为了系统化地寻找最优超参数组合,可使用网格搜索技术。该方法会遍历预定义参数的所有可能组合,并结合交叉验证选出泛化能力最强的模型配置。 实现方式如下: from sklearn.model_selection import GridSearchCV param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']} grid_search = GridSearchCV(SVC(), param_grid, cv=5) grid_search.fit(X_train, y_train) 小结: 尽管网格搜索在大规模参数空间下计算成本较高,但其对小规模超参数集合具有良好的适用性,能确保不遗漏最佳组合。

2.5 模型性能评分指标

模型的表现需要借助量化指标进行衡量,不同任务类型对应不同的评价标准。

2.5.1 model.score() 方法

该方法用于快速获取模型在指定数据集上的默认评分结果。 - 分类任务中:返回准确率(accuracy) - 回归任务中:返回决定系数 R 使用示例: score = model.score(X_test, y_test) print(f"R Score: {score}") 小结: model.score() 提供了一种简便的评估手段,但在实际应用中应确认其默认指标是否符合当前问题的需求,必要时替换为更合适的度量方式。

2.5.2 accuracy_score() 函数

专用于分类任务中准确率的精确计算,其公式为: 准确率 = 正确预测的样本数 / 总样本数 调用方式: from sklearn.metrics import accuracy_score acc = accuracy_score(y_true, y_pred) 注意事项:当类别分布极度不平衡时,准确率可能产生误导,建议配合 F1 分数、AUC 等更具鲁棒性的指标共同分析。 小结: accuracy_score() 是最直观的分类性能指标之一,适合初步分析;但在非均衡数据场景下需谨慎解读。

2.6 综合总结

| 主题 | 关键点 | 推荐使用场景 | |------------------|----------------------------------------|----------------------------------| | 距离计算 | 曼哈顿距离、欧式距离、切比雪夫距离、闵可夫斯基距离 | 聚类分析、相似性匹配 | | 特征预处理 | 归一化与标准化的选择 | 数据缩放前的必要步骤 | | 交叉验证 | K折交叉验证、时间序列专用划分 | 防止过拟合,增强模型稳定性 | | 网格搜索 | 全面搜索超参数组合 | 参数空间较小且追求最优解的情况 | | 模型评分 | 使用 .score() 和 accuracy_score() | 快速评估模型整体表现 | 最终建议: 建模流程中应始终遵循“先特征预处理 → 再结合交叉验证与网格搜索优化模型 → 最后从多个维度综合评估性能”的原则,以确保结果的可靠性与实用性。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Knn算法 机器学习 knn timeseries Validation

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-24 15:35