机器学习--支持向量机

目录

一、为什么需要 SVM?先解决 “怎么分才好” 的问题

二、SVM 的核心:什么是 “最好的超平面”?用 “间隔” 说话

1. 先搞懂两个关键概念

2. 目标:把 “间隔” 拉到最大

三、从 “想要最大间隔” 到 “解数学问题”:SVM 的优化逻辑

1. 把目标 “转个弯”:从最大化到最小化

2. 加上约束:不能分错样本

3. 用拉格朗日乘子法:解带约束的优化问题

四、SVM 的 “进阶技巧”:解决实际问题

1. 软间隔:允许少量 “不完美”

2. 核函数:把 “低维不可分” 变成 “高维可分”

五、学完 SVM 的一点小感悟

六、机器学习总结


从 “找一条最好的线” 开始:我理解的支持向量机(SVM)核心逻辑

      今天跟着课程啃完了机器学习里的支持向量机(SVM),一开始光听到 “超平面”“间隔最大化” 这些词还觉得有点绕,但顺着逻辑一步步拆下来,发现它的核心思路其实特别 “朴素”—— 本质就是在样本里找一条 “最稳妥” 的分界线。与其记一堆公式,不如先把背后的道理捋明白,所以想把今天的学习笔记整理出来,也帮自己再顺一遍思路。

一、为什么需要 SVM?先解决 “怎么分才好” 的问题

      最开始老师抛了个问题:如果给你一堆两类样本,比如左边是红色点、右边是蓝色点,你怎么画一条线把它们分开?

      我第一反应是 “随便画一条不就行?”,但老师紧接着举了个例子:如果画的线离某一边的点特别近,万一新进来的样本稍微偏一点,不就分错了?这时候才意识到,划分的关键不是 “能分开”,而是 “分的稳”—— 也就是这条线对样本的 “容错性” 要足够高,哪怕样本稍微有点扰动,也不会轻易分错。

      这就是 SVM 的出发点:在样本空间里找一个 “最优划分超平面”(对二维数据来说是直线,三维是平面,更高维就是超平面),让这个超平面能最大限度地 “远离” 两边的样本,这样容错性自然就高了。

二、SVM 的核心:什么是 “最好的超平面”?用 “间隔” 说话

      既然要找 “最稳” 的超平面,那怎么量化 “稳不稳”?这里就引出了 “间隔(margin)” 的概念 —— 简单说,就是超平面到它两边最近样本的距离之和。

1. 先搞懂两个关键概念

      超平面本身:它不是随便画的,有固定的数学表达。比如 n 维空间里,超平面可以写成w^T x + b = 0,其中w是超平面的法向量(决定超平面的方向),b是偏置(决定超平面的位置)。像我们熟悉的二维直线Ax + By + C = 0,其实就是超平面在二维空间的特殊情况。

      点到超平面的距离:要算 “间隔”,得先知道单个样本到超平面的距离。这个公式是从二维直线的距离公式拓展开的 —— 二维里点(x,y)Ax+By+C=0的距离是|Ax+By+C|/√(A²+B²),推广到 n 维,就是|w^T x + b| / ||w||||w||w的范数,类似二维里的√(A²+B²))。

2. 目标:把 “间隔” 拉到最大

      SVM 里的 “最优超平面”,就是能让 “间隔” 最大的那个。为什么是最大间隔?因为间隔越大,超平面离两边样本越远,后续新样本进来时,不小心分错的概率就越小 —— 这就像走马路,走中间比走路边更不容易被车碰到,一个道理。

      不过这里有个小细节:间隔其实是 “超平面到两边最近样本的距离之和”,我们把这两个最近的样本叫做 “支持向量”—— 没错,SVM 的名字就是从这来的!因为这两个点直接决定了超平面的位置和间隔大小,其他样本哪怕再多,只要不影响这两个支持向量,对超平面就没影响。这一点我觉得特别妙,相当于 SVM 只 “关注” 最关键的样本,不被冗余信息干扰。

三、从 “想要最大间隔” 到 “解数学问题”:SVM 的优化逻辑

      想清楚 “要最大化间隔” 之后,接下来就是把这个目标变成数学问题来解。这一步一开始有点绕,但跟着老师拆步骤,其实也没那么难。

