【机器学习】嘿马机器学习(算法篇)第3篇:支持向量机,2.3 SVM算法原理【附代码文档】

发布于:2025-07-02 ⋅ 阅读:(15) ⋅ 点赞:(0)

教程总体简介:机器学习(算法篇 2 ) 1.1 朴素贝叶斯算法简介 1.2 概率基础复习 学习目标 1.概率定义 2.案例:判断女神对你的喜欢情况 3.联合概率、条件概率与相互独立 4.贝叶斯公式 4.1 公式介绍 4.2 案例计算 4.3 文章分类计算 5 小结 1.3 案例:商品评论情感分析 1.api介绍 HMM模型 4.7 HMM模型API介绍 1 API的安装: 2 hmmlearn介绍 3 MultinomialHMM实例 集成学习进阶 5.1 xgboost算法原理 1 最优模型的构建方法 2 XGBoost的目标函数推导 2.1 目标函数确定 2.2 CART树的介绍 2.3 树的复杂度定义 4 XGBoost与GDBT的区别 5.4 otto案例介绍 -- Otto Group Product Classification Challenge【xgboost实现】 1 背景介绍 2 思路分析 3 部分代码实现 5.5 lightGBM 1 写在介绍lightGBM之前 1.2 AdaBoost算法 1.3 GBDT算法以及优缺点 1.4 启发 5.8 《绝地求生》玩家排名预测 1 项目背景 2 数据集介绍 3 项目评估方式 5.9 stacking算法基本思想 1 集成学习基本复习 3 stacking的特点 5.10 住房月租金预测 2 任务 3 数据 4 评分标准 向量与矩阵的范数 1.向量的范数 朗格朗日乘子法 Huber Loss 极大似然函数取对数的原因 1 减少计算量 2 利于结果更好的计算 3 取对数并不影响最后结果的单调性 朴素贝叶斯 2.2 SVM算法api初步使用 支持向量机 2.3 SVM算法原理 1 定义输入数据 2 线性可分支持向量机 3 SVM的计算过程与算法步骤 3.1 推导目标函数 4 举例 2.4 SVM的损失函数 小结 2.8 案例:数字识别器 3 案例实现 3.1 初识EM算法 3.2 EM算法介绍 1 极大似然估计 1.1 问题描述 1.2 用数学知识解决现实问题 1.3 最大似然函数估计值的求解步骤 2 EM算法实例描述 EM算法 4.1 马尔科夫链 1 简介 2 经典举例 4.2 HMM简介 1 简单案例 2 案例进阶 2.2 问题解决 4.4 前向后向算法评估观察序列概率 1 回顾HMM问题一:求观测序列的概率 2 用前向算法求HMM观测序列的概率 2.1 流程梳理 3 HMM前向算法求解实例 4.5 维特比算法解码隐藏状态序列 1 HMM最可能隐藏状态序列求解概述 2 维特比算法概述 4.6 鲍姆-韦尔奇算法简介 定位 目标 K-近邻算法 1.3 距离度量 1 欧式距离(Euclidean Distance): 3 切比雪夫距离 (Chebyshev Distance): 4 闵可夫斯基距离(Minkowski Distance): 5 标准化欧氏距离 (Standardized EuclideanDistance): 7 汉明距离(Hamming Distance)【了解】: 逻辑回归 3.5 ROC曲线的绘制 1 曲线绘制 1.1 如果概率的序列是(1:0.9,2:0.7,3:0.8,4:0.6,5:0.5,6:0.4)。 2 意义解释 决策树算法 4.2 决策树分类原理 1 熵 1.1 概念 2 决策树的划分依据一----信息增益 2.1 概念 5 小结 5.1 常见决策树的启发函数比较 5.2 决策树变量的两种类型: 5.3 如何评估分割点的好坏? 4.3 cart剪枝 1 为什么要剪枝 2 常用的减枝方法 2.1 预剪枝 2.2后剪枝: 4.4 特征工程-特征提取 1 特征提取 4.5 决策树算法api 4.6 案例:泰坦尼克号乘客生存预测 4 决策树可视化 4.1 保存树的结构到dot文件 4.2 网站显示结构 5.2 Bagging 1 Bagging集成原理 2 随机森林构造过程 3 随机森林api介绍 4 随机森林预测案例 聚类算法 6.3 聚类算法实现流程 1 k-means聚类步骤 6.4 模型评估 1 误差平方和(SSE \The sum of squares due to error): 2 “肘”方法 (Elbow method) — K值确定 3 轮廓系数法(Silhouette Coefficient) 4 CH系数(Calinski-Harabasz Index) 6.5 算法优化 1 Canopy算法配合初始聚类 1.2 Canopy算法的优缺点 3 二分k-means 4 k-medoids(k-中心聚类算法) 5 Kernel k-means(了解) 6 ISODATA(了解) 7 Mini Batch K-Means(了解) 6.6 特征降维 1 降维 1.2 降维的两种方式 2 特征选择 2.1 定义 2.2 方法 2.3 低方差特征过滤 3 主成分分析 3.1 什么是主成分分析(PCA) 3.2 API 3.3 数据计算 6.7 案例:探究用户对物品类别的喜好细分 1 需求 3 完整代码 6.8 算法选择指导 正规方程的另一种推导方式 1.损失表示方式 梯度下降法算法比较和进一步优化 1 算法比较 2 梯度下降优化算法 维灾难 1 什么是维灾难 2 维数灾难与过拟合 1.4 k值的选择 1 K值选择说明 1.5 kd树 2 构造方法 1.6 案例:鸢尾花种类预测--数据集介绍 2 scikit-learn中数据集介绍 2.2 sklearn数据集返回值介绍 2.3 查看数据分布 2.4 数据集的划分 1.9 练一练 同学之间讨论刚才完成的机器学习代码,并且确保在自己的电脑是哪个运行成功 1.10 交叉验证,网格搜索 1 什么是交叉验证(cross validation) 1.2 为什么需要交叉验证 2 什么是网格搜索(Grid Search) 3 交叉验证,网格搜索(模型选择与调优)API: 4 鸢尾花案例增加K值调优 1.11 案例2:预测facebook签到位置 2.1 线性回归简介 1 线性回归应用场景 2 什么是线性回归 2.2 线性回归的特征与目标的关系分析 2.3 数学:求导 1 常见函数的导数 2 导数的四则运算 3 练习 4 矩阵(向量)求导 [了解] 线性回归 2.4 线性回归的损失和优化 1 损失函数 3 梯度下降和正规方程的对比 2.5 梯度下降法介绍 1 全梯度下降算法(FG) 3 小批量梯度下降算法(mini-batch) 2.7 案例:波士顿房价预测 3 回归性能评估 2.8 欠拟合和过拟合 2 原因以及解决办法 3 正则化 3.1 什么是正则化 2.9 正则化线性模型 1 Ridge Regression (岭回归,又名 Tikhonov regularization) 2 Lasso Regression(Lasso 回归) 3 Elastic Net (弹性网络) 3.1 逻辑回归介绍 2 逻辑回归的原理 2.2 激活函数 3 损失以及优化 3.1 损失 3.3 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测 3.4 分类评估方法 2 ROC曲线与AUC指标 2.1 TPR与FPR 2.3 AUC指标 2.4 AUC计算API

