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

机器学习算法篇(八)-------svm支持向量机

目录

​​1. SVM 的核心原理(必须掌握)​​

​​2. Python 中的实践重点​​

​​(1) Scikit-learn 的 SVM 实现​​

​​(2) 数据预处理​​

​​(3) 模型评估与调优​​

​​3. 学习侧重点优先级​​

​​4. 经典案例实践方向​​

​​5. 学习资源推荐​​

​​总结​​

附录


基于svm支持向量机的二分类算法是深度学习神经网络出来前,最受欢迎的机器学习算法,没有之一,其算法原理的非数学部分还是非常容易理解的-------找到一个最佳的超平面,将数据分成两类的同时,间隔最大,然后就是啪啦啪啦一大堆的数学建模求解这个问题,煮啵自知功力有限,不在这里班门弄斧了,但又想大家不错过这个算法,所以我在这里只提供一下以能够灵活应用为导向,学习这个算法的思路和侧重点,附上几篇我认为写的非常好的有关svm支持向量机的算法或应用讲解的博文,链接放在文末,读者可以点击链接去阅读欣赏:

学习 ​​SVM(支持向量机)​​ 并在 Python 中实际应用时,你的学习侧重点应该围绕以下几个核心方向:


​1. SVM 的核心原理(必须掌握)​

  • ​核心思想​​:

    • 寻找一个​​最优超平面​​(决策边界),最大化不同类别数据之间的​​间隔​​(Margin)。

    • 对线性不可分数据,通过​​核技巧(Kernel Trick)​​ 映射到高维空间实现分离。

  • ​关键概念​​:

    • ​支持向量​​:距离超平面最近的样本点,决定超平面的位置。

    • ​间隔(Margin)​​:支持向量到超平面的距离,越大则模型泛化能力越强。

    • ​核函数(Kernel)​​:解决非线性问题的数学工具(如线性、多项式、高斯核)。


​2. Python 中的实践重点​

​(1) Scikit-learn 的 SVM 实现​
from sklearn.svm import SVC
model = SVC(kernel='rbf', C=1.0, gamma='scale')  # 高斯核
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
  • ​关键参数​​:

    • kernel:核函数(linear, poly, rbf, sigmoid)。

    • C:正则化参数,控制分类器的​​容错性​​(越小容错性越强)。

    • gamma(高斯核专属):控制决策边界的​​复杂度​​(值越大越容易过拟合)。

​(2) 数据预处理​
  • SVM 对数据​​尺度敏感​​,必须标准化:

    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_train = scaler.fit_transform(X_train)
    X_test = scaler.transform(X_test)
​(3) 模型评估与调优​
  • ​评估指标​​:准确率(accuracy_score)、混淆矩阵(confusion_matrix)。

  • ​调参工具​​:网格搜索(GridSearchCV):

    from sklearn.model_selection import GridSearchCV
    param_grid = {'C': [0.1, 1, 10], 'gamma': [0.1, 1, 10]}
    grid = GridSearchCV(SVC(), param_grid, cv=5)
    grid.fit(X_train, y_train)
    print(grid.best_params_)

​3. 学习侧重点优先级​

​优先级​

​内容​

​为什么重要?​

★★★★★

核函数选择与参数调优

直接决定模型能否解决非线性问题

★★★★☆

数据标准化与特征工程

SVM 对数据分布敏感,需保证特征尺度一致

★★★☆☆

支持向量的可视化与分析

理解模型如何做决策(适合二维/三维数据)

★★☆☆☆

数学推导(拉格朗日乘子法)

工程中通常不需要,但面试/科研可能需要


​4. 经典案例实践方向​

  1. ​线性可分数据​​:

    • 使用 kernel='linear',观察支持向量和决策边界。

    • 案例:鸢尾花分类(sklearn.datasets.load_iris)。

  2. ​非线性数据​​:

    • 使用 kernel='rbf',调整 gamma观察过拟合/欠拟合。

    • 案例:月亮数据集(sklearn.datasets.make_moons)。

  3. ​不平衡数据​​:

    • 使用 class_weight参数处理类别不平衡。

    • 案例:信用卡欺诈检测(Kaggle数据集)。


