逻辑回归(Logistic Regression)
这是一个软性二分类问题:关心的是目标函数的值(分布在[0,1]之间),表示正类的概率是多少。值越接近于1,表示正类的可能性越大。
目标函数: f ( x ) = P ( + 1 ∣ x ) ∈ [ 0 , 1 ] ⇔ P ( y ∣ x ) = { 1 − f ( x ) , f o r y = − 1 f ( x ) , f o r y = + 1 f(x) = P(+1|x)\in [0,1] \Leftrightarrow P(y|x) = \{^{f(x), for \ y = +1}_{1-f(x), for \ y = -1} f(x)=P(+1∣x)∈[0,1]⇔P(y∣x)={1−f(x),for y=−1f(x),for y=+1
理想中的数据是分布在[0,1]之间的具体值,但是实际中的数据只可能是0或1,可以把实际中的数据看成是理想数据加上了噪声的影响。
其 hypothesis 为 sigmoid 函数:
h
(
x
)
=
1
1
+
e
−
w
T
x
h(x) = \frac{1}{1+e^{-w^Tx}}
h(x)=1+e−wTx1
目标:求出这个预测函数,使它接近目标函数
f
(
x
)
f(x)
f(x)
似然性:若找到一个 hypothesis h(x) 很接近 target function,也就是说,在所有的 hypothesis 中找到一个h(x)与f(x)最接近,能产生同样的数据集D,则称这个h(x)为最大似然性。
假设数据集
D
=
{
(
x
1
,
∘
)
,
(
x
2
,
×
)
,
…
,
(
x
N
,
×
)
}
D = \{(x_1,\circ),(x_2,\times),\dots,(x_N,\times)\}
D={(x1,∘),(x2,×),…,(xN,×)}
probability that f generates D:
P
(
x
1
)
f
(
x
1
)
×
P
(
x
2
)
(
1
−
f
(
x
2
)
)
×
⋯
×
P
(
X
N
)
(
1
−
f
(
X
N
)
)
P(x_1)f(x_1)\times P(x_2)(1-f(x_2))\times \dots \times P(X_N)(1-f(X_N))
P(x1)f(x1)×P(x2)(1−f(x2))×⋯×P(XN)(1−f(XN))
likelihood that h generates D:
P
(
x
1
)
f
(
x
1
)
×
P
(
x
2
)
(
1
−
f
(
x
2
)
)
×
⋯
×
P
(
X
N
)
(
1
−
f
(
X
N
)
)
P(x_1)f(x_1)\times P(x_2)(1-f(x_2))\times \dots \times P(X_N)(1-f(X_N))
P(x1)f(x1)×P(x2)(1−f(x2))×⋯×P(XN)(1−f(XN))
(若
h
≈
f
h\approx f
h≈f,则likelihood h的公式如上所示)
logistic function:
h
(
x
)
=
θ
(
w
T
x
)
h(x) = \theta(w^Tx)
h(x)=θ(wTx)满足一个性质:
1
−
h
(
x
)
=
h
(
−
x
)
1-h(x) = h(-x)
1−h(x)=h(−x).
那么,likelihood h的公式为:
l
i
k
e
l
i
h
o
o
d
(
h
)
=
P
(
x
1
)
h
(
+
x
1
)
×
P
(
x
2
)
h
(
−
x
2
)
×
…
P
(
x
N
)
h
(
−
x
N
)
likelihood(h) = P(x_1)h(+x_1)\times P(x_2)h(-x_2)\times \dots P(x_N)h(-x_N)
likelihood(h)=P(x1)h(+x1)×P(x2)h(−x2)×…P(xN)h(−xN)
因为
P
(
x
n
)
P(x_n)
P(xn)对所有的h来说都是一样的,所以可以忽略。则ikelihood正比于所有的
h
(
y
n
x
n
)
h(y_nx_n)
h(ynxn)的乘积。
目标是使乘积最大化。
m
a
x
h
l
i
k
e
l
i
h
o
o
d
(
h
)
∝
∏
n
=
1
N
h
(
y
n
x
n
)
max_h likelihood(h) \propto \prod_{n=1}^{N}h(y_nx_n)
maxhlikelihood(h)∝n=1∏Nh(ynxn)
将w带入:
m
a
x
w
l
i
k
e
l
i
h
o
o
d
(
w
)
∝
∏
n
=
1
N
θ
(
y
n
w
T
x
n
)
max_w likelihood(w) \propto \prod_{n=1}^{N}\theta(y_nw^Tx_n)
maxwlikelihood(w)∝n=1∏Nθ(ynwTxn)
为了简化计算,引入
ln
\ln
ln操作:
m
a
x
w
∑
n
=
1
N
ln
θ
(
y
n
w
T
x
n
)
max_w \sum_{n=1}^N\ln \theta(y_nw^Tx_n)
maxwn=1∑Nlnθ(ynwTxn)
将maximize问题转化为minimize问题,并引入平均数
1
N
\frac{1}{N}
N1:
m
i
n
w
1
N
∑
n
=
1
N
−
ln
θ
(
y
n
w
T
x
n
)
min_w\frac{1}{N}\sum_{n=1}^N -\ln\theta(y_nw^Tx_n)
minwN1n=1∑N−lnθ(ynwTxn)
将logistic function
θ
(
s
)
\theta(s)
θ(s)的表达式带入,得:
m
i
n
w
1
N
∑
n
=
1
N
ln
(
1
+
e
x
p
(
−
y
n
w
T
x
n
)
)
min_w\frac{1}{N}\sum_{n=1}^N\ln(1+exp(-y_nw^Tx_n))
minwN1n=1∑Nln(1+exp(−ynwTxn))
⟹
m
i
n
w
1
N
e
r
r
(
w
,
x
n
,
y
n
)
\Longrightarrow min_w\frac{1}{N}err(w,x_n,y_n)
⟹minwN1err(w,xn,yn)
由此得到了logistic function的err function,称之为cross-entropy error 交叉信息熵:
e
r
r
(
w
,
x
,
y
)
=
ln
(
1
+
e
x
p
(
−
y
w
T
x
)
)
err(w,x,y)=\ln(1+exp(-yw^Tx))
err(w,x,y)=ln(1+exp(−ywTx))
则接下来的目标是:找到合适的向量w,使err(即训练误差
E
i
n
E_{in}
Ein)最小。
E
i
n
E_{in}
Ein的曲线是凸函数,那么只要计算出
∇
E
i
n
=
0
\nabla E_{in}=0
∇Ein=0时的w,即为最优解。
∇
E
i
n
=
1
N
∑
n
=
1
N
θ
(
−
y
n
w
T
x
n
)
(
−
y
n
x
n
)
=
0
\nabla E_{in} = \frac{1}{N}\sum_{n=1}^N\theta(-y_nw^Tx_n)(-y_nx_n) = 0
∇Ein=N1n=1∑Nθ(−ynwTxn)(−ynxn)=0
其中
θ
(
−
y
n
w
T
x
n
)
\theta(-y_nw^Tx_n)
θ(−ynwTxn)可看成时
−
y
n
x
n
-y_nx_n
−ynxn的线性加权。
要使线性加权和为0,有两种情况:
第一种:若所有的权重
θ
(
−
y
n
w
T
x
n
)
=
0
\theta(-y_nw^Tx_n)=0
θ(−ynwTxn)=0,则
∇
E
i
n
=
0
\nabla E_{in}=0
∇Ein=0因为
θ
(
−
y
n
w
T
x
n
)
\theta(-y_nw^Tx_n)
θ(−ynwTxn)为sigmoid function,只要
−
y
n
w
T
x
n
<
<
0
-y_nw^Tx_n<<0
−ynwTxn<<0,即
y
n
w
T
x
n
>
>
0
y_nw^Tx_n>>0
ynwTxn>>0,就可使结果为0。而
y
n
w
T
x
n
>
>
0
y_nw^Tx_n>>0
ynwTxn>>0表示对所有的点
y
n
y_n
yn和
w
T
x
n
w^Tx_n
wTxn都是同号的,这表示数据集必须是线性可分的才能成立。
但是,保证线性可分不现实,更多的情况是线性不可分的。
第二种:非线性可分,只能通过使加权和为0来求解w。这种情况只能使用迭代来逐步求解。
将
E
i
n
E_{in}
Ein曲线比作一个山谷,则使
E
i
n
E_{in}
Ein最小,即可比作下山的过程。整个下山过程受两个因素影响:下山的单位方向
ν
\nu
ν和下山的补偿
η
\eta
η.
利用微分思想和线性近似,根据泰勒一节展开:
E
i
n
(
w
t
+
η
ν
)
≈
E
i
n
(
w
t
)
+
η
ν
T
∇
E
i
n
(
w
t
)
E_{in}(w_t+\eta\nu) \approx E_{in}(w_t)+\eta\nu^T\nabla E_{in}(w_t)
Ein(wt+ην)≈Ein(wt)+ηνT∇Ein(wt)
要让
E
i
n
(
w
t
+
η
ν
)
<
E
i
n
(
w
t
)
E_{in}(w_t+\eta\nu)<E_{in}(w_t)
Ein(wt+ην)<Ein(wt),则
ν
\nu
ν方向要与
E
i
n
E_{in}
Ein方向相反,
令下降方向
ν
\nu
ν为:
ν
=
−
∇
E
i
n
(
w
t
)
∣
∣
∇
E
i
n
(
w
t
)
∣
∣
\nu = -\frac{\nabla E_{in}(w_t)}{||\nabla E_{in}(w_t)||}
ν=−∣∣∇Ein(wt)∣∣∇Ein(wt)
ν
\nu
ν是单位向量,
ν
\nu
ν每次都是沿着梯度的反方向走,这种方法称为梯度下降*(gradient descent)
那么:
w
t
+
1
←
w
t
−
η
∇
E
i
n
(
w
t
)
∣
∣
∇
E
i
n
(
w
t
)
∣
∣
w_{t+1} \leftarrow w_{t} - \eta\frac{\nabla E_{in}(w_t)}{||\nabla E_{in}(w_t)||}
wt+1←wt−η∣∣∇Ein(wt)∣∣∇Ein(wt)
令
η
′
=
η
∣
∣
∇
E
i
n
(
w
t
)
∣
∣
\eta\prime = \frac{\eta}{||\nabla E_{in}(w_t)||}
η′=∣∣∇Ein(wt)∣∣η,则:
w
t
+
1
←
w
t
−
η
′
∇
E
i
n
(
w
t
)
w_{t+1} \leftarrow w_t - \eta\prime\nabla E_{in}(w_t)
wt+1←wt−η′∇Ein(wt)
根据该公式不断循环,最终即可求得w
总结一下基于梯度下降的logistic regression算法步骤:
⋅
\cdot
⋅ 初始化w
⋅
\cdot
⋅ 计算t梯度
∇
E
i
n
\nabla E_{in}
∇Ein
⋅
\cdot
⋅ 迭代
w
t
+
1
←
w
t
−
η
′
∇
E
i
n
(
w
t
)
w_{t+1} \leftarrow w_t - \eta\prime\nabla E_{in}(w_t)
wt+1←wt−η′∇Ein(wt)
⋅
\cdot
⋅ 当满足
∇
E
i
n
(
w
t
+
1
)
=
0
\nabla E_{in}(w_{t+1}) = 0
∇Ein(wt+1)=0或达到迭代次数时,迭代结束。
接下来从另一个角度来说逻辑回归。
这种方法也是梯度下降,但是使用的cost function与上面的
E
i
n
E_{in}
Ein不一样。
令
c
o
s
t
(
h
(
w
)
,
y
)
=
{
−
log
(
h
w
(
x
)
)
,
y
=
1
−
log
(
1
−
h
w
(
x
)
)
,
y
=
0
cost(h(w),y) = \begin{cases} -\log(h_w(x)), &y=1\\ -\log(1-h_w(x)),&y=0 \end{cases}
cost(h(w),y)={−log(hw(x)),−log(1−hw(x)),y=1y=0
⟹
\Longrightarrow
⟹
c
o
s
t
(
h
w
(
x
)
,
y
)
=
−
y
log
(
h
w
(
x
)
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
w
(
x
)
)
cost(h_w(x),y) = -y\log(h_w(x)))-(1-y)log(1-h_w(x))
cost(hw(x),y)=−ylog(hw(x)))−(1−y)log(1−hw(x))
则整个数据集的cost function为:
J
(
w
)
=
1
N
∑
n
=
1
N
c
o
s
t
(
h
w
(
x
n
)
,
y
n
)
J(w) = \frac{1}{N}\sum_{n=1}^Ncost(h_w(x_n),y_n)
J(w)=N1n=1∑Ncost(hw(xn),yn)
推导:
已知
P
(
1
∣
x
)
=
h
w
(
x
)
,
P
(
0
∣
x
)
=
1
−
h
w
(
x
)
P(1|x) = h_w(x),P(0|x) = 1-h_w(x)
P(1∣x)=hw(x),P(0∣x)=1−hw(x)
那么
P
(
y
∣
x
)
=
f
(
x
)
y
(
1
−
f
(
x
)
)
(
1
−
y
)
P(y|x) = f(x)^y (1-f(x))^{(1-y)}
P(y∣x)=f(x)y(1−f(x))(1−y)
,取对数,得:
l
g
P
=
y
log
(
h
w
(
x
)
)
+
(
1
−
y
)
l
o
g
(
1
−
h
w
(
x
)
)
lgP= y\log(h_w(x))+(1-y)log(1-h_w(x))
lgP=ylog(hw(x))+(1−y)log(1−hw(x)),希望P越大越好。
取负号,变为loos function,希望其越小越好。
即:
L
=
−
y
log
(
h
w
(
x
)
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
w
(
x
)
)
L= -y\log(h_w(x)))-(1-y)log(1-h_w(x))
L=−ylog(hw(x)))−(1−y)log(1−hw(x))
若有个样本,则公式变为:
J
(
w
)
=
1
N
∑
n
=
1
N
−
y
log
(
h
w
(
x
)
)
)
−
(
1
−
y
)
l
o
g
(
1
−
h
w
(
x
)
)
J(w)= \frac{1}{N}\sum_{n=1}^N-y\log(h_w(x)))-(1-y)log(1-h_w(x))
J(w)=N1n=1∑N−ylog(hw(x)))−(1−y)log(1−hw(x))
推导成功。
目的:求出最小的
J
(
w
)
J(w)
J(w)
使用梯度下降法:
repeat{
w
i
=
w
i
−
α
∂
J
(
w
)
∂
w
i
w_i = w_i - \alpha \frac{\partial J(w)}{\partial w_i}
wi=wi−α∂wi∂J(w)
}
其中:
∂
J
(
w
)
∂
w
i
=
1
N
∑
n
=
1
N
(
h
w
(
x
n
)
−
y
n
)
x
n
j
\frac{\partial J(w)}{\partial w_i} = \frac{1}{N}\sum_{n=1}^{N}(h_w(x_n)-y_n)x_{nj}
∂wi∂J(w)=N1∑n=1N(hw(xn)−yn)xnj,
w
j
w_j
wj表示第j个特征的权重。
注意:
sigmoid 函数 h(x) 的求导结果:
h
′
(
x
)
=
h
(
x
)
(
1
−
h
(
x
)
)
h'(x) = h(x)(1-h(x))
h′(x)=h(x)(1−h(x))