新闻详情

新闻详情

首页 / 资讯中心 / 详情

【老计带你懂AI算法】05:SVM与KNN,一个死磕最优分界线一个干脆看邻居

发布时间:2026/9/25 19:12:27来源:尧图网络
【老计带你懂AI算法】05:SVM与KNN,一个死磕最优分界线一个干脆看邻居
【老计带你懂AI算法】05SVM与KNN一个死磕最优分界线一个干脆看邻居开头两个画风清奇的分类器前面几篇讲的线性回归、树模型思路各有各的主流。这一篇的两位主角思路都挺有个性也都是机器学习课本里的经典面试常客。SVM支持向量机一个完美主义者画分界线不满足于能分开就行非要找那条离两边都尽可能远、最稳当的线。KNNK近邻一个极简主义者懒到根本不学习来了新样本就看它旁边最近的几个邻居是什么类跟着投票。把它俩放一起讲正好是两种极端一个想得很多、追求最优一个啥都不想、直接抄邻居。理解它们能拓宽你对分类到底能怎么做的想象。SVM不止分开还要分得最稳先说SVM。它解决的是分类问题。想象平面上有两类点红的和蓝的能把它们分开的直线有无数条。随便画一条歪歪扭扭刚好擦着边分开的也算分开了但不稳新来一个点稍微偏一点就分错了。SVM的执念是在所有能分开的线里找那条离两边最近的点都尽可能远的线。换句话说它要让分界线两侧留出尽可能宽的隔离带术语叫间隔margin。隔离带越宽分界越稳对新数据的容错就越强。打个比方在两拨人中间划一条界你不会贴着某一拨人的鼻子划而会尽量划在正中间、离两边都远的位置这样谁稍微动一动也不会越界。SVM找的就是这条最公道、最稳当的中间线。而那些恰好压在隔离带边缘、决定了这条线位置的关键点就叫支持向量SVM这名字就来自这里。有意思的是只有这些关键的边缘点决定分界线离得远的大多数点其实不影响结果。这让SVM有种抓主要矛盾的美感。SVM的杀手锏核技巧处理弯曲的边界上面说的是直线分界。可如果两类点根本没法用直线分开呢比如红点在中间围成一圈、蓝点在外面一圈你拿直线怎么都分不开。SVM有个化腐朽为神奇的绝招核技巧kernel trick。它的思路很妙既然在当前这个平面上分不开那就把这些点升维到一个更高维的空间里在高维空间里它们往往就能被一个平面轻松分开了。打个比方桌面上散落着红豆和绿豆红豆围成一圈、绿豆在外围你在桌面二维上无论如何画不出一条线把它们分开。可如果你猛拍一下桌子让豆子都弹到空中升到三维说不定红豆弹得高、绿豆弹得低这时候你水平伸一张纸一个平面就轻松把上下两拨分开了。核技巧干的就是这个拍桌子升维的事而且它用了数学技巧不用真的把坐标算到高维那样计算量爆炸而是巧妙地绕过去所以叫技巧。这个能力让SVM能处理非线性的、弯弯曲曲的分类边界威力大增。常用的核有RBF核高斯核等选不同的核能应对不同形状的边界。这是SVM在深度学习兴起前很长一段时间称霸中小规模分类任务的看家本领。这里还值得多说一句SVM一个反直觉的优点它在特征多、样本少的场景下表现往往特别好。很多模型遇到特征比样本还多的情况比如基因数据几万个基因特征、却只有几百个病人样本会严重过拟合但SVM因为只关心那几个支持向量、又追求最大间隔这种保守的目标反而不容易被高维带偏。这让它在文本分类词很多、生物信息等高维小样本领域一度非常吃香。理解这一点你就明白为什么SVM不是过时的老古董在特定场景它仍有独特价值。KNN懒到极致直接抄邻居再说KNN它的思路和SVM形成鲜明对比简单到让人怀疑这也算算法KNN的做法是它压根不训练、不学习任何模型。来了一个新样本要分类它就在训练数据里找出离这个新样本最近的K个邻居看这K个邻居里哪一类最多就把新样本判成那一类。就这么简单。打个比方你搬到一个新小区想判断这是个高档区还是普通区最直接的办法就是看你左邻右舍最近的几户他们开什么车、什么装修多数是什么样你这片大概就是什么样。近朱者赤近墨者黑KNN信奉的就是这个。这里的K是你定的看最近几个邻居。K3就看最近3个投票K5就看5个。KNN最特别的地方是它懒术语叫惰性学习。别的模型是训练时吭哧吭哧学好一个模型、预测时飞快KNN反过来训练时啥也不干就把数据存着把所有计算都推迟到预测时才做现算新样本和所有训练样本的距离找最近的K个。这个懒带来一个明显的代价预测慢、且吃内存。因为每预测一个新样本都要跟全部训练数据算一遍距离。数据量一大就慢得吃不消。这是KNN最大的短板。KNN还有个更隐蔽、也更值得理解的软肋叫维度灾难。KNN靠距离近不近来判断像不像这在特征少二维三维时很直观。可当特征维度非常高几百上千维时一个诡异的数学现象出现了在高维空间里所有点之间的距离会变得越来越接近最近的邻居和最远的点距离差别没那么大了近邻这个概念就失去了意义。打个比方在一条线上一维你很容易分辨谁离你最近可想象在一个几百维的空间里所有人都不远不近地散在四面八方谁离我最近这个问题就变得模糊不清了。维度一高KNN赖以生存的距离就不可靠了效果直线下降。这个维度灾难不只坑KNN它是所有靠距离度量的方法包括后面要讲的聚类都要面对的普遍难题。应对办法之一就是先用降维比如后面要讲的PCA把维度压下来再用KNN。这也是为什么很多模型要配合使用一个的短板靠另一个来补。输入和输出长什么样SVM输入数值特征注意SVM对特征的量纲敏感通常要先做标准化/归一化否则某个数值特别大的特征会主导距离这是用SVM的一个必做预处理。输出类别也有能出概率的变体。KNN输入数值特征同样对量纲敏感也要先标准化因为它靠算距离量纲不统一距离就失真。输出分类给类别、也能做回归取邻居的平均值。这两个模型都靠距离吃饭所以都有个共同的必修课先把特征标准化。这是新手常忘、然后效果差得莫名其妙的一个坑。上代码SVM和KNN都跑一遍含标准化# 依赖pip install scikit-learnfromsklearn.datasetsimportload_breast_cancerfromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerfromsklearn.svmimportSVCfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.pipelineimportmake_pipeline X,yload_breast_cancer(return_X_yTrue)Xtr,Xte,ytr,ytetrain_test_split(X,y,test_size0.3,random_state0)# 关键用Pipeline把标准化和模型串起来保证先归一化再喂给模型# SVM用RBF核处理非线性边界svmmake_pipeline(StandardScaler(),SVC(kernelrbf,C1.0))svm.fit(Xtr,ytr)print(SVM(RBF核) 测试集准确率:,round(svm.score(Xte,yte),3))# KNN看最近5个邻居投票knnmake_pipeline(StandardScaler(),KNeighborsClassifier(n_neighbors5))knn.fit(Xtr,ytr)# KNN的fit其实只是把数据存起来print(KNN(K5) 测试集准确率:,round(knn.score(Xte,yte),3))# 试试不标准化的KNN对比看看差距knn_badKNeighborsClassifier(n_neighbors5)knn_bad.fit(Xtr,ytr)print(KNN(没标准化) 准确率:,round(knn_bad.score(Xte,yte),3))运行输出示例SVM(RBF核) 测试集准确率: 0.977 KNN(K5) 测试集准确率: 0.971 KNN(没标准化) 准确率: 0.930运行你会发现标准化过的KNN明显比没标准化的准。这直观展示了靠距离吃饭的模型必须先标准化这个铁律。SVM同理。关键参数SVMC惩罚系数控制对分错样本的容忍度。C大对错误零容忍、边界贴合训练数据、容易过拟合C小允许一些错误、边界更宽松、更泛化。又是那个拟合与过拟合的权衡。kernel核函数线性核处理线性可分、RBF核处理非线性最常用RBF。KNNK邻居数最关键的参数。K太小比如1容易被个别噪声邻居带偏、过拟合K太大又会把远处不相关的点也算进来、变得迟钝。通常取个适中的奇数奇数是为了投票不平局。优缺点与适用场景SVM优点在中小规模数据上分类效果好、有核技巧能处理非线性、理论优雅。缺点数据量一大就训练慢、对参数和核的选择敏感、要标准化、可解释性一般。适合中小规模、特征维度较高、需要处理非线性边界的分类。KNN优点极简单、无需训练、思路直观、天然支持多分类。缺点预测慢且吃内存数据大就崩、对量纲敏感要标准化、维度高了效果差维度灾难。适合数据量不大、需要一个快速简单基线、或作为教学理解分类的入门。它俩今天在工业界一线用得不如树模型多树模型在表格数据上又准又省心但作为经典思路理解它们对建立机器学习的全局观很有价值面试也常考。补一个实用的选型建议帮你记住什么时候会想起它俩当你的数据是中小规模、特征维度高、还需要处理复杂非线性边界比如文本分类、某些生物医学数据SVM值得一试它在这类场景常有惊喜。当你需要一个极快搭起来、逻辑上谁都能看懂的基线或者做推荐/相似检索这种找最像的任务KNN的看邻居思路很自然其实现在向量数据库做相似检索内核思想就和KNN一脉相承都是在高维空间找最近邻只是用了更高效的索引。当你就是普通的表格数据分类回归、还追求高精度和省心那大概率你最后还是会回到随机森林和XGBoost这也是为什么前面几篇花了更多笔墨在树模型上。这三个建议连起来就是一句话SVM和KNN是有独特价值的专用工具不是万金油知道它们的脾气才能在合适的场景想起用它们。尤其KNN和相似检索、向量数据库的渊源在今天的RAG、推荐系统里还在延续绝不是屠龙之技。小结与承上启下SVM找离两边最远、最稳的分界线最大间隔靠支持向量决定核技巧升维处理非线性。KNN懒到不学习预测时看最近K个邻居投票简单但慢、吃内存。共同必修课都靠距离吃饭必须先标准化特征。到这主流的分类思路线性、树、间隔、近邻都见过了。下一篇我们讲一个用概率来分类的经典模型它简单、快、还是垃圾邮件过滤的老功臣朴素贝叶斯。我们下一篇见。延伸阅读scikit-learn 官方文档支持向量机SVMhttps://scikit-learn.org/stable/modules/svm.htmlscikit-learn 官方文档最近邻KNNhttps://scikit-learn.org/stable/modules/neighbors.html说明以上为官方公开文档地址可能随版本调整如打不开可用标题搜索。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