​5. 学习资源推荐​

  • ​快速入门​​:Scikit-learn 官方文档 SVM指南

  • ​深入原理​​:《统计学习方法》(李航)第7章

  • ​实战项目​​:Kaggle 上的 SVM 案例(如手写数字识别)

  • csdn博客: 链接放在文末了


​总结​

你的学习路径应该是:

​理解核心思想 → 掌握调参技巧 → 解决实际问题​​。

数学推导可以后期补足,优先​​能用 Python 实现并调优模型​​。


附录

天阶:

支持向量机通俗导论(理解SVM的三层境界)-CSDN博客文章浏览阅读10w+次,点赞3.4k次,收藏1.2w次。动笔写这个支持向量机是费了不少劲和困难的,原因很简单一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见文末参考链接),但在描述数学公式的时候还是显得不够。得益于同学白石的数学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能足以成为一篇完整概括和介绍支持向量机的导论性的文章本文在写的过程中,参考了不少资料,包括《支持向量机导论》、《统计学习方法》及网友pluskid的支持向量机系列等等,于此,还是一篇。_支持向量机 https://blog.csdn.net/v_JULY_v/article/details/7624837?fromshare=blogdetail&sharetype=blogdetail&sharerId=7624837&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link机器学习最经典算法-SVM支持向量机-【基本解读算法+详细实际案例分部流程】_svm算法实战-CSDN博客文章浏览阅读5.8k次,点赞16次,收藏67次。本文深入浅出地介绍了支持向量机(SVM)的基本原理,包括数学推导、核函数选择及参数调节等内容,并通过多个案例展示了SVM在人脸识别等实际应用场景中的强大表现。 https://blog.csdn.net/weixin_43213884/article/details/115924152?fromshare=blogdetail&sharetype=blogdetail&sharerId=115924152&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link

天街残卷,需要取其精华,多篇整合:

支持向量机(SVM)详解:原理、API使用与实战案例-CSDN博客文章浏览阅读621次。支持向量机_使用支持向量机算法对训练集建模为什么要选择1和0 https://blog.csdn.net/weixin_45707277/article/details/120639424?fromshare=blogdetail&sharetype=blogdetail&sharerId=120639424&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link支持向量机(SVM)算法推导_svm怎么推导参数b的最优值-CSDN博客文章浏览阅读1.2k次。本文详细介绍了支持向量机(SVM)的概念、原理及其应用场景。包括线性可分支持向量机、间隔最大化的思想、软间隔最大化以及如何通过核函数处理非线性问题。 https://deep-rec.blog.csdn.net/article/details/78137217?fromshare=blogdetail&sharetype=blogdetail&sharerId=78137217&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link支持向量机SVM(直观理解原理、推导)_svm cost-CSDN博客文章浏览阅读1.9k次。这里主要基于吴恩达机器学习课程对于SVM的讲解进行总结回顾,并参考各类资料对其推导过程进一步理解及实现。所以分为两个部分及最后的一些个人总结。(内容较多、篇幅较长,静下心来、慢慢体会)第一部分也即吴恩达课程是从逻辑回归的cost函数讲到svm的cost优化问题的,其实直接上来看是有一定理解难度的(要求有一定相关基础),可以先看第二部分推导,再回过头来看第一部分会有一个更加深刻的理解和掌握。1、..._svm cost https://blog.csdn.net/Enjoy_endless/article/details/83575659?fromshare=blogdetail&sharetype=blogdetail&sharerId=83575659&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link

【机器学习实战-python3】支持向量机(Support Vecrtor Machines SVM)_支持向量机分类 程序 python3-CSDN博客文章浏览阅读2.7k次。本文详述了支持向量机(SVM)的概念,包括最大间隔、SMO优化算法及其在Python3中的实现。通过实例展示了如何使用序列最小优化(SMO)算法训练SVM,并探讨了核函数的作用,特别是径向基核函数在手写识别问题中的应用。文章还介绍了如何调整参数以优化SVM的性能,并分享了实际测试中的错误率。 https://blog.csdn.net/sinat_17196995/article/details/59542432?fromshare=blogdetail&sharetype=blogdetail&sharerId=59542432&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link

同仁篇:

