二分分类
公式
当
x
x
x只有一个属性时:
f
(
x
)
=
w
x
+
b
f(x)=wx+b
f(x)=wx+b
当
x
x
x的属性不止一个时:
x
=
[
x
1
x
2
x
3
]
x=\begin{bmatrix} x1\\ x2\\x3\end{bmatrix}
x=⎣⎡x1x2x3⎦⎤
w
=
[
w
1
w
2
w
3
]
w=\begin{bmatrix}w1\\w2\\w3\end{bmatrix}
w=⎣⎡w1w2w3⎦⎤
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
w
3
x
3
+
b
f(x)=w1x1+w2x2+w3x3+b
f(x)=w1x1+w2x2+w3x3+b
这时我们就可以转换成矩阵运算了
f
(
x
)
=
w
T
x
f(x)=w^Tx
f(x)=wTx
即
[
w
1
w
2
w
3
]
∗
[
x
1
x
2
x
3
]
+
b
=
w
1
x
1
+
w
2
x
2
+
w
3
x
3
+
b
\begin{bmatrix}w1&w2&w3\end{bmatrix}*\begin{bmatrix}x1\\x2\\x3\end{bmatrix}+b=w1x1+w2x2+w3x3+b
[w1w2w3]∗⎣⎡x1x2x3⎦⎤+b=w1x1+w2x2+w3x3+b
logistic 回归
对于二分分类问题,我们最终想要的结果是0和1,但实际情况很难得到这样的结果。
所以我们就引入了激活函数,在二分分类问题中我们一般使用
σ
\sigma
σ函数,这个函数公式为:
f
(
x
)
=
1
1
+
e
−
x
f(x)=\frac{1}{1+e^{-x}}
f(x)=1+e−x1。这个函数的图像为
其结果都在0~1之间,我们可以通过四舍五入,将所有结果置为整数。
我们的公式就变为:
y
^
=
σ
(
w
T
x
+
b
)
\hat{y}=\sigma(w^Tx+b)
y^=σ(wTx+b),这里的
y
^
\hat{y}
y^就是我们要求的预测值。
接着就引出了我们的代价函数(成本函数),他的公式为:
单个样本:
L
(
y
^
,
y
)
=
−
(
y
log
y
^
+
(
1
−
y
)
log
(
1
−
y
^
)
)
L(\hat{y},y)=-(y\log{\hat{y}}+(1-y)\log({1-\hat{y})})
L(y^,y)=−(ylogy^+(1−y)log(1−y^))
m个样本
J
(
w
,
b
)
=
1
m
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
=
−
1
m
∑
i
=
1
m
(
y
(
i
)
log
y
^
(
i
)
+
(
1
−
y
(
i
)
)
log
(
1
−
y
^
(
i
)
)
)
J(w,b)=\frac{1}{m}\sum_{i=1}^mL(\hat{y}^{(i)},y^{(i)})=-\frac{1}{m}\sum_{i=1}^{m}(y^{(i)}\log\hat{y}^{(i)}+(1-y^{(i)})\log(1-\hat{y}^{(i)}))
J(w,b)=m1∑i=1mL(y^(i),y(i))=−m1∑i=1m(y(i)logy^(i)+(1−y(i))log(1−y^(i)))
推导
开始之前希望大家了解一些极大似然估计:https://blog.csdn.net/u014182497/article/details/82252456
之前我们求的
y
^
\hat{y}
y^的范围处于0~1,这样我们就可以将他的值看做
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x)的概率了,于是
p
(
y
=
1
∣
x
)
=
y
^
,
则
p
(
y
=
0
∣
x
)
=
1
−
y
^
p(y=1|x)=\hat{y},则p(y=0|x)=1-\hat{y}
p(y=1∣x)=y^,则p(y=0∣x)=1−y^。
f
(
y
;
p
)
=
{
p
y
=
1
1
−
p
y
=
0
f(y;p)= \left\{\begin{matrix} p&y=1 \\ 1-p&y=0 \end{matrix}\right.
f(y;p)={p1−py=1y=0
我们可以将这个式子整合到一起,变成
f
(
y
;
p
)
=
p
y
(
1
−
p
)
(
1
−
y
)
f(y;p)=p^y(1-p)^{(1-y)}
f(y;p)=py(1−p)(1−y),因为
y
∈
(
0
,
1
)
y\in(0,1)
y∈(0,1),
当y=1时,
f
(
y
;
p
)
=
p
1
(
1
−
p
)
(
1
−
1
)
=
p
f(y;p)=p^1(1-p)^{(1-1)}=p
f(y;p)=p1(1−p)(1−1)=p,
当y=0时,
f
(
y
;
p
)
=
p
0
(
1
−
p
)
1
−
0
=
1
−
p
f(y;p)=p^0(1-p)^{1-0}=1-p
f(y;p)=p0(1−p)1−0=1−p,满足上面的式子。
L
=
p
y
(
1
−
p
)
(
1
−
y
)
=
y
^
y
(
1
−
y
^
)
(
1
−
y
)
L=p^y(1-p)^{(1-y)}=\hat{y}^y(1-\hat{y})^{(1-y)}
L=py(1−p)(1−y)=y^y(1−y^)(1−y)然后两边同时取log,得到
l
o
g
L
=
y
l
o
g
y
^
+
(
1
−
y
)
l
o
g
(
1
−
y
^
)
logL=ylog\hat{y}+(1-y)log(1-\hat{y})
logL=ylogy^+(1−y)log(1−y^),最后我们的成本函数又取
L
(
y
^
,
y
)
=
−
l
o
g
L
L(\hat{y},y)=-logL
L(y^,y)=−logL,取这个的原因:https://www.jianshu.com/p/1bf35d61995f
梯度下降
注:接下来将用
d
a
da
da表示
d
L
(
a
,
y
)
d
a
\frac{dL(a,y)}{da}
dadL(a,y),
d
z
dz
dz表示
d
L
(
a
,
y
)
d
z
\frac{dL(a,y)}{dz}
dzdL(a,y),
d
w
dw
dw表示
d
L
(
a
,
y
)
d
w
\frac{dL(a,y)}{dw}
dwdL(a,y)
首先列出下列公式:
z
=
w
T
x
+
b
z=w^Tx+b
z=wTx+b
y
^
=
a
=
σ
(
z
)
=
1
1
+
e
−
(
w
T
+
b
)
\hat{y}=a=\sigma(z)=\frac{1}{1+e^{-(w^T+b)}}
y^=a=σ(z)=1+e−(wT+b)1
L
(
a
,
y
)
=
−
(
y
l
o
g
a
+
(
1
−
y
)
l
o
g
(
1
−
a
)
)
L(a,y)=-(yloga+(1-y)log(1-a))
L(a,y)=−(yloga+(1−y)log(1−a))
1.计算
d
a
da
da
d
a
=
d
L
(
a
,
y
)
d
a
=
−
y
a
+
1
−
y
1
−
a
da=\frac{dL(a,y)}{da}=-\frac{y}{a}+\frac{1-y}{1-a}
da=dadL(a,y)=−ay+1−a1−y
2.计算
d
z
dz
dz
这时我们需要用到链式法则
d
z
=
d
L
(
a
,
y
)
d
z
=
d
L
(
a
,
y
)
d
a
d
a
d
z
=
(
−
y
a
+
1
−
y
1
−
a
)
d
a
d
z
dz=\frac{dL(a,y)}{dz}=\frac{dL(a,y)}{da}\frac{da}{dz}=(-\frac{y}{a}+\frac{1-y}{1-a})\frac{da}{dz}
dz=dzdL(a,y)=dadL(a,y)dzda=(−ay+1−a1−y)dzda
此时需要求
d
a
d
z
\frac{da}{dz}
dzda,我们可以设
1
+
e
(
w
T
+
b
)
=
x
1+e^{(w^T+b)}=x
1+e(wT+b)=x,则变成对
1
x
\frac{1}{x}
x1求导,对
1
x
\frac{1}{x}
x1求导等于
−
(
1
x
2
x
′
)
=
−
(
1
(
1
+
e
−
z
)
2
)
(
−
e
−
z
)
-(\frac{1}{x^2}x')=-(\frac{1}{(1+e^{-z})^2})(-e^{-z})
−(x21x′)=−((1+e−z)21)(−e−z)
= 1 + e − z − 1 ( 1 + e − z ) 2 =\frac{1+e^{-z}-1}{(1+e^{-z})^2} =(1+e−z)21+e−z−1
= 1 1 + e − z − ( 1 1 + e − z ) 2 =\frac{1}{1+e^{-z}}-(\frac{1}{1+e^{-z}})^2 =1+e−z1−(1+e−z1)2
= 1 1 + e − z ( 1 − 1 1 + e − z ) =\frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}}) =1+e−z1(1−1+e−z1)
=
a
(
1
−
a
)
=a(1-a)
=a(1−a)
所以
d
z
=
a
(
1
−
a
)
(
−
y
a
+
1
−
y
1
−
a
)
=
a
−
y
dz=a(1-a)(-\frac{y}{a}+\frac{1-y}{1-a})=a-y
dz=a(1−a)(−ay+1−a1−y)=a−y
3.计算
d
w
dw
dw
同样利用链式法则
d
w
=
d
L
(
a
,
y
)
d
w
=
(
d
L
(
a
,
y
)
d
a
d
a
d
z
)
d
z
d
w
dw=\frac{dL(a,y)}{dw}=(\frac{dL(a,y)}{da}\frac{da}{dz})\frac{dz}{dw}
dw=dwdL(a,y)=(dadL(a,y)dzda)dwdz
d
z
d
w
=
x
\frac{dz}{dw}=x
dwdz=x
所以
d
w
=
x
d
z
dw=xdz
dw=xdz,这里的
d
z
=
d
L
(
a
,
y
)
d
z
dz=\frac{dL(a,y)}{dz}
dz=dzdL(a,y)
4.计算db
d
b
=
d
L
(
a
,
y
)
d
w
=
(
d
L
(
a
,
y
)
d
a
d
a
d
z
)
d
z
d
b
db=\frac{dL(a,y)}{dw}=(\frac{dL(a,y)}{da}\frac{da}{dz})\frac{dz}{db}
db=dwdL(a,y)=(dadL(a,y)dzda)dbdz
d
z
d
b
=
1
\frac{dz}{db}=1
dbdz=1
所以
d
b
=
d
z
db=dz
db=dz,这里的
d
z
=
d
L
(
a
,
y
)
d
z
dz=\frac{dL(a,y)}{dz}
dz=dzdL(a,y)
接着就可以进行迭代,这里的
α
\alpha
α是学习率
w
:
=
w
−
α
d
w
w:=w-\alpha dw
w:=w−αdw
b
:
=
b
−
α
d
b
b:=b-\alpha db
b:=b−αdb
刚入门,还有很多不足之处,请大家多多指出。