博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吴恩达机器学习——支持向量机SVM
阅读量:3959 次
发布时间:2019-05-24

本文共 3730 字,大约阅读时间需要 12 分钟。

SVM

SVM hypothesis:

min ⁡ C ∑ i = 1 m [ y ( i ) c o s t 1 ( θ T x ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T x ( i ) ) ] + 1 2 ∑ i = 1 n θ j 2 \min C\sum^m_{i=1}[y^{(i)}cost_1(\theta ^Tx^{(i)})+(1-y^{(i)})cost_0(\theta ^Tx^{(i)})]+\frac{1}{2}\sum^n_{i=1}\theta^2_j minCi=1m[y(i)cost1(θTx(i))+(1y(i))cost0(θTx(i))]+21i=1nθj2
h θ ( x ) = { 1 if  θ T x ⩾ 0 0 otherwise h_{\theta}(x)=\begin{dcases}1 &\text{if } \enspace\theta ^Tx\geqslant 0\\0 &\text{otherwise}\end{dcases} hθ(x)={
10if θTx0otherwise
大间距分类器Large Margin Classifier/Intuition:当C很大时
SVM:当C不是很大时
margin:样本到决策边界的最大距离
margin使SVM具有鲁棒性
SVM使正负样本以最大margin分隔开来

大间隔分类器

min ⁡ θ 1 2 ∑ j = 1 n θ j 2 = 1 2 ∥ θ ∥ 2 s . t . θ T x ( i ) ≥ 1 i f    y ( i ) = 1    θ T x ( i ) ≤ − 1    i f    y ( i ) = 0 \min_\theta\frac{1}{2}\sum_{j=1}^n\theta_j^2=\frac{1}{2}\Vert\theta\Vert^2\\ s.t.\quad\theta^Tx^{(i)}\ge1\qquad if\;y^{(i)}=1\\ \qquad\;\theta^Tx^{(i)}\le-1\quad\; if\;y^{(i)}=0 θmin21j=1nθj2=21θ2s.t.θTx(i)1ify(i)=1θTx(i)1ify(i)=0

Simplification: θ 0 = 0 , n = 2 \theta_0=0,n=2 θ0=0n=2

在这里插入图片描述

带核函数的SVM

  • 利用高斯核函数实现非线性的SVM。

Given x ( 1 ) , y ( 1 ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) , x^{(1)},y^{(1)},(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)}), x(1),y(1),(x(2),y(2)),...,(x(m),y(m)),

choose l ( 1 ) = x ( 1 ) , l ( 2 ) = x ( 2 ) , . . . l ( m ) = x ( m ) . l^{(1)}=x^{(1)},l^{(2)}=x^{(2)},...l^{(m)}=x^{(m)}. l(1)=x(1),l(2)=x(2),...l(m)=x(m).
Given example x x x:

f 1 = s i m i l a r i t y ( x , l ( 1 ) ) = exp ⁡ ( − ∣ ∣ x − l ( 1 ) ∣ ∣ 2 2 σ 2 ) f_1=similarity(x,l^{(1)})=\exp(-\dfrac{||x-l^{(1)}||^2}{2\sigma^2}) f1=similarity(x,l(1))=exp(2σ2xl(1)2)

f 2 = s i m i l a r i t y ( x , l ( 2 ) ) = exp ⁡ ( − ∣ ∣ x − l ( 2 ) ∣ ∣ 2 2 σ 2 ) f_2=similarity(x,l^{(2)})=\exp(-\dfrac{||x-l^{(2)}||^2}{2\sigma^2}) f2=similarity(x,l(2))=exp(2σ2xl(2)2)

For training example ( x ( i ) , y ( i ) ) : (x^{(i)},y^{(i)}): (x(i),y(i)):

f 1 ( i ) = s i m ( x ( i ) , l ( 1 ) ) f^{(i)}_1=sim(x^{(i)},l^{(1)}) f1(i)=sim(x(i),l(1))

f 2 ( i ) = s i m ( x ( i ) , l ( 2 ) ) f^{(i)}_2=sim(x^{(i)},l^{(2)}) f2(i)=sim(x(i),l(2))
f 2 ( i ) = s i m ( x ( i ) , l ( m ) ) f^{(i)}_2=sim(x^{(i)},l^{(m)}) f2(i)=sim(x(i),l(m))