1. 把目标 “转个弯”:从最大化到最小化

      首先,我们已经知道间隔的核心是 “超平面到支持向量的距离”,假设这个距离是d,那间隔就是2d(两边各d)。要最大化间隔,其实就是最大化d

      而d的公式是|w^T x + b| / ||w||,这里有个小技巧:我们可以通过调整wb的尺度,让支持向量满足|w^T x + b| = 1(因为wb成比例缩放时,超平面位置不变,只是|w^T x + b|的数值变了,所以可以固定这个值)。这样一来,d就变成了1/||w||

      所以 “最大化d” 就等价于 “最小化||w||”—— 不过为了计算方便(比如求导时更简单),我们通常会最小化(1/2)||w||²(平方不影响最小值的位置,系数 1/2 是为了求导后抵消)。

2. 加上约束:不能分错样本

      当然,优化不能没有约束 —— 我们得保证所有样本都被超平面正确分类。怎么表达?如果用y表示样本类别(正例y=+1,负例y=-1),那么对于所有样本,必须满足y*(w^T x + b) ≥ 1。这个式子的意思是:正例的w^T x + b得是正的,负例的得是负的,而且它们的绝对值都至少是 1(也就是都在支持向量的外侧),这样才能保证分类正确,且间隔是1/||w||

3. 用拉格朗日乘子法:解带约束的优化问题

      到这里,问题就变成了 “在y*(w^T x + b) ≥ 1的约束下,最小化(1/2)||w||²”—— 这是一个带不等式约束的优化问题,老师说这种问题通常用 “拉格朗日乘子法” 来解。

      具体的推导过程我就不写太细了(怕自己记混),核心是把 “带约束的最小化问题” 转换成 “无约束的对偶问题”—— 简单说,就是引入拉格朗日乘子α,把约束条件融入到目标函数里,然后通过对wb求偏导,找到最优解的条件。

      最后解出来的结果里,有两个关键结论:

      (1)最优的w是所有支持向量乘以其类别和拉格朗日乘子后的总和(w = Σα_i y_i x_i);

      (2)所有非支持向量的α_i都是 0—— 再次印证了 “只有支持向量影响超平面”。

四、SVM 的 “进阶技巧”:解决实际问题

      理论上的 SVM 要求样本 “完全线性可分”,但实际数据里难免有噪音(比如个别样本放错了类别),或者样本本身就不是线性可分的(比如像螺旋线一样绕在一起)。这时候就需要 SVM 的两个 “进阶技能”。

1. 软间隔:允许少量 “不完美”

      如果数据里有噪音,硬要求所有样本都满足y*(w^T x + b) ≥ 1,反而会让超平面 “拐个弯” 去迁就噪音,导致泛化能力变差(也就是过拟合)。这时候就需要 “软间隔”—— 允许少数样本不满足约束,但要对这些 “不满足” 的样本罚分。

      具体来说,就是引入一个 “松弛因子”ξ_iξ_i ≥ 0),把约束条件改成y*(w^T x + b) ≥ 1 - ξ_iξ_i越大,说明这个样本离 “理想位置” 越远,罚分也越重。然后目标函数就变成了(1/2)||w||² + C*Σξ_i,其中C是惩罚系数:

C越大,说明越不能容忍错误,超平面会尽量把所有样本分对,但可能过拟合;

C越小,说明可以容忍更多错误,超平面更 “平缓”,但可能欠拟合。

2. 核函数:把 “低维不可分” 变成 “高维可分”

      如果样本在低维空间里根本没法用直线(或超平面)分开,比如二维空间里的 “同心圆” 样本,怎么办?老师举了个特别形象的例子:把二维平面 “掰弯” 成三维的圆锥面,原本的同心圆在三维空间里就变成了两个平行的圆,这时候用一个平面就能分开了。

      这个 “掰弯” 的过程,就是 “特征映射”—— 把低维空间的样本映射到高维空间。但高维空间的计算量太大了(比如二维映射到 100 维,计算量会爆炸),这时候 “核函数” 就派上用场了。

      核函数的神奇之处在于:它能直接计算两个样本在高维空间里的内积,而不用真的把样本映射到高维空间。比如常用的 “高斯核”,就能把低维不可分的数据,在无形中映射到无穷维空间,从而实现线性可分。这一步我目前还没完全吃透,但记住了核心结论:遇到非线性问题,试试用核函数,比如线性核(适合线性可分)、高斯核(适合非线性)。

