基于自己理解与ng老师的课程总结出来的LR
http://mooc.study.163.com/learn/2001281002?tid=2001392029#/learn/content?type=detail&id=2001702014&cid=2001693016
逻辑回归原理
我们知道,线性回归模型是 y^=θx y ^ = θ x
但是线性回归无法用于分类,为了解决这个问题
逻辑回归利用sigmoid函数对 y^ y ^ 进行了改造
PS: sigmoid函数是 σ(z)=11+e−z σ ( z ) = 1 1 + e − z
也就是说将线性回归输出的 y^ y ^ 对应到了sigmoid函数中的 z z 将原本的连续输出变成了分类
z趋向于正无穷时,sigmoid趋向于1
z趋向于负无穷时,sigmoid趋向于0
sigmoid函数输出大于0.5,即输入 大于0 则y = 1
sigmoid函数输出小于0.5,即输入 xθ x θ 小于0 则y = 0
并且越靠近临界点,分类的准确性会越低
逻辑回归使用对数似然损失函数
逻辑回归的目标函数
y^=θx+b y ^ = θ x + b , a=σ(y^) a = σ ( y ^ )
目标函数为: L(a,y)=−(ylog(a)+(1−y)log(1−a)) L ( a , y ) = − ( y l o g ( a ) + ( 1 − y ) l o g ( 1 − a ) )
a是预测值,y是真实标签的label
逻辑回归的迭代过程
首先对 L(a,y) L ( a , y ) 进行求a的偏导 dL(a,y)da=−ya+1−y1−a d L ( a , y ) d a = − y a + 1 − y 1 − a
PS: sigmoid函数有一个很好的导数性质便于我们使用
σ′(y^)=σ(y^)(1−σ(y^))
σ
′
(
y
^
)
=
σ
(
y
^
)
(
1
−
σ
(
y
^
)
)
sigmoid函数 σ σ 进行对z的求导 dσdy^=σ(y^)(1−σ(y^)) d σ d y ^ = σ ( y ^ ) ( 1 − σ ( y ^ ) )
因为 a=σ(y^) a = σ ( y ^ ) 所以 dσdy^=dady^=a(1−a) d σ d y ^ = d a d y ^ = a ( 1 − a )
dL(a,y)dz=dL(a,y)da⋅dady^=(−ya+1−y1−a)⋅dady^=a−y d L ( a , y ) d z = d L ( a , y ) d a ⋅ d a d y ^ = ( − y a + 1 − y 1 − a ) ⋅ d a d y ^ = a − y
再求 dzdw1=x1 d z d w 1 = x 1 dzdw2=x2 d z d w 2 = x 2
最后通过链式法则得到
dL(a,y)dw1=x1⋅dL(a,y)dy^
d
L
(
a
,
y
)
d
w
1
=
x
1
⋅
d
L
(
a
,
y
)
d
y
^
w1: = w1 -
αdL(a,y)dw1
α
d
L
(
a
,
y
)
d
w
1
α
α
为学习率
逻辑回归的损失函数的解释
首先我们从逻辑回归模型的最大似然估计的角度出发,假设训练集都是独立同分布的条件下,将逻辑回归的结果用概率的方式表示出来
if y = 1:
p(y|x)=y^
p
(
y
|
x
)
=
y
^
if y = 0:
p(y|x)=1−y^
p
(
y
|
x
)
=
1
−
y
^
然后将着两条式子拼起来 p(y|x)=y^y(1−y^)(1−y) p ( y | x ) = y ^ y ( 1 − y ^ ) ( 1 − y )
样本联合概率 P(所有样本)=∏mi=1⋅p(yi|xi)=∏mi=1y^y(1−y^)(1−y) P ( 所 有 样 本 ) = ∏ i = 1 m ⋅ p ( y i | x i ) = ∏ i = 1 m y ^ y ( 1 − y ^ ) ( 1 − y )
做最大似然估计找到一组参数使得样本联合概率达到最大(最符合训练数据)
在式子左右均取对数,因为样本联合概率最大化等价于取对数之后最大化
logP(所有样本) l o g P ( 所 有 样 本 )
=∑mi=1logp(yi|xi)=∑mi=1(ylogy^+(1−y)log(1−y^)) = ∑ i = 1 m l o g p ( y i | x i ) = ∑ i = 1 m ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) )
我们目的是为了让这个logP(所有样本)最大化,但是损失函数是要让其最小化。
所以在前加负值就是LR的损失函数
L(y^,y)=−∑mi=1(ylogy^+(1−y)log(1−y^))
L
(
y
^
,
y
)
=
−
∑
i
=
1
m
(
y
l
o
g
y
^
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
)
为何使用逻辑对数损失函数?
答:假如采用平方和损失函数是非凸函数,无法使用梯度下降法去求得全局最低点
所以逻辑回归采用这个特殊的逻辑对数损失函数,是凸函数,可利用梯度下降法取得全局最低点
逻辑回归的成本函数
成本函数: J(w,b)=−1m∑mi=1(ylogy^+(1−y)log(1−y^)) J ( w , b ) = − 1 m ∑ i = 1 m ( y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) )
1m 1 m 是为了计算方便,人为进行的缩放
损失函数的优化方法
迭代尺度法, 梯度下降法,牛顿法或者拟牛顿法.牛顿法或者拟牛顿法一般收敛速度更快
LR为什么用sigmoid函数??为什么
因为LR是伯努利分布,遵循广义线性分布,所以预测的输出的期望就是伯努利分布本身发生的概率,也就正好推出来sigmoid函数的形式