机器学习 2014斯坦福大学课程: 5 支持向量机

机器学习 2014斯坦福大学课程: 5 支持向量机

刚开始学习机器学习,学习的视频教程是coursera网站上吴恩达(Andrew Ng)教授的机器学习课程。
在此梳理并记录总结笔记,供学习交流,欢迎批评指正!

机器学习 分类 回顾

  1. 监督学习(supervised learning )
    1.1 回归问题(regression): 线性回归问题(linear regression)
    1.2 分类问题(classification):逻辑回归;神经网络;向量机
  2. 无监督学习(unsupervised learning)
    2.1 聚集问题(clustering)
    2.2. 非聚集问题(non-clustering)

支持向量机(support vector machine,SVM)

除逻辑回归,神经网络之外,又一个解决分类问题的方法,是监督学习算法之一。

逻辑回归问题中代价函数为:
J ( θ 0 , θ 1 , . . . θ n ) = 1 m ∑ i = 1 m ( − y ( i ) ∗ l o g ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ) l o g ( 1 − h θ ( x ( i ) ) ) ) + λ 2 m ∑ j = 1 n θ j 2 J(\theta_0,\theta_1,...\theta_n)=\frac{1}{m}\sum_{i=1}^m (-y^{(i)}*log(h_\theta(x^{(i)}))+(1-y^{(i))})log(1-h_\theta(x^{(i)}))) +\frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 J(θ0,θ1,...θn)=m1i=1m(y(i)log(hθ(x(i)))+(1y(i)))log(1hθ(x(i))))+2mλj=1nθj2
h ( θ ) = g ( X ∗ θ ) h(\theta)=g(X*\theta) h(θ)=g(Xθ)
其中, g ( z ) g(z) g(z) sigmoid函数为
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1
l o g ( h θ ( x ( i ) ) ) , l o g ( 1 − h θ ( x ( i ) ) ) log(h_\theta(x^{(i)})),log(1-h_\theta(x^{(i)})) log(hθ(x(i)))log(1hθ(x(i)))两个函数分别用分段函数代替(图中紫红色函数),并且正则化一项的 λ \lambda λ转移到第一项,去掉 1 m \frac{1}{m} m1
支持向量机中代价函数为
J ( θ ) = 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 ∑ j = 1 n θ j 2 J(\theta)=C\sum_{i=1}^m (-y^{(i)}*cost_1(\theta^Tx^{(i)}))+(1-y^{(i))})cost_0(\theta^Tx^{(i)}))) +\frac{1}{2}\sum_{j=1}^n\theta_j^2 J(θ)=Ci=1m(y(i)cost1(θTx(i)))+(1y(i)))cost0(θTx(i))))+21j=1nθj2
h θ = { 1 θ T x ≥ 1 1 θ T x ≤ − 1 h_\theta=\begin{cases} 1 & \theta^Tx\ge1\\1 & \theta^Tx\le-1 \end{cases} hθ={11θTx1θTx1
C可以理解为 1 / λ 1/\lambda 1/λ
如图所示,
只有当 y = 1 时 , z = θ T x ≥ 1 y=1时,z=\theta^Tx\ge1 y=1z=θTx1,cost会趋近0
y = 0 时 , z = θ T x ≤ − 1 y=0时,z=\theta^Tx\le-1 y=0z=θTx1,cost会趋近0
在这里插入图片描述

大间距分类机(large margin classification machine)

m i n J ( θ ) = m i n 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 ∑ j = 1 n θ j 2 minJ(\theta)=minC\sum_{i=1}^m (-y^{(i)}*cost_1(\theta^Tx^{(i)}))+(1-y^{(i))})cost_0(\theta^Tx^{(i)}))) +\frac{1}{2}\sum_{j=1}^n\theta_j^2 minJ(θ)=minCi=1m(y(i)cost1(θTx(i)))+(1y(i)))cost0(θTx(i))))+21j=1nθj2
= 1 2 ( θ 1 2 + θ 2 2 ) = 1 2 ( θ 1 2 + θ 2 2 ) = 1 2 ∣ ∣ θ ∣ ∣ 2 =\frac{1}{2}(\theta_1^2+\theta_2^2)=\frac{1}{2}\sqrt{(\theta_1^2+\theta_2^2)}=\frac{1}{2}||\theta||^2 =21(θ12+θ22)=21(θ12+θ22) =21θ2
当y=1或0时前一项趋近0只剩后一项,要使后一项尽可能小,就使 θ \theta θ向量长度尽可能小
数学意义:
u = [ u 1 ; u 2 ] u=[u_1;u_2] u=[u1;u2], v = [ v 1 ; v 2 ] v=[v_1;v_2] v=[v1;v2]
u T v = u 1 v 1 + u 2 v 2 = p ∗ ∣ ∣ u ∣ ∣ = p ∗ ( u 1 2 + u 2 2 ) u^Tv=u_1v_1+u_2v_2=p*||u||=p*\sqrt{(u_1^2+u_2^2)} uTv=u1v1+u2v2=pu=p(u12+u22) ,p为v投影到u的长度,有正负
在这里插入图片描述
svm决策边界
考虑二分类问题,特征只有2个,将两类别完全分开的直线(决策边界)一定是大间距。
θ \theta θ x x x类比于 u , v u,v u,v
θ T x = θ 1 x 1 + θ 2 x 2 = p ∣ ∣ θ ∣ ∣ ≥ 1 o r ≤ − 1 \theta^Tx=\theta_1x_1+\theta_2x_2=p||\theta||\ge 1 or \le-1 θTx=θ1x1+θ2x2=pθ1or1
θ \theta θ向量垂直于决策边界
左图中,样本投影到 θ \theta θ向量的p长度较小,为了满足 > 1 \gt1 >1或者 ≤ − 1 \le-1 1 ∣ ∣ θ ∣ ∣ ||\theta|| θ必须比较大,但此时违反了minJ的要求
右图中, 样本投影到 θ \theta θ向量的p长度较大,为了满足 > 1 \gt1 >1或者 ≤ − 1 \le-1 1 ∣ ∣ θ ∣ ∣ ||\theta|| θ比较小,此时满足了minJ的要求
在这里插入图片描述

