当前位置: 首页 > news >正文

The Study Note of K-NN Algorithm

数据标准化

Background

K-NN 等机器学习模型的工作内容依赖于初始数据集中数据分布的特点。为了使算法能够正确对新数据进行预测、分类等操作,我们需要对原始数据集进行预处理,减少噪声、离群点等异常数据对模型质量的影响,提高模型预测精度。

数据标准化是预处理过程的一个特定子集,具体而言属于预处理中的数据变化步骤。其主要行为是对原始数据进行线性变换,使得数据符合特定的数值范围或分布特征。数据标准化通常包括两种常见方法:归一化和标准化。

归一化(Normalization)通常将数据缩放到一个固定的区间,例如 [0, 1] 或 [-1, 1]。这种方法适用于数据分布范围已知,且对极值敏感的场景。例如,在图像处理中,像素值常被归一化到 0 到 1 之间,以加快模型训练速度并提高收敛稳定性。

标准化(Standardization)则通过调整数据的均值和标准差,使其符合标准正态分布(均值为 0,标准差为 1)。这种方法适用于数据分布未知或存在明显偏差的情况,能够有效减少不同特征之间的量纲差异对模型的影响。


数据归一化

常见的数据归一化方式有以下几种:

  1. MinMax算法

  2. Log归一化

  3. Mean归一化

  4. 分数倍归一化

MinMax算法

公式:

