逻辑回归
h θ ( x ) = 1 1 + e − θ x h_\theta(x)= \dfrac1{1+e^{-\theta x}} hθ(x)=1+e−θx1
如果y=1,则我们希望
h
θ
(
x
)
≈
1
h_\theta(x) \approx1
hθ(x)≈1,则必须要
θ
x
≫
0
\theta x \gg0
θx≫0
如果y=0,则我们希望
h
θ
(
x
)
≈
0
h_\theta(x) \approx0
hθ(x)≈0,则必须要
θ
x
≪
0
\theta x \ll0
θx≪0
逻辑回归的损失函数
单个样本的损失为:
l
o
s
s
=
−
(
y
log
h
θ
(
x
)
)
+
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
)
loss=-(y\log{h_\theta(x))}+(1-y)\log(1-h_\theta(x)))
loss=−(yloghθ(x))+(1−y)log(1−hθ(x)))
这个函数图像分为当y=1时和y=0时:
如果y=1,为试损失最小我们期望
z
=
θ
x
≫
0
z=\theta x \gg0
z=θx≫0
如果y=0,为使损失最小我们期望
θ
x
≪
0
\theta x \ll0
θx≪0
逻辑回归的损失函数
l
o
s
s
=
1
m
∑
i
=
1
m
−
(
y
i
log
h
θ
(
x
i
)
)
+
(
1
−
y
i
)
log
(
1
−
h
θ
(
x
i
)
)
)
+
λ
2
m
∑
i
=
1
n
θ
2
loss=\dfrac 1 m \sum\limits_{i=1}^m{-(y^i\log{h_\theta(x^i))}+(1-y^i)\log(1-h_\theta(x^i)))}+\dfrac \lambda {2m}\sum\limits_{i=1}^n\theta^2
loss=m1i=1∑m−(yiloghθ(xi))+(1−yi)log(1−hθ(xi)))+2mλi=1∑nθ2
其中m为样本个数,n为特征维数
y
i
y^i
yi和
x
i
x^i
xi分别代表第i个样本的标签和特征。
λ
\lambda
λ是正则化参数的权重
svm的损失函数
l o s s = C ∑ i = 1 m [ y i C o s t 1 ( θ x i ) + ( 1 − y i ) i C o s t 2 ( θ x i ) ] + ∑ i = 1 n θ 2 loss=C \sum\limits_{i=1}^m[{y^iCost_1(\theta x^i)+(1-y^i)iCost_2(\theta x^i)}]+\sum\limits_{i=1}^n\theta^2 loss=Ci=1∑m[yiCost1(θxi)+(1−yi)iCost2(θxi)]+i=1∑nθ2
svm的损失函数对比逻辑回归的损失函数
对比逻辑回归的损失函数发现他们非常相似。上图的粉红色线即svm的算是函数曲线。
在两个函数中C,m,
λ
\lambda
λ均为常数,svm的损失函数可以看做逻辑回归的损失函数的单个样本乘以
C
∗
m
C*m
C∗m,正则化项乘以
2
C
m
λ
\dfrac {2Cm} \lambda
λ2Cm,乘以这些常数再求min的过程中并不会改变
θ
\theta
θ的解。所以我们说他们比较相似,简单来说就是逻辑回归把权重放在了正则化项上
∑
i
=
1
n
θ
2
\sum\limits_{i=1}^n\theta^2
i=1∑nθ2,而SVM把权重放在了样本分类情况的损失项上。
损失函数的特性
C是常数,当C非常大是SVM更倾向于尽可能将样本全部分类正确
当C比较小是SVM更倾向于找出尽可能大的软间隔
svm为啥能使间隔最大化?
当y=1时
svm的损失函数简化为:
l
o
s
s
=
C
∑
i
=
1
m
[
y
i
C
o
s
t
1
(
θ
x
i
)
]
+
∑
i
=
1
n
θ
2
loss=C \sum\limits_{i=1}^m[{y^iCost_1(\theta x^i)}]+\sum\limits_{i=1}^n\theta^2
loss=Ci=1∑m[yiCost1(θxi)]+i=1∑nθ2
图像大致如下:
我们不妨假设在训练时我们为了求min(loss)已经使
θ
x
i
\theta x^i
θxi>1,这样
C
∑
i
=
1
m
[
y
i
C
o
s
t
1
(
θ
x
i
)
]
=
0
C \sum\limits_{i=1}^m[{y^iCost_1(\theta x^i)}]=0
Ci=1∑m[yiCost1(θxi)]=0,损失函数继续被简化
l
o
s
s
=
∑
i
=
1
n
θ
2
loss=\sum\limits_{i=1}^n\theta^2
loss=i=1∑nθ2
s
.
t
θ
x
i
>
1
s.t \space \space \space \space \space \space \space \space \theta x^i >1
s.t θxi>1
不妨假设一下x是在二维空间空间上的点
(
x
1
,
x
2
)
(x_1,x_2)
(x1,x2),
θ
\theta
θ为
(
θ
1
,
θ
2
)
(\theta_1,\theta_2)
(θ1,θ2)
可知
θ
x
i
=
p
i
∣
∣
θ
∣
∣
\theta x^i=p^i||\theta||
θxi=pi∣∣θ∣∣
p
i
p^i
pi是
x
i
x^i
xi在
θ
\theta
θ方向投影的长度,
∣
∣
θ
∣
∣
||\theta||
∣∣θ∣∣为
θ
\theta
θ的长度。
(因为
θ
\theta
θ是直线的法向量,
p
i
p^i
pi即点到直线的距离)
现在对简化后的随时函数和条件进行变换
l
o
s
s
=
∑
i
=
1
n
θ
2
=
θ
1
2
+
θ
2
2
=
(
θ
1
2
+
θ
2
2
)
2
=
∣
∣
θ
∣
∣
2
\begin{aligned} loss &=\sum\limits_{i=1}^n\theta^2 \\ &=\theta_1^2+\theta_2^2 \\ &=(\sqrt{\theta_1^2+\theta_2^2} \space)^2\\ &=||\theta||^2 \end{aligned}
loss=i=1∑nθ2=θ12+θ22=(θ12+θ22 )2=∣∣θ∣∣2
s
.
t
θ
x
i
=
p
i
∣
∣
θ
∣
∣
>
1
s.t \space \space \space \space \space \space \space \space \theta x^i =p^i||\theta|| >1
s.t θxi=pi∣∣θ∣∣>1
现在结果变得清晰,为使loss最小,必然会使 ∣ ∣ θ ∣ ∣ ||\theta|| ∣∣θ∣∣最小,由于 p i ∣ ∣ θ ∣ ∣ > 1 , p^i||\theta|| >1, pi∣∣θ∣∣>1,最小化 ∣ ∣ θ ∣ ∣ ||\theta|| ∣∣θ∣∣必然会使 p i p^i pi最大才能满足条件。而 p i p^i pi正是点到分界线的距离。所以使得间隔最大化。
当y=0时,原理同y=1时
一图分割线没有二图的好
核函数
高斯核
f
1
=
exp
(
−
∣
∣
x
−
l
1
∣
∣
2
2
σ
2
)
f_1=\exp ({-\dfrac {||x-l_1||^2} {2\sigma^2}} )
f1=exp(−2σ2∣∣x−l1∣∣2)
高斯核实际上对原坐标点进行了一次求相似性的操作:
越近核的坐标越趋向于1,否则输出趋向于0
σ \sigma σ因子的影响
核函数不止有高斯核一种,但是高斯核最常用,随便构造核函数风险大
使用核函数后SVM的变换
未使用时
如果需要预测y=1,需要 ∑ θ i x i > 0 \sum \theta_ix_i >0 ∑θixi>0
使用时
如果需要预测y=1,需要
∑
θ
i
f
i
>
0
\sum \theta_if_i >0
∑θifi>0
注意:
f
i
f_i
fi表明每一维特征都可以用不同的核函数。
使用核函数后边界变化
使用情况
在Andrew Ng的机器学习视频中提到SVM和logistic回归的适用情形:
m是样本数,n是特征的数目
1、如果n相对于m来说很大,则使用logistic回归或者不带核函数的SVM(线性分类)
2、如果n很小,m的数量适中(n=1-1000,m=10-10000),使用带核函数的SVM算法
3、如果n很小,m很大(n=1-1000,m=50000+),增加更多的特征,然后使用logistic回归或者不带核函数的SVM。