第五章:支持向量机

目录

[1. 什么是最好的决策边界?](#1. 什么是最好的决策边界?)

[2. 数学背后的逻辑](#2. 数学背后的逻辑)

目标函数

约束条件

怎么解?拉格朗日乘子法

[3. 一个简单的手算实例](#3. 一个简单的手算实例)

[4. 软间隔 (Soft Margin):容忍一点错误](#4. 软间隔 (Soft Margin):容忍一点错误)

[5. 核函数 (Kernel Trick):降维打击的逆向操作](#5. 核函数 (Kernel Trick):降维打击的逆向操作)

总结


在机器学习的江湖里,支持向量机 (Support Vector Machine, SVM) 曾经是无可争议的"王者"。在深度学习爆发之前,它以坚实的数学基础和出色的分类效果统治着各种数据挖掘任务。

很多同学听到 SVM 会觉得它的数学推导很难,但其实它的核心思想非常简单直观。今天我们就剥开复杂的公式,看透 SVM 的本质。

1. 什么是最好的决策边界?

假设我们要把桌上的红豆和绿豆分开。我们当然可以画无数条线把它们隔开,但哪一条线才是最好的呢?

SVM 的答案是:离"雷区"最远的那条线。

  • 决策边界:就是我们画的那条线。

  • 雷区(Margin):边界两边的区域。

  • 支持向量(Support Vectors) :那些离边界最近的点。它们就像是支撑起这个边界的柱子,只有这些点在真正决定边界的位置,其他的点(离得远的)其实并不重要。

我们希望这个"雷区"(Margin)越宽越好(Large Margin),因为路越宽,咱们的模型泛化能力越强,遇到新数据时越不容易出错。


2. 数学背后的逻辑

虽然我们不想深陷数学泥潭,但理解 SVM 是如何"算"出来的很有必要。

目标函数

我们的目标是找到一个平面(在二维是线,高维是超平面),由权重 和偏置 决定。

为了让 Margin 最大化,经过数学推导(距离公式的倒数),本质上我们是在求 的最小值。

约束条件

这不仅仅是求最小值,还得保证分得对。

对于每一个样本点,我们需要满足:

这就是说,所有的点都必须在"雷区"之外。

怎么解?拉格朗日乘子法

这是一个典型的"带约束的优化问题"。数学家们祭出了神器------拉格朗日乘子法。

通过引入拉格朗日乘子,我们将原始问题转化为对偶问题:

最终,我们只需要解出,就能得到最优的权重 和 。


3. 一个简单的手算实例

为了让你更具体地理解,我们来看一个只有3个点的案例:

  • 正例 (+1) :

  • 负例 (-1) :

我们把数据代入拉格朗日目标函数,最后解得:

  • (说明点不是支持向量,对结果没影响)

最终求得的决策边界方程为:

看,复杂的算法在小数据上其实就是解方程组。


4. 软间隔 (Soft Margin):容忍一点错误

现实世界的数据往往是不完美的,可能混杂着噪声。如果非要画一条线把所有点都完美分开,这条线可能会变得非常奇怪(过拟合),甚至根本画不出来。

这时候,SVM 引入了"软间隔"的概念。

  • 我们允许一些点跑进"雷区",甚至跑错阵营。

  • 为此引入一个松弛因子 和惩罚系数 。

参数 C 的含义:

  • C 很大:意味着分类要求非常严格,容不得半点错误(容易过拟合)。

  • C 很小:意味着我们可以容忍更多的错误,追求更宽的边界(容易欠拟合)。


5. 核函数 (Kernel Trick):降维打击的逆向操作

如果数据根本就不是线性的(比如一堆红豆围着一堆绿豆,呈同心圆状),画直线怎么分?

SVM 的绝招是:升维。

在二维平面分不开,我就把你映射到三维空间去!在更高维度,原来的非线性问题往往就变成了线性问题。但是,直接计算高维映射(比如把 3维 映射到 9维)计算量太大了,甚至会爆炸。

这时候核函数 (Kernel Function) 登场了。

核函数的魔力:它不需要真正把数据映射到高维去计算,而是通过一个公式,在低维空间就能直接算出高维空间里的内积。

  • 效果:和映射到高维一样。

  • 计算量:和低维一样快。

最常用的核函数是高斯核函数 (RBF),它非常强大,可以将数据映射到无限维空间。


总结

支持向量机 (SVM) 的核心魅力在于:

  1. 最大间隔:追求最稳健的分类边界。

  2. 支持向量:只有少数关键点决定结果,计算效率高(预测时)。

  3. 核技巧:巧妙解决非线性分类问题。

虽然现在深度学习很火,但在小样本、非线性分类任务中,SVM 依然是一把极其锋利的宝剑。

相关推荐
奥惟斯10 小时前
GEO 上线前,先把这 3 类实体信号地基补上
人工智能·深度学习·机器学习·自然语言处理·数据挖掘·数据分析·知识图谱
小超人诞生日记11 小时前
C++ 智能指针的使用及其原理详解
c++·算法
民乐团扒谱机12 小时前
【一文吃透】机器学习 Embedding 降维打击:从底层空间几何原理到 RAG 向量检索工程实战避坑
人工智能·机器学习·embedding
我要见SA姐112 小时前
Chrome 扩展安全攻防实录:从权限滥用到供应链投毒
运维·人工智能·python·机器学习·自动化
AiNightVision14 小时前
无人机夜视模块如何选择?——从参数指标到系统集成的完整选型指南
人工智能·算法·计算机视觉·车载系统·无人机·视频·智能硬件
牧羊人.33315 小时前
卷积神经网络之VGG
人工智能·深度学习·神经网络·算法·cnn
小郎君65815 小时前
Vue 多标签页的加载态设计:为什么我没有用 Suspense 实现 PageLoading
vue.js·算法
JJJennie77716 小时前
MAI Gateway私有化部署全攻略:大模型网关如何接入?附架构图
算法·gateway·ai网关·魔芋ai
東隅已逝,桑榆非晚16 小时前
算法3.双指针法-快乐数
c++·笔记·学习·算法
专注仿真16 小时前
卷积神经网络(CNN)算法详解
人工智能·python·算法·代码·大模型训练