Day46:SVM详解与案例

alt

在上一节中,我们讲解了一种分类模型——逻辑回归,在本节中,我们将讲解另一种分类模型——支持向量机(Support Vector Machine,SVM)。我们将从数学推理的角度出发,详细介绍SVM的原理,然后,我们将实现一个实际案例。

1. SVM原理

SVM是一种经典的监督学习算法,适用于二分类和多分类问题。它的目标是找到一个最优超平面,能够最大化样本的间隔(即离超平面最近的样本点的距离最大化),从而达到更好的分类效果。

1.1 线性可分情况:

  • 假设我们的训练数据集为{(x₁, y₁), (x₂, y₂), ..., (xₙ, yₙ)},其中xᵢ是输入特征向量,yᵢ是对应的类别标签(1或-1)。
  • SVM的目标是找到一个超平面,其方程为wx + b = 0,能够将正负样本完全分开。
  • 对于任意数据点xᵢ,它满足wxᵢ + b > 0当且仅当yᵢ = 1,满足wxᵢ + b < 0当且仅当yᵢ = -1。
  • 因此,我们可以定义一个函数h(x) = wx + b,对于正样本h(x) > 0,对于负样本h(x) < 0。

1.2 最大间隔:

  • SVM的目标是找到一个最优超平面,使得正负样本之间的间隔最大化。
  • 间隔定义为超平面到最近的样本点的距离,我们希望找到的超平面能够最大化这个间隔。
  • 设超平面上的两个支持向量为x₊和x₋,它们分别满足h(x₊) = 1和h(x₋) = -1。
  • 超平面到x₊和x₋的距离之和为2/||w||,其中||w||是权重向量w的范数。
  • 因此,我们的目标是最大化2/||w||,等价于最小化||w||²/2,即将问题转化为一个优化问题。

1.3 优化问题:

  • SVM的优化问题可以表示为:min 1/2 * ||w||²s.t. yᵢ(wxᵢ + b) ≥ 1, ∀i
  • 这是一个凸二次规划问题,可以使用拉格朗日乘子法来求解。
  • 引入拉格朗日乘子αᵢ来构建拉格朗日函数,并对w和b求偏导数。
  • 最终得到优化问题的对偶形式:max Σ αᵢ - 1/2 * Σ Σ αᵢ αⱼ yᵢ yⱼ (xᵢ·xⱼ)s.t. Σ αᵢ yᵢ = 0, αᵢ ≥ 0, ∀i
  • 在求解对偶问题时,可以使用支持向量的方式,只需要计算支持向量上的αᵢ和b即可。

1.4 多分类问题:

  • SVM最初是为二分类问题设计的,但可以通过一些技巧扩展到多分类问题。
  • 一种常用的方法是一对多(One-vs-Rest,OvR)策略,将多类别问题转化为多个二分类问题。
  • 对于每个类别,训练一个二分类的SVM模型,判断一个样本点属于哪个类别的方法是,选择具有最大决策函数值的类别。

2. 实际案例

以上是SVM的数学推理过程,现在我们将使用内置库数据集实现一个实际案例:

  1. 我们首先导入库,然后随机生成一个两个聚类中心的类别数据集:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.svm import SVC

# 生成数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=0.

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

大模型-AI小册 文章被收录于专栏

1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人

全部评论
woc牛
点赞
送花
回复 分享
发布于 2023-07-14 15:33 上海

相关推荐

2 3 评论
分享
牛客网
牛客企业服务