小白程序员必看:轻松入门大模型Agent,掌握未来AI核心技能! 2026/9/25 19:46:34

小白程序员必看:轻松入门大模型Agent,掌握未来AI核心技能!

本文深入解析了LLM Agents的外部化设计,从权重到上下文再到Harness,阐述了能力迁移的三个阶段。重点介绍了记忆、技能、协议三个外部化维度,以及Harness作为工程层的核心作用。文章强调,可靠的Agent能力不仅来自模型内部参数&…

阅读更多 →
自动化生成多节点聚合排障周报:AI 提炼全网流量趋势与风险 Top5 2026/9/25 19:46:34

自动化生成多节点聚合排障周报:AI 提炼全网流量趋势与风险 Top5

自动化生成多节点聚合排障周报:AI 提炼全网流量趋势与风险 Top5在大型企业级分布式基础设施运维中,运维团队每周都需要向技术总监(CTO)和安全委员会提交一份**《全网网络流量与安全运行周度分析报表》**。 在过去,这项…

阅读更多 →
AI转行必看:大模型技能全景与高薪Offer获取指南(收藏版) 2026/9/25 19:46:27

AI转行必看:大模型技能全景与高薪Offer获取指南(收藏版)

本文为AI核心技能系列收官篇,系统梳理AI领域岗位分类、核心技能矩阵,重点解析AI应用工程师和Agent开发工程师的转行路径。强调实践重要性,提供简历撰写技巧、项目作品集构建方法及学习路线图,助读者通过动手项目提升竞争力&#x…

阅读更多 →
【零基础上手】Windows 部署 OpenClaw 教程:用 TaoToken 统一 Key 打通本地 AI 智能体配置 2026/9/25 19:46:20

【零基础上手】Windows 部署 OpenClaw 教程:用 TaoToken 统一 Key 打通本地 AI 智能体配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
本科毕业论文提速90%!9款AI论文工具配TaoToken实战指南 2026/9/25 19:46:14

本科毕业论文提速90%!9款AI论文工具配TaoToken实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
电商运营应届岗数据工具清单:Excel、SQL、BI与平台后台 2026/9/25 19:46:14

电商运营应届岗数据工具清单:Excel、SQL、BI与平台后台

一、先回答:电商运营应届生最该会哪些工具麦可思研究院《2025年中国本科生就业报告》显示,2024届本科毕业生基本工作能力满足度为90%,但数字素养仍有提升空间;电商运营岗正是数字素养落地很快的岗位。(一)第…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