\(x' = \frac{x - \min}{\max - \min}\)

目的:将数据线性映射至 \([0,1]\) 区间内

优点:保障了数据分布的特征和规律

缺点:如果数据中存在极端的离群值则会将数据压扁,让正常数据处于中间区间

Log归一化

公式:

\(x' = \log(x)\)

目的:通过取对的方式压缩数据的范围

特点:处理数值跨度巨大的数据,将指数级增长的数据拉回到线性尺度,使模型更容易捕捉小数值区域的变化。

Mean归一化

公式:

\(x' = \frac{x - \text{mean}}{\max - \min}\)

特点:和MinMax相似,但将数据中心(数据的几何中心)移至0

分数倍归一化

公式:

\(x' = \frac{x}{10^j}\),(其中 \(j\) 是使 \(\max(|x'|) < 1\) 的最小整数)

特点:计算简单

Summary

无论哪种归一化公式,其目的都是通过数值变换将原本分布广泛的区域映射到范围更小的区域,削减数值较大的离群点对模型更新中的主导作用

K值选取方法

Background

K-NN是机器学习中最基础的算法之一,其核心思想是“近朱者赤,近墨者黑”。该算法通过计算待分类点周围最近K个数据中不同类别的分布概率,选取概率最大的类别作为新数据的分类结果。算法的关键在于K值的选取:K值较小,则数据探测范围较小,模型更容易捕捉精细边界,但也容易陷入过拟合;K值较大,则数据探测范围较大,模型抗噪声能力更强,但也容易陷入欠拟合。因此,K值的选取是决定K-NN算法泛化能力的关键一步。


K 值的选取主要依赖于 交叉验证法,其中,根据样本集的不同,可以选用经验公式与先验评估、肘部法则以及逻辑约束等方法辅助选取 K 值。

经验公式与先验评估

根据 K 值在 K-NN 算法中的作用我们可以知道,K 值不能过大同样也不能过小。人们在多次去值后发现, \(K \approx \sqrt{N}\) (N为样本数量)。通过经验公式,我们可以确定最佳 K 值搜索的起点,缩小搜索空间。

肘部法则

KNN-肘部法则

在 K 值的选取中,K 越小,模型越容易过拟合;K 值越大,模型越容易欠拟合。肘部法则主要作为交叉验证结果的定性解释与决策辅助工具。通过绘制候选 K 值与其对应的交叉验证误差率曲线,我们可以直观地观察到模型泛化性能随局部邻域扩大的演变趋势,并根据趋势选择最优的权衡点(肘部)

交叉验证法

Background

该方法采用了类似数学中“穷举”的思想,通过将数据集分为训练集和验证集,尝试一系列 K 值,分别计算模型在验证集上的错误率,选取错误率最小且曲线区域平缓的 K 值。交叉验证中的“交叉”在该方法中具体体现在划分出的每个数据子集都参与了验证集和训练集的扮演,提高了评估的准确性


交叉验证法最常见的形式是 \(K - Fold\) 验证法(为了和 K 进行区分,下面 K-Fold 中的 K 用 F 替代),具体步骤如下:

  1. 数据切分:将原始训练数据集随机打乱,并平均分成 F 个不相交的子集(称为“Flod”)。

  2. 循环迭代:选取一个想要进行测试的 K 值进行 F 轮训练和验证。在第 i 轮中:

    • 将第 i 个子集固定为验证集(Validation Set)

    • 将其余 F-1 个子集整合为训练集(Training Set)

    • 在训练集上训练模型,在验证集上计算评价指标(如准确率或 MSE)。

  3. 指标聚合:计算这 F 轮评价指标的平均值,作为该 K 值下模型的性能评估。

  4. K值选取:挑选出平均准确率最高(或平均误差最小)的 K 值,作为最终选取的参数

具体流程图如下

Finding+the+best+K+in+K-NN

伪代码

Algorithm: Select Best K for KNN using F-Fold Cross ValidationInput:Dataset (Features and Labels)Candidate_K_List (e.g., [1, 3, 5, 7, 9, 11])F (Number of folds, e.g., 5)Output:Best_K (The optimal number of neighbors)Procedure:1. Randomly shuffle the Dataset.2. Split the Dataset evenly into F independent folds: Fold_1, Fold_2, ..., Fold_F.3. Initialize an empty dictionary Average_Scores to store the final score of each K.4. For each current_k in Candidate_K_List:a. Initialize an empty list Current_K_Scores.b. For i from 1 to F:i.   Validation_Set = Fold_iii.  Training_Set = All folds combined EXCEPT Fold_iiii. Train a KNN model using Training_Set with K = current_kiv.  Test the trained model on Validation_Set to get an Accuracy_Scorev.   Append Accuracy_Score to Current_K_Scoresc. Calculate the Mean_Accuracy of Current_K_Scores.d. Store Mean_Accuracy in Average_Scores under the key current_k.5. Best_K = The key in Average_Scores corresponding to the highest Mean_Accuracy.6. Return Best_K

误差率的计算

交叉验证法的误差率计算本质上就是对经验误差求解数学期望的过程,具体而言:

假设我们将整个数据集均匀划分为 F 个互不相交的子集。在第 i 轮迭代中,第 i 个子集被指定为验证集,其余 F-1 个子集共同构成训练集。

对于验证集中的每一个输入样本,算法会基于当前设定的 \(K\) 值以及距离度量规则来预测其类别。单次 Fold 误差率 \(E_i\) 的数学本质是误分类样本在当前验证集总样本中所占的比例

\(E_i = \frac{1}{m_i} \sum_{j=1}^{m_i} I(y_j \neq \hat{y}_j)\)

其中,\(m_i\) 代表第 \(i\) 个验证集所包含的样本总数,\(y_j\) 是该样本客观真实的类别标签,而 \(\hat{y}_j\) 则是 KNN 模型输出的预测类别。指示函数 \(I(y_j \neq \hat{y}_j)\) 的判定逻辑是:当预测类别与真实类别不一致时,函数值为 1;若一致,则为 0。将其在验证集上累加并求平均,即可得到当前这一 Fold 的错误率。

当完整的 \(F\) 轮交替验证迭代执行完毕后,系统会收集到一个包含 \(F\) 个独立单 Fold 误差率的集合。为了彻底消除由于单一数据切分方式所引入的偶然性与随机偏差,算法会对这组离散的误差率求算术平均值。最终该候选 \(K\) 值的全局交叉验证误差率 \(E_{CV}(K)\) 为:

\(E_{CV}(K) = \frac{1}{F} \sum_{i=1}^{F} E_i\)

http://www.jsqmd.com/news/451832/

相关文章:

  • 抖音无水印视频下载全攻略:从痛点到解决方案的完整指南
  • 测试02测试68测试02测试68测试02测36测试02测试68测试02测试68测试02测36
  • Stable-Diffusion-V1-5 跨平台开发:.NET桌面应用集成AI绘画功能
  • 雪女-斗罗大陆-造相Z-Turbo极限压力测试:高并发请求下的吞吐量与稳定性表现
  • 3个维度解锁TrollInstallerX:iOS 14-16.6.1 TrollStore部署工具全解析指南
  • cv_unet_image-colorization部署教程:Airflow定时任务调度老照片批量上色工作流
  • Scan2CAD AI转化与CAD建模革新指南
  • 探索CoreCycler实战:CPU核心稳定性测试与极限调校指南
  • 鹰眼目标检测YOLOv8快速入门:WebUI可视化,一键上传即用
  • 破解数据安全与效率困境:Umi-OCR如何通过本地化处理实现90%识别提速
  • 效率提升实战:用快马快速生成可实时调参的视频效果调试器
  • Qwen3-TTS-12Hz-1.7B-VoiceDesign语音克隆伦理问题探讨与技术对策
  • Scan2CAD技术指南:从扫描图像到CAD模型的智能转化方案
  • AVIF格式插件技术解析:重新定义Photoshop图像压缩标准
  • PDF-Parser-1.0效果展示:多栏PDF文档解析前后对比惊艳
  • 手把手教学:LightOnOCR-2-1B从安装到实战,图片文字提取全流程解析
  • 告别繁琐配置:用快马ai一键生成nodejs环境搭建与验证项目原型
  • PP-DocLayoutV3文档解析实战:基于Python爬虫的自动化信息抽取
  • Qwen-Image-2512-Pixel-Art-LoRA实操手册:三档步数(10/30/45)效果对比与选型指南
  • 开源可商用!MT5本地文本改写工具,保护隐私零成本
  • 3个高效秘诀:零门槛实现抖音视频无水印保存
  • Qwen3-0.6B部署避坑指南:常见问题解决与LangChain调用技巧
  • Retinaface+CurricularFace部署案例:医院挂号系统中患者身份自动核验
  • CHORD-X系统Keil5开发环境联动:为嵌入式前端注入视觉智能
  • 保姆级教学:Sonic数字人视频制作,从上传素材到导出视频全流程
  • Git-RSCLIP在软件测试中的应用:自动化验证图文内容
  • Guohua Diffusion 惊艳作品集:多种风格图像生成效果展示
  • AI 辅助开发实战:基于大模型高效构建毕设直播带货系统
  • 从单片机到AI服务器:嵌入式AI与云端协同的卡证处理方案
  • 市面上靠谱的2026板材厂家哪家专业 - 品牌推荐(官方)