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

机器学习笔记【Week7】

一、SVM的动机:大间隔分类器

1、逻辑回归回顾

  • 假设函数为 sigmoid 函数:
    h θ ( x ) = 1 1 + e − θ T x h_\theta(x) = \frac{1}{1 + e^{-\theta^Tx}} hθ(x)=1+eθTx1

  • 分类依据是 h θ ( x ) ≥ 0.5 h_\theta(x) \geq 0.5 hθ(x)0.5 为正类,反之为负类。

2、SVM 的思路

  • SVM 不采用 sigmoid,而是直接构造优化目标:
    • 最大化间隔(margin):希望分类边界离最近的点尽可能远。
  • 构造代价函数时:
    • 对正类样本 y = 1 y=1 y=1,如果 θ T x ≥ 1 \theta^T x \geq 1 θTx1 则无惩罚,否则惩罚。
    • 对负类样本 y = 0 y=0 y=0,如果 θ T x ≤ − 1 \theta^T x \leq -1 θTx1 则无惩罚,否则惩罚。

二、SVM 的代价函数与优化

1、硬间隔 vs 软间隔

  • 硬间隔(hard margin):
    • 不允许分类错误,适合线性可分的情况。
  • 软间隔(soft margin):
    • 允许一定的错误分类,提升鲁棒性。

2、SVM 的标准形式

目标函数如下:
min ⁡ θ 1 2 ∥ θ ∥ 2 + C ∑ i = 1 m cost ( h θ ( x ( i ) ) , y ( i ) ) \min_{\theta} \frac{1}{2} \|\theta\|^2 + C \sum_{i=1}^{m} \text{cost}(h_\theta(x^{(i)}), y^{(i)}) θmin21θ2+Ci=1mcost(hθ(x(i)),y(i))
其中:

  • ∣ ∣ θ ∥ 2 ||\theta\|^2 ∣∣θ2 控制模型复杂度(间隔)。
  • C C C 控制对错误分类的惩罚程度。
  • cost ( ⋅ ) \text{cost}(\cdot) cost() 是 hinge loss。

三、支持向量与最大间隔的直观理解

  • 训练集中距离分类边界最近的点称为支持向量,它们决定了最终的分类超平面。
  • 最大化间隔等价于最小化 ∣ ∣ θ ∥ 2 ||\theta\|^2 ∣∣θ2

四、核函数(Kernel Function)

1、核函数的作用

  • 核函数可将输入数据映射到更高维空间,在高维空间中实现线性可分。
  • 避免显式计算高维特征,用核技巧计算内积。

2、常见核函数

  • 线性核(Linear Kernel):
    K ( x , z ) = x T z K(x, z) = x^T z K(x,z)=xTz

  • 多项式核(Polynomial Kernel):
    K ( x , z ) = ( x T z + c ) d K(x, z) = (x^T z + c)^d K(x,z)=(xTz+c)d

  • 高斯核 / RBF(Radial Basis Function):
    K ( x , z ) = exp ⁡ ( − ∥ x − z ∥ 2 2 σ 2 ) K(x, z) = \exp\left(-\frac{\|x - z\|^2}{2\sigma^2}\right) K(x,z)=exp(2σ2xz2)

3、高斯核的参数选择

  • σ(或 γ)控制分布宽度:
    • σ 小 → 拟合更 “尖锐”,可能过拟合。
    • σ 大 → 拟合更平滑,可能欠拟合。

五、SVM 的使用建议

1、特征缩放

  • 特征归一化非常重要,尤其在使用核函数时,避免某些维度主导距离计算。

2、SVM 的优点

  • 通常表现优于逻辑回归,尤其在特征维度高、样本数较少的场景。
  • 在文本分类、图像识别中表现优异。

3、与其他模型的对比

特点逻辑回归支持向量机
分类边界最大似然最大间隔
可扩展到核函数较难支持各种核函数
参数解释性较强较弱
小样本泛化能力一般

六、SVM 的训练与实现

1、训练库推荐

  • 推荐使用现有库如:
    • LIBSVM:C++ 实现,接口广泛。
    • Scikit-learn 中的 sklearn.svm.SVC
    • MATLAB/Octave 中也有内建支持。

2、超参数调优建议

  • 交叉验证选取最佳的:
    • 惩罚参数 C。
    • 核函数参数(如 σ)。
http://www.xdnf.cn/news/897805.html

相关文章:

  • window安装docker
  • 无需域名,直接加密IP的SSL方案
  • Docker容器化技术概述与实践
  • 【Python工具开发】k3q_arxml 简单但是非常好用的arxml编辑器,可以称为arxml杀手包
  • python闭包与装饰器
  • Chrome安装代理插件ZeroOmega(保姆级别)
  • 浏览器工作原理01 [#]Chrome架构:仅仅打开了1个页面,为什么有4个进程
  • .NET AOT 详解
  • Spring AI 入门:Java 开发者的生成式 AI 实践之路
  • 保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
  • C#报错 iText.Kernel.Exceptions.PdfException: ‘Unknown PdfException
  • uniapp+vue2解构赋值和直接赋值的优缺点
  • 12.vite,webpack构建工具
  • 云原生玩法三问:构建自定义开发环境
  • 父组件prop传向子组件的值,被子组件直接v-model绑定 功能不生效
  • win10安装WSL2、Ubuntu24.04
  • 华为云学堂-云原生开发者认证课程列表
  • uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
  • 惊艳呈现:探索数据可视化的艺术与科学
  • 详细介绍uni-app中Composition API和Options API的使用方法
  • 微信小程序- 用canvas生成排行榜
  • iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
  • 大白话解释一下 MIC Bias
  • React - 组件通信
  • CDN:静态资源如何加速?
  • 采用轮询的方式实现在线人数
  • SpringAI 1.0.0 正式版——利用Redis存储会话(ChatMemory)
  • Kafka 入门指南与一键部署
  • SpringCloud学习笔记-3
  • Linux命令基础(2)