完整笔记资料代码:https://gitee.com/yinuo112/AI/tree/master/机器学习/嘿马机器学习(算法篇)/note.md

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

支持向量机

学习目标

  • 了解什么是SVM算法
  • 掌握SVM算法的原理
  • 知道SVM算法的损失函数
  • 知道SVM算法的核函数
  • 了解SVM算法在回归问题中的使用
  • 应用SVM算法实现手写数字识别器

2.3 SVM算法原理

学习目标

  • 知道SVM中线性可分支持向量机
  • 知道SVM中目标函数的推导过程
  • 了解朗格朗日乘子法、对偶问题
  • 知道SVM中目标函数的求解过程

1 定义输入数据

假设给定一个特征空间上的训练集为:

![image-20190812224849027](

其中,(xi,yi)(x_i,y_i)(x​i​​,y​i​​)

  • xix_ix​i​​

  • yiy_iy​i​​xix_ix​i​​

  • 当yi=1y_i=1y​i​​=1xix_ix​i​​

  • 当yi=−1y_i=-1y​i​​=−1xix_ix​i​​

至于为什么正负用(-1,1)表示呢?

其实这里没有太多原理,就是一个标记,你也可以用(2,-3)来标记。只是为了方便,yi/yj=yi∗yjy_i/y_j=y_i*y_jy​i​​/y​j​​=y​i​​∗y​j​​

2 线性可分支持向量机

给定了上面提出的线性可分训练数据集,通过间隔最大化得到分离超平面为 :y(x)=wTΦ(x)+by(x)=w^T\Phi(x)+by(x)=w​T​​Φ(x)+b

相应的分类决策函数为:f(x)=sign(wTΦ(x)+b)f(x)=sign(w^T\Phi(x)+b)f(x)=sign(w​T​​Φ(x)+b)

以上决策函数就称为线性可分支持向量机。

这里解释一下Φ(x)\Phi(x)Φ(x)

这是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度,它有一个以后我们经常会见到的专有称号”核函数“

比如我们看到的特征有2个:

x1,x2x1,x2x1,x2w1x1+w2x2w_1x_1+w_2x_2w​1​​x​1​​+w​2​​x​2​​

但也许这两个特征并不能很好地描述数据,于是我们进行维度的转化,变成了w1x1+w2x2+w3x1x2+w4x12+w5x22w_1x_1+w_2x_2+w_3x_1x_2+w_4x_1^2+w_5x_2^2w​1​​x​1​​+w​2​​x​2​​+w​3​​x​1​​x​2​​+w​4​​x​1​2​​+w​5​​x​2​2​​

于是我们多了三个特征。而这个就是笼统地描述x的映射的。

最简单直接的就是:Φ(x)=x\Phi(x)=xΦ(x)=x

以上就是线性可分支持向量机的模型表达式。我们要去求出这样一个模型,或者说这样一个超平面y(x),它能够最优地分离两个集合。

其实也就是我们要去求一组参数(w,b),使其构建的超平面函数能够最优地分离两个集合。

如下就是一个最优超平面:

![image_1b1tqf5qo1s6r1hhq14ct1dfu5d12a.png-231.8kB](

又比如说这样:

![image_1b1tqguiaj4p1i7m1u9j10t11mds2n.png-69.3kB](

阴影部分是一个“过渡带”,“过渡带”的边界是集合中离超平面最近的样本点落在的地方。

3 SVM的计算过程与算法步骤

3.1 推导目标函数

我们知道了支持向量机是个什么东西了。现在我们要去寻找这个支持向量机,也就是寻找一个最优的超平面。

于是我们要建立一个目标函数。那么如何建立呢?

再来看一下我们的超平面表达式:y(x)=wTΦ(x)+by(x)=w^T\Phi(x)+by(x)=w​T​​Φ(x)+b

为了方便我们让:Φ(x)=x\Phi(x)=xΦ(x)=x

则在样本空间中,划分超平面可通过如下线性方程来描述:wTx+b=0w^Tx+b=0w​T​​x+b=0

  • 我们知道![image-20190814214644095](

  • b为位移项,决定了超平面和原点之间的距离。

  • 显然,划分超平面可被法向量w和位移b确定,我们把其记为(w,b).

样本空间中任意点x到超平面(w,b)的距离可写成

![image-20190814141310502](

假设超平面(w, b)能将训练样本正确分类,即对于(xi,yi)∈D(x_i, y_i)\in D(x​i​​,y​i​​)∈D

  • 若yi=+1y_i=+1y​i​​=+1wTxi+b>0w^Tx_i+b>0w​T​​x​i​​+b>0
  • 若yi=−1y_i=-1y​i​​=−1无法显示

![image-20190814141642787](

如图所示,距离超平面最近的几个训练样本点使上式等号成立,他们被称为“支持向量",

两个异类支持向量到超平面的距离之和为:![img](

它被称为“”间隔“”。

![image-20190814141836897](

欲找到具有最大间隔的划分超平面,也就是要找到能满足下式中约束的参数w和b,使得γ\gammaγ

![image-20190814141642787](

即:

![img](

显然,为了最大化间隔,仅需要最大化![img](

![img](

这就是支持向量机的基本型。

拓展:什么是∣∣w∣∣||w||∣∣w∣∣

链接:向量与矩阵的范数

3.2 目标函数的求解

到这一步,终于把目标函数给建立起来了。

那么下一步自然是去求目标函数的最优值.

因为目标函数带有一个约束条件,所以我们可以用拉格朗日乘子法求解

3.2.1 朗格朗日乘子法

啥是拉格朗日乘子法呢?

拉格朗日乘子法 (Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法.

通过引入拉格朗日乘子,可将有 d 个变量与 k 个约束条件的最优化问题转化为具有 d + k 个变量的无约束优化问题求解。

朗格朗日乘子法举例复习


经过朗格朗日乘子法,我们可以把目标函数转换为:

![image_1b1tslnd0jn516gai3end5rmj5e.png-8.9kB](

其中,上式后半部分:

![image-20200121010844799](

走到这一步,这个目标函数还是不能开始求解,现在我们的问题是极小极大值问题

3.2.2 对偶问题

我们要将其转换为对偶问题,变成极大极小值问题:

从![image-20200121003450541]( 变为:![image-20200121011050862](

参考资料:[

如何获取对偶函数?

  • 首先我们对原目标函数的w和b分别求导:

  • 原目标函数:![image_1b1vjnneag2c1o0esh21520kn69.png-9.6kB](

  • 对w求偏导: ![image_1b1vjp8611tvc1717jb52is1c6jm.png-10.4kB](
  • 对b求偏导: ![image_1b1vjqegou181f94117j371cq21a.png-8.1kB](

  • 然后将以上w和b的求导函数重新代入原目标函数的w和b中,得到的就是原函数的对偶函数:

![image_1b1vk20iq3vc14ld17p51a1v1tq72h.png-40.6kB](

  • 这个对偶函数其实求的是:![image-20200121011355571](

  • 于是现在要求的是这个函数的极大值max(a),写成公式就是:

![image-20200121011505169](

  • 好了,现在我们只需要对上式求出极大值α\alphaαα\alphaα

![image-20200204105305071](

  • 从而求出w.

  • 将w代入超平面的表达式,计算b值;

  • 现在的w,b就是我们要寻找的最优超平面的参数。

3.2.3 整体流程确定

我们用数学表达式来说明上面的过程:

  • 1)首先是求![image_1b1vl4efr1in9ie51i3oji91k443q.png-4.5kB](

![image-20200204111208245](

注意有两个约束条件。

  • 对目标函数添加符号,转换成求极小值:

![image-20200204111226729](

  • 2)计算上面式子的极值求出α∗\alpha^*α​∗​​

  • 3)将α∗\alpha^*α​∗​​

![image-20200204111316675](

  • 4)求得超平面:

![image_1b1vld5fhblkn2j1c7h1nk1pc66e.png-5.3kB](

  • 5)求得分类决策函数:

![image_1b1vldujb18mb1g5ch8uoikios6r.png-8.2kB](

4 举例

给定3个数据点:正例点x1=(3,3),x2=(4,3)x1=(3,3),x2=(4,3)x1=(3,3),x2=(4,3)x3=(1,1)x3=(1,1)x3=(1,1)

![image_1b1vpnodb1b799lo8l2e23122h78.png-10.7kB](

1) 首先确定目标函数

![image-20190813200353530](

2) 求得目标函数的极值

  • 原式:![image-20200204101525358](
  • 把数据代入:![image-20200204101623739](
  • 由于:![image-20200204101715362](
  • 化简可得:![image-20200204101738823](

  • 对α1,α2\alpha_1,\alpha_2α​1​​,α​2​​s(α1,α2)s(\alpha_1,\alpha_2)s(α​1​​,α​2​​)

  • 而该点不满足条件α2>=0\alpha_2>=0α​2​​>=0

  • 当α1=0\alpha_1=0α​1​​=0s(0,213)=−213=−0.1538s(0,\frac{2}{13})=-\frac{2}{13}=-0.1538s(0,​13​​2​​)=−​13​​2​​=−0.1538

  • 当α2=0\alpha_2=0α​2​​=0s(14,0)=−14=−0.25s(\frac{1}{4},0)=-\frac{1}{4}=-0.25s(​4​​1​​,0)=−​4​​1​​=−0.25

  • 于是,s(α1,α2)s(\alpha_1,\alpha_2)s(α​1​​,α​2​​)α1=0,α2=0\alpha_1=0, \alpha_2=0α​1​​=0,α​2​​=0

  • α3=α1+α2=14\alpha_3 = \alpha_1+\alpha_2 = \frac{1}{4}α​3​​=α​1​​+α​2​​=​4​​1​​

3) 将求得的极值代入从而求得最优参数w,b

  • α1=α3=14\alpha_1 = \alpha_3 = \frac{1}{4}α​1​​=α​3​​=​4​​1​​x1,x3x_1,x_3x​1​​,x​3​​
  • 代入公式:

  • 将α\alphaα![image-20200204105534190](

  • ![image-20200204105634306](
  • 平面方程为:0.5x1+0.5x2−2=00.5x_1+0.5x_2-2=00.5x​1​​+0.5x​2​​−2=0

4) 因此得到分离超平面为

  • 0.5x1+0.5x2−2=00.5x_1+0.5x_2-2=00.5x​1​​+0.5x​2​​−2=0

5) 得到分离决策函数为:

  • f(x)=sign(0.5x1+0.5x2−2)f(x)=sign(0.5x_1+0.5x_2-2)f(x)=sign(0.5x​1​​+0.5x​2​​−2)

    ps:参考的另一种计算方式: [


3 小结

  • SVM中目标函数

  • ![img](

  • SVM中目标函数的求解过程

  • 1)首先是求![image_1b1vl4efr1in9ie51i3oji91k443q.png-4.5kB](

![image-20200204111208245](

注意有两个约束条件。

  • 对目标函数添加符号,转换成求极小值:

![image-20200204111226729](

  • 2)计算上面式子的极值求出α∗\alpha^*α​∗​​

  • 3)将α∗\alpha^*α​∗​​

![image-20200204111316675](

  • 4)求得超平面:

![image_1b1vld5fhblkn2j1c7h1nk1pc66e.png-5.3kB](

  • 5)求得分类决策函数:

![image_1b1vldujb18mb1g5ch8uoikios6r.png-8.2kB](