核函数(kernel)

针对非线形决策边界,如何构造?
θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n \theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+...+\theta_nx_n θTx=θ0+θ1x1+θ2x2+θ3x3+...+θnxn
f 0 = 1 , f 1 = x 1 , f 2 = x 2 . . . f_0=1,f_1=x_1,f_2=x_2... f0=1,f1=x1,f2=x2...
θ T f = θ 0 + θ 1 f 1 + θ 2 f 2 + θ 3 f 3 + . . . + θ n f n \theta^Tf=\theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3+...+\theta_nf_n θTf=θ0+θ1f1+θ2f2+θ3f3+...+θnfn
针对非线形可以,令 f 0 = 1 , f 1 = x 1 2 , f 2 = x 2 2 , f 3 = x 2 x 3 . . . f_0=1,f_1=x_1^2,f_2=x_2^2,f_3=x_2x_3... f0=1,f1=x12,f2=x22,f3=x2x3...

1.高斯核函数(gaussian kernel
f 1 = s i m i l a r i t y ( x ( i ) , l ( 1 ) ) = e x p ( − ( ∣ ∣ x − l ( 1 ) ∣ ∣ ) 2 2 σ 2 ) f_1=similarity(x^{(i)},l^{(1)})=exp(-\frac{(||x-l^{(1)}||)^2}{2\sigma^2}) f1=similarity(x(i),l(1))=exp(2σ2(xl(1))2)
f 2 = s i m i l a r i t y ( x ( i ) , l ( 2 ) ) = e x p ( − ( ∣ ∣ x − l ( 2 ) ∣ ∣ ) 2 2 σ 2 ) f_2=similarity(x^{(i)},l^{(2)})=exp(-\frac{(||x-l^{(2)}||)^2}{2\sigma^2}) f2=similarity(x(i),l(2))=exp(2σ2(xl(2))2)
f 3 = s i m i l a r i t y ( x ( i ) , l ( 3 ) ) = e x p ( − ( ∣ ∣ x − l ( 3 ) ∣ ∣ ) 2 2 σ 2 ) f_3=similarity(x^{(i)},l^{(3)})=exp(-\frac{(||x-l^{(3)}||)^2}{2\sigma^2}) f3=similarity(x(i),l(3))=exp(2σ2(xl(3))2)

l ( 1 ) , l ( 2 ) . . . 对 应 于 x ( 1 ) , x ( 2 ) . . . m 个 点 l^{(1)},l^{(2)}...对应于x^{(1)},x^{(2)}...m个点 l(1),l(2)...x(1),x(2)...m
f i = s i m i l a r i t y ( x ( i ) , l ( i ) ) = 0 f_i=similarity(x^{(i)},l^{(i)})=0 fi=similarity(x(i),l(i))=0
C越大, λ \lambda λ越小,对应高方差
C越小, λ \lambda λ越大,对应高偏差
σ \sigma σ越大越平缓;对应高偏差
σ \sigma σ越小越尖锐 ;对应高方差在这里插入图片描述 2) 线形核函数(linear kernel),即不使用核函数
θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + . . . + θ n x n \theta^Tx=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+...+\theta_nx_n θTx=θ0+θ1x1+θ2x2+θ3x3+...+θnxn
3)字符串核函数(string kernel)、多项式核函数(polynomial kernel)、卡方核函数(chi-square kernel)等等

支持向量机方法总结

样本数为m,特征数为n
1.n远大于m,样本数少,使用逻辑回归或者不带核函数的支持向量机
2.n较小,m中等,使用高斯核函数的支持向量机
3.n较小,m较大,要创造更多特征,然后使用逻辑回归或者不带核函数的支持向量机
支持向量机方法,主要是选择核函数,写核函数程序,然后选择最优化算法优化

python代码

高斯核函数

def gaussian_kernel(x1,x2,sigma):
    return np.exp(-(np.sum((x1-x2)**2)/(2*(sigma**2))))

调用库

import sklearn import svm
'''linear knernel'''
svc=svm.LinearSVC(C=1,loss='hinge',max_iter=1000)
svc.fit(X,y)
svc.score(X,y)
'''gaussian kernel'''
svc=svm.SVC(C=1,gamma=10,probability=True)
svc.fit(X,y)
svc.score(X,y)

参考

[1] 来自本课程课件和作业题,以及黄海广github上的中文笔记资料等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值