Hypothesis: Given x x x, compute features f ∈ R m + 1 f\in \R^{m+1} fRm+1

      Predict “ y = 1 y=1 y=1” if θ T f ≥ 0 \theta^Tf\ge 0 θTf0
Training:
min ⁡ θ C ∑ i = 1 m y ( i ) c o s t 1 ( θ T f ( i ) ) + ( 1 − y ( i ) ) c o s t 0 ( θ T f ( i ) ) + 1 2 ∑ j = 1 m θ j 2 \min_{\theta}C\sum^m_{i=1}y^{(i)}cost_1(\theta^Tf^{(i)})+(1-y^{(i)})cost_0(\theta^Tf^{(i)})+\dfrac{1}{2}\sum^m_{j=1}\theta^2_j θminCi=1my(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))+21j=1mθj2

对于 ∑ j = 1 m θ j 2 = θ T θ \sum^m_{j=1}\theta^2_j=\theta^T\theta j=1mθj2=θTθ,可以用 θ T M θ \theta^TM\theta θTMθ来优化算法.

SVM的参数设置

C(= 1 λ \frac{1}{\lambda} λ1)

Large C ⟺ \Longleftrightarrow small λ ⟹ \lambda \Longrightarrow λ 低偏差,高方差 ⟺ \Longleftrightarrow overfit

Small C ⟺ \Longleftrightarrow large λ ⟹ \lambda \Longrightarrow λ 高偏差,低方差 ⟺ \Longleftrightarrow underfit

σ 2 \sigma^2 σ2

如果 x ≈ l ( 1 ) x \approx l^{(1)} xl(1) f 1 ≈ 1 f_1 \approx 1 f11;如果 x x x is far from l ( 1 ) l^{(1)} l(1) f 1 ≈ 0 f_1 \approx 0 f10.

在这里插入图片描述
如上图所示,

  1. x x x l ( 1 ) l^{(1)} l(1)处对应的特征值最大,为1;离 l ( 1 ) l^{(1)} l(1)越远,特征值越小,至0.
  2. σ 2 \sigma^2 σ2越小,等高线收缩,随距离变化速度越快;反之, σ 2 \sigma^2 σ2越大,等高线扩大,随距离变化速度越慢

Large σ 2 \sigma^2 σ2 ⟺ \Longleftrightarrow Feature f i f_i fi vary more smoothly ⟺ \Longleftrightarrow 模型随着 x x x的输入变化缓慢 ⟺ \Longleftrightarrow 高偏差,低方差 ⟺ \Longleftrightarrow underfit

Small σ 2 \sigma^2 σ2 ⟺ \Longleftrightarrow Feature f i f_i fi vary less smoothly ⟺ \Longleftrightarrow 低偏差,高方差 ⟺ \Longleftrightarrow overfit

结束语

用SVM software package (e.g. liblinear, libsum, …) 来求得参数 θ \theta θ

转载地址:http://pymzi.baihongyu.com/

你可能感兴趣的文章
GDB调试各功能总结
查看>>
"undefined reference to" 多种可能出现的问题解决方法
查看>>
类结构定义
查看>>
Windows下关于多线程类 CSemaphore,CMutex,CCriticalSection,CEvent,信号量CSemaphore的使用介绍
查看>>
图像处理基本算法(汇总)以及实现
查看>>
C++编程获取本机网卡信息 本机IP 包括Windows和Linux
查看>>
C++连接CTP接口实现简单量化交易
查看>>
服务端使用c++实现websocket协议解析及通信
查看>>
C# string.Format使用说明
查看>>
Linux下安装Mysql数据库开发环境
查看>>
Linux用户及用户组添加和删除操作
查看>>
通用 Makefile 的编写方法以及多目录 makefile 写法
查看>>
C++的4种智能指针剖析使用
查看>>
RPC框架实现之容灾策略
查看>>
Docker私库
查看>>
hdu——1106排序(重定向)
查看>>
hdu——1556Color the ball(树状数组)
查看>>
hdu——1541Stars(树状数组)
查看>>
快速幂的精简代码
查看>>
求大数乘方的前n位数字(对数加快速幂)
查看>>