五、学完 SVM 的一点小感悟

      今天学完 SVM,最大的感受是 “数学是为解决问题服务的”。一开始看到w^T x + b、拉格朗日乘子这些公式会有点怵,但顺着 “找最稳的超平面” 这个核心目标往下拆,每一步推导都有它的道理 —— 不是为了复杂而复杂,而是为了把 “稳” 这个模糊的需求,变成能计算、能求解的数学问题。

      另外,SVM 的 “极简主义” 也很打动我:它只关注支持向量,忽略冗余样本,既保证了模型的简洁性,又能有很好的泛化能力。难怪老师说,在小样本、高维数据(比如文本分类)里,SVM 至今还是很常用的模型。

      当然,现在只是搞懂了 SVM 的核心逻辑,后面还需要多做实验(比如用真实数据集跑一跑,调调C和核函数的参数),才能真正掌握。不过今天能把 “从找线到解公式” 的逻辑串起来,已经很有成就感啦~

六、机器学习总结

      今天这篇文章发完,机器学习的内容我们就告一段落啦,从机器学习的概论描述到KNN、决策树、随机森林、逻辑回归、线性回归、无监督学习、朴素贝叶斯、支持向量机这些算法学完之后相对于你对机器学习会有进一步的了解,可以用机器学习的算法对数据集完成基本的操作模型任务啦,接下来我会通过之前学习过的东西完成一个大任务哦,尽请期待吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/94670.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/94670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Multi-output Classification and Multi-label Classification|多输出分类和多标签分类

----------------------------------------------------------------------------------------------- 这是我在我的网站中截取的文章,有更多的文章欢迎来访问我自己的博客网站rn.berlinlian.cn,这里还有很多有关计算机的知识,欢迎进行留言或…

【目标检测】论文阅读5

Small-object detection based on YOLOv5 in autonomous driving systems 发表期刊:Pattern Recognition Letters;发表时间:2023年 论文地址 摘要 随着自动驾驶领域的快速发展,对更快、更准确的目标检测框架的需求已经成为必要。…

Playwright进阶指南 (6) | 自动化测试实战

2025企业级测试解决方案:从单测到千级并发,打造高可用测试体系一、为什么传统自动化测试难以落地?根据2025年最新行业调研,测试项目失败的三大核心原因:失败原因占比典型表现维护成本过高45%选择器频繁失效&#xff0c…

uv 简单使用

二进制安装 powershell -ExecutionPolicy Bypass -c "irm https://ghproxy.cn/https://github.com/astral-sh/uv/releases/download/0.8.13/uv-installer.ps1 | iex"版本号:0.8.13,自行更改github加速前缀:https://ghproxy.cn/ 配置…

Linux程序管理

目录 一、Linux程序与进程 1、程序,进程,线程的概念 2、程序和进程的区别 3、进程和线程的区别 二、Linux进程基础(生命周期) 1、进程生命周期 2、父子进程的关系 三、程序管理 1、课程目标 2、常见的软件包类型 3、安装方法 使用独立的rpm包安装 rpm包的命名方法…

Linux-进程替换exec

文章目录进程替换exec 函数族使用说明查看命令的路径 which测试 execl测试 execlp测试 execv测试 execvp进程替换 概述 在 Windows 平台下,我们可以通过双击运行可执行程序,让这个可执行程序成为一个进程;而在 Linux 平台,我们可…

Seaborn数据可视化实战:Seaborn数据可视化实战入门

Seaborn数据可视化实战:从数据到图表的完整旅程 学习目标 通过本课程的学习,你将能够掌握使用Seaborn进行数据可视化的完整流程,从数据准备到图表设计,再到最终的图表呈现。本课程将通过一个具体的项目案例,帮助你全面…

控制系统仿真之时域分析(二)

一、时域分析法时域分析法是从传递函数出发直接在时域上研究控制系统性能的方法,实质上是研究系统在某典型输入信号下随时间变化的曲线,从而分析系统性能。控制系统的时域响应决定于系统本身的参数和结构,还有系统的初始状态,以及…

PDF 表单创建与分发

PDF 表单是一种交互式文档,允许用户填写信息、做出选择并提交数据。与静态 PDF 不同,PDF 表单包含可交互的字段元素,如文本框、复选框、单选按钮等。#mermaid-svg-sZe9We4UG0yKymyl {font-family:"trebuchet ms",verdana,arial,san…