机械学习--SVM 算法-CSDN博客文章浏览阅读1.1k次,点赞45次,收藏24次。给定线性可分的训练集,其中是特征向量,是类别标签。超平面方程为:其中是法向量,b 是截距。分类决策函数为。 https://blog.csdn.net/enlybbq/article/details/150074689?fromshare=blogdetail&sharetype=blogdetail&sharerId=150074689&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link

机器学习:支持向量机(SVM)-CSDN博客文章浏览阅读698次,点赞27次,收藏14次。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很容易区分,这样就达到数据分类或回归的目的,而实现这一目标的函数称为核函数。对于总数为n的样本集合,进行n次有放回的随机抽样,得到大小为n的训练集。由于原本的优化问题的表达式要考虑所有的样本点,在此基础上寻找正负类之间的最大几何间隔,而几何间隔本身代表的是距离,是非负的,像这样有噪声的情况会使整个问题无解。 https://blog.csdn.net/2501_91113915/article/details/149981947?fromshare=blogdetail&sharetype=blogdetail&sharerId=149981947&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link机器学习之支持向量机(SVM)算法详解-CSDN博客文章浏览阅读830次,点赞24次,收藏3次。然而,SVM的训练速度较慢,且对参数选择敏感。支持向量机是一种二分类模型,其基本思想是找到一个超平面,将不同类别的数据分隔开,并且使得两类数据点到超平面的距离(即间隔)最大化。对于非线性问题,SVM通过核函数将数据映射到高维空间,使其在高维空间中线性可分。SVM的核心目标是找到一个最优超平面,使得两类数据点的间隔最大化。其中,(yi) 是样本的标签(取值为 +1 或 -1),(xi) 是样本特征。对于线性可分的数据,SVM的优化目标是最大化间隔。其中,(C) 是正则化参数,用于控制分类错误和间隔的平衡。 https://blog.csdn.net/weixin_74414860/article/details/150118290?fromshare=blogdetail&sharetype=blogdetail&sharerId=150118290&sharerefer=PC&sharesource=Sunhen_Qiletian&sharefrom=from_link

http://www.lryc.cn/news/620823.html

相关文章:

  • Android数据缓存目录context.getCacheDir与Environment.getExternalStorageDirectory
  • Linux 文件系统简介
  • 【大模型私有化部署】实战部分:Ollama 部署教程
  • 芯片 讲解| DP7272—24位、192kHz立体声音频编解码器
  • 百川开源大模型Baichuan-M2的医疗能力登顶第一?
  • Mybatis Plus 分页插件报错`GOLDILOCKS`
  • week1-[分支结构]中位数
  • imx6ull-驱动开发篇24——Linux 中断API函数
  • Docker 入门与实战:从环境搭建到项目部署
  • Windows批处理脚本自动合并当前目录下由You-get下载的未合并的音视频文件
  • 【Unity3D实例-功能-移动】角色行走和奔跑的相互切换
  • AI智能体|扣子(Coze)搭建【批量识别发票并录入飞书】Agent
  • Cookie、Session、Token详解
  • 如何在 Ubuntu 24.04 LTS Noble Linux 上安装 Wine HQ
  • OpenCV对椒盐处理后的视频进行均值滤波处理
  • 短剧小程序系统开发:赋能创作者,推动短剧艺术创新发展
  • 【软件测试】自动化测试 — selenium快速上手
  • BitDock——让你的Windows桌面变为Mac
  • 如何查看SQL Server的当前端口
  • filezilla mac新版本MacOS-12.6.3会自动进入全屏模式BUG解决方法
  • 我的第一个开源项目-jenkins集成k8s项目
  • 软件测试中,常用的抓包工具有哪些?抓包的原理是什么?
  • FPGA读取AHT20温湿度模块思路及实现,包含遇到的问题(IIC协议)
  • 快速部署一个鉴黄服务
  • React数据请求
  • Android 项目:画图白板APP开发(二)——历史点、数学方式推导点
  • 2.0t的涡轮增压器结构设计说明书cad【5张】设计说明说
  • OpenSatKit技术详解
  • 《Leetcode》-面试题-hot100-动态规划
  • C++实现序列匹配与分类处理