Guava 简介:让 Java 开发更高效

Guava 简介:让 Java 开发更高效 Guava 是由 Google 开源的 Java 库,旨在为开发者提供一系列实用的工具类,以提高开发效率。它包含了集合类、缓存、并发工具、字符串处理等实用方法。 Guava 的常用场景 集合处理:Guava 提供了多种扩…

「ECG信号处理——(24)基于ECG和EEG信号的多模态融合疲劳分析」2025年8月23日

目录 一、引言 二、核心原理 2.1 心电 HRV 疲劳关联原理 2.2 脑电 EEG 疲劳关联原理 2.3 疲劳综合指数 三、数据处理流程 四、结果展示与分析 参考文献 一、引言 针对作业安全(如驾驶、精密操作)场景下的疲劳状态实时监测需求,本文提…

EXCEL自动调整列宽适应A4 A3 A2

Public xlPaperA2%Sub 填满页面排版()xlPaperA2 66 A2编号66Dim ws As Worksheet: Set ws ActiveSheetDim FirstCol As Long, LastCol As Long, LastRow As LongDim TargetRange As RangeDim UsablePageWidth As DoubleDim CurrentWidth As DoubleDim StartFontSize As Doubl…

Linux系统性能优化全攻略:从CPU到网络的全方位监控与诊断

引言 在Linux系统运维和开发过程中,系统性能优化是一个永恒的话题。无论是服务器负载过高,还是应用程序响应缓慢,准确快速地定位问题根源至关重要。本文将全面介绍Linux系统中常用的性能诊断工具和方法,帮助您从CPU、内存、磁盘I/…

uniapp+vue+uCharts开发常见问题汇总

项目结构:uniapp vue2 uni-ui uCharts 1、chunk-vendors.js:2765[Vue warn]: Invalid prop: custom validator check failed for prop "navigationBarTextStyle". 检索发现原因: 在 pages.json 文件中,navigationBarTextStyle 属…

【甲烷数据集】EPA-美国2012-2020年网格化甲烷清单

目录 数据概述 数据特征 数据版本与年份 排放源类型(示例) 时间变化处理 数据下载 参考 根据美国环保署(EPA)官网 《U.S. Gridded Methane Emissions》页面 的内容,以下是对 美国网格化甲烷清单(Gridded Methane GHGI) 的详细介绍。 数据概述 EPA-U.S. Gridded Methan…

【温室气体数据集】NOAA CCGG 飞机观测温室气体

目录 数据集概述 采样方式 测量气体 数据用途 观测站点 NOAA CCGG 飞机观测站点信息 项目特色 数据访问 参考 NOAA 全球监测实验室(Global Monitoring Laboratory, GML)提供的 Carbon Cycle Greenhouse Gases Aircraft Program 数据集是一个关于温室气体在大气中垂直分布的观…

FreeRTOS,互斥量 (Mutex)

1. 信号量 (Semaphore) 通俗理解:信号量就像停车场的空位计数器。当有车进入时,计数器减1;当有车离开时,计数器加1。如果计数器为0,新车必须等待直到有空位。 #include "FreeRTOS.h" #include "semphr.…

SQL查询-设置局部变量(PostgreSQL、MySQL)

😋博主在工作中编写复杂SQL语句时,经常需要替换查询值进行测试。所以需要用到局部变量设置,可以减轻测试时的压力。 目录使用场景1.常规写法2.局部变量写法(1)PostgreSQL示例注意事项(2)MySQL示…

2962 统计最大元素出现至少k次的子数组

2962 统计最大元素出现至少k次的子数组 文章目录2962 统计最大元素出现至少k次的子数组1 题目2 解答1 题目 给你一个整数数组 nums 和一个 正整数 k 。 请你统计有多少满足 「 nums 中的 最大 元素」至少出现 k 次的子数组,并返回满足这一条件的子数组的数目。 子…

【Java SE】基于多态与接口实现图书管理系统:从设计到编码全解析

文章目录一、系统整体设计:分层与职责划分系统模块结构二、核心模块详解:从数据到功能1. Book包:数据封装1.1 Book类:图书实体1.2 BookList类:书架管理2. User包:多态的核心体现2.1 User抽象类:…