Logistic回归算法
源码传送门
5.1Logistic回归
在
k
k
k元分类问题中,对任意样本
x
∈
X
x\in X
x∈X,
D
x
D_x
Dx为
x
x
x的标签分布。监督式学习的任务是对给定样本
x
x
x预测
E
y
D
x
[
y
]
E_{y D_x}[y]
EyDx[y],
E
y
D
x
[
y
]
E_{y D_x}[y]
EyDx[y]的第
i
i
i个分量为对象属于第
i
i
i个类别的概率。可见分类问题的监督式学习任务是对给定的特征组
x
x
x预测对象属于每一个类别的概率。
对于概率问题和普通的回归最大的区别在于,概率值只能在
P
r
∈
[
0
,
1
]
Pr\in[0,1]
Pr∈[0,1],所以一般情况都会使用sigmoid函数作为Logistic模型。
Logistic模型取定特征组
x
∈
R
n
x\in\mathbb{R^n}
x∈Rn,称模型
h
w
(
x
)
=
s
i
g
o
m
i
d
(
<
w
,
x
>
)
=
1
1
+
e
−
<
w
,
x
>
h_w(x)=sigomid(<w,x>)=\frac{1}{1+e^{-<w,x>}}
hw(x)=sigomid(<w,x>)=1+e−<w,x>1
为一个Logistic模型。
下面是sigomid函数图像
模型的损失函数采用对数损失函数,对任意
y
=
(
y
1
,
y
2
,
.
.
.
,
y
k
)
,
z
=
(
z
1
,
z
2
,
.
.
.
,
z
k
)
∈
[
0
,
1
]
k
y=(y_1,y_2,...,y_k),z=(z_1,z_2,...,z_k)\in[0,1]^k
y=(y1,y2,...,yk),z=(z1,z2,...,zk)∈[0,1]k。(y为真实值,z为预测值,
[
0
,
1
]
k
[0,1]^k
[0,1]k表示k维每个维度的值在[0,1]之间)
l
(
y
,
z
)
=
−
∑
t
=
1
k
y
t
l
o
g
z
t
l(y,z)=-\sum_{t=1}^{k}y_tlogz_t
l(y,z)=−t=1∑kytlogzt
这里查到的解释是,均方误差损失函数会使优化问题变得非凸,最后有多的局部最优解。
对于特殊的二元分类问题可以化简表示为
l
(
y
,
h
w
(
x
)
)
=
y
l
o
g
(
1
+
e
−
<
w
,
x
>
)
+
(
1
−
y
)
l
o
g
(
1
+
e
<
w
,
x
>
)
l(y,h_w(x))=ylog(1+e^{-<w,x>})+(1-y)log(1+e^{<w,x>})
l(y,hw(x))=ylog(1+e−<w,x>)+(1−y)log(1+e<w,x>)
Logistic回归
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出:Logistic模型 h w ∗ ( x ) = 1 1 + e − < w ∗ , x > h_{w^*}(x)=\frac{1}{1+e^{-<w^*,x>}} hw∗(x)=1+e−<w∗,x>1,使得 w ∗ ∈ R n w^*\in\mathbb{R^n} w∗∈Rn为如下优化问题的最优解
m i n w ∈ R n ∑ i = 1 m 1 m [ y ( i ) l o g ( 1 + e − < w , x ( i ) > ) + ( 1 − y ( i ) ) l o g ( 1 + e < w , x ( i ) > ) ] \underset{w\in \mathbb{R^n}}{min}\sum_{i=1}^m{\frac1m} [ y^{(i)}log(1+e^{-<w,x^{(i)}>}) + (1-y^{(i)})log(1+e^{<w,x^{(i)}>}) ] w∈Rnmini=1∑mm1[y(i)log(1+e−<w,x(i)>)+(1−y(i))log(1+e<w,x(i)>)]
模型的优化目标函数称为交叉熵
如果标签分布是伯努利分布,用
Y
Y
Y表示标签的随机变量,则
Y
Y
Y有如下参数化形式
P
w
(
Y
=
y
)
=
{
h
w
(
x
)
如果
y
=
1
1
−
h
w
(
x
)
如果
y
=
0
P_w(Y=y)= \begin{cases} h_w(x) & 如果y=1 \\ 1-h_w(x) & 如果y=0 \\ \end{cases}
Pw(Y=y)={hw(x)1−hw(x)如果y=1如果y=0
上式等价于
P
w
(
Y
=
y
)
=
h
w
(
x
)
y
(
1
−
h
w
(
x
)
1
−
y
)
P_w(Y=y)=h_w(x)^y(1-h_w(x)^{1-y})
Pw(Y=y)=hw(x)y(1−hw(x)1−y)
然后最大似然函数为
L
i
k
e
(
w
∣
y
(
1
)
,
y
(
2
)
,
⋯
,
y
(
m
)
)
=
∏
i
=
1
m
p
w
(
Y
=
y
(
i
)
)
=
∏
i
=
1
m
h
w
(
x
(
i
)
)
y
(
i
)
(
1
−
h
w
(
x
(
i
)
)
(
1
−
y
(
i
)
)
)
Like(w|y^{(1)},y^{(2)}, \cdots ,y^{(m)}) =\prod_{i=1}^mp_w(Y=y^{(i)}) = \prod_{i=1}^mh_w(x^{(i)})^{y^{(i)}}(1-h_w(x^{(i)})^{(1-y^{(i)}}))
Like(w∣y(1),y(2),⋯,y(m))=i=1∏mpw(Y=y(i))=i=1∏mhw(x(i))y(i)(1−hw(x(i))(1−y(i)))
取对数即可得到
∑
i
=
1
m
1
m
[
y
(
i
)
l
o
g
(
1
+
e
−
<
w
,
x
(
i
)
>
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
+
e
<
w
,
x
(
i
)
>
)
]
\sum_{i=1}^m{\frac1m} [ y^{(i)}log(1+e^{-<w,x^{(i)}>}) + (1-y^{(i)})log(1+e^{<w,x^{(i)}>}) ]
i=1∑mm1[y(i)log(1+e−<w,x(i)>)+(1−y(i))log(1+e<w,x(i)>)]
乘以-1/m即为交叉熵。这是交叉熵的统计意义,交叉熵是信息论中的概念还有别的解释
这里对于模型中
<
w
,
x
>
<w,x>
<w,x>采用线性或者质数及其他何种形式,有一个指数分布族作为指导,但是我实在看不懂。
5.2 Logistic回归优化算法
优化求解方法和前面一样的方法求梯度然后梯度下降
∇
l
(
y
,
h
w
(
x
)
)
=
−
y
x
e
−
<
w
,
x
>
1
+
e
−
<
w
,
x
>
+
(
1
−
y
)
x
e
<
w
,
x
>
1
+
e
<
w
,
x
>
=
x
(
h
w
(
x
(
i
)
)
−
y
(
i
)
)
\nabla l(y,h_w(x))=-yx\frac{e^{-<w,x>}}{1+e^{-<w,x>}} + (1-y)x\frac{e^{<w,x>}}{1+e^{<w,x>}}=x(h_w(x^{(i)})-y^{(i)})
∇l(y,hw(x))=−yx1+e−<w,x>e−<w,x>+(1−y)x1+e<w,x>e<w,x>=x(hw(x(i))−y(i))
X
X
X为mn矩阵,Y为m1矩阵,
h
w
(
x
)
h_w(x)
hw(x)为m*1矩阵
最终
∇
F
(
w
)
=
1
m
X
T
(
h
w
(
X
)
−
y
)
\nabla F(w)=\frac1mX^T(h_w(X)-y)
∇F(w)=m1XT(hw(X)−y)
5.3 分类问题的度量
5.3.1 准确率,精确率与召回率
首先是一个用来表示用的示性函数
1
{
}
:
{
T
r
u
e
,
F
a
l
s
e
}
→
{
0
,
1
}
1\{\}:\{True,False\}\rightarrow\{0,1\}
1{}:{True,False}→{0,1}定义为
1
{
T
r
u
e
}
=
1
,
1
{
F
a
l
s
e
}
=
0
1\{True\}=1,1\{False\}=0
1{True}=1,1{False}=0
示性函数就是布尔值到0,1整数的映射。
准确率:
A
c
c
u
r
a
c
y
T
(
h
)
=
∑
i
=
1
m
1
{
h
(
x
(
i
)
)
=
y
(
i
)
}
m
Accuracy_T(h)=\frac{\sum_{i=1}^m1\{h(x^{(i)})=y^{(i)}\}}{m}
AccuracyT(h)=m∑i=1m1{h(x(i))=y(i)}
准确率的计算可以解释为,预测结果正确的概率
对于二元分类问题还有如下的两种度量方法
先说明一下几个符号的含义:
如果
y
=
1
y=1
y=1且
h
(
x
)
=
1
h(x)=1
h(x)=1,则称该预测为真正(True positive)
如果
y
=
0
y=0
y=0且
h
(
x
)
=
1
h(x)=1
h(x)=1,则称该预测为假正(False positive)
如果
y
=
0
y=0
y=0且
h
(
x
)
=
0
h(x)=0
h(x)=0,则称该预测为真负(True negative)
如果
y
=
1
y=1
y=1且
h
(
x
)
=
0
h(x)=0
h(x)=0,则称该预测为假负(False negative)
精确率:
P
r
e
c
i
s
i
o
n
T
(
h
)
=
T
P
T
P
+
F
P
Precision_T(h)=\frac{TP}{TP+FP}
PrecisionT(h)=TP+FPTP
预测出的正样本中预测正确的概率
召回率:
R
e
c
a
l
l
T
(
h
)
=
T
P
T
P
+
F
N
Recall_T(h)=\frac{TP}{TP+FN}
RecallT(h)=TP+FNTP
正样本中被预测出的概率
在使用阈值分类时,可以通过设置阈值可以改变精确率和召回率,一般来说,精确率和召回率的关系是,精确率越高,召回率越低。
调和平均值:
F
1
(
h
)
=
1
1
P
r
e
c
i
s
i
o
n
(
h
)
+
1
R
e
c
a
l
l
(
h
)
F_1(h)=\frac{1}{\frac{1}{Precision(h)} + \frac{1}{Recall(h)}}
F1(h)=Precision(h)1+Recall(h)11
F1作为衡量指标时,平衡了精确率和召回率的影响。
但是考虑两种情况,例如对飞机零件的合格性检验就需要用精确率,因为我们希望预测出的好的零件都是符合标准的。例如在疫情核酸检测的检验标准是召回率,我们希望所有的病例都被找到。两种情况分别是两个极端,找到的都是好的,和好的都被找到。
5.3.2 ROC曲线及AUC度量
ROC曲线的纵坐标和横坐标分别是:
真正率
/
T
P
R
=
T
P
T
P
+
F
N
,
假正率
/
F
P
R
=
F
P
F
P
+
T
N
真正率/TPR=\frac{TP}{TP+FN},假正率/FPR=\frac{FP}{FP+TN}
真正率/TPR=TP+FNTP,假正率/FPR=FP+TNFP
通过选取不同的阈值就会得到下图ROC曲线
AUC度量:ROC曲线下方的面积
面积越接近于1说明效果越好。
曲线左上方的拐点处所对应的阈值一般来说就是所需要的。
对左上方拐点处可以解释为,负样本在预测为正样本概率很小的情况下,正样本被预测正确的概率很高。
5.4 Softmax回归(二元分类到k元分类推广)
5.4.1 Softmax回归概念
Logistic回归主要是解决的二元分类问题,最后的结果可以描述为为是类型A的概率和不是类型A的概率。但是没法进行多分类。
而实际上只需要多拟合几个模型就能进行多元分类,比如有ABC三类数据进行分类,至于要用Logistic模型拟合,A非A、B非B、C非C就能实现多分类。Softmax回归事实上也是用了这种方法。
Softmox模型:
W
W
Wn*k矩阵
h
w
(
x
)
=
(
e
<
w
1
,
x
>
∑
t
=
1
k
e
<
w
t
,
x
>
,
e
<
w
2
,
x
>
∑
t
=
1
k
e
<
w
t
,
x
>
,
.
.
.
,
e
<
w
k
,
x
>
∑
t
=
1
k
e
<
w
t
,
x
>
)
h_w(x)=(\frac{e^{<w_1,x>}}{\sum_{t=1}^ke^{<w_t,x>}},\frac{e^{<w_2,x>}}{\sum_{t=1}^ke^{<w_t,x>}},...,\frac{e^{<w_k,x>}}{\sum_{t=1}^ke^{<w_t,x>}})
hw(x)=(∑t=1ke<wt,x>e<w1,x>,∑t=1ke<wt,x>e<w2,x>,...,∑t=1ke<wt,x>e<wk,x>)
Softmax回归
输入: m m m条训练数据 S = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , . . . , ( x ( m ) , y ( m ) ) } S=\{(x^{(1) },y^{(1)}),(x^{(2) },y^{(2)}),...,(x^{(m) },y^{(m)}) \} S={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}
输出:Softmax模型 h w ∗ h_{w^*} hw∗,使得 W ∗ = ( w 1 ∗ , w 2 ∗ , . . . , w k ∗ ) W^*=(w_1^*,w_2^*,...,w_k^*) W∗=(w1∗,w2∗,...,wk∗)为如下优化问题的最优解
m i n w ∈ R n ∗ k F ( W ) = − 1 m ∑ i = 1 m < y ( i ) , l o g h w ( x ( i ) ) > \underset{w\in \mathbb{R^{n*k}}}{min}F(W)=-\frac1m\sum_{i=1}^m<y^{(i)},logh_w(x^{(i)})> w∈Rn∗kminF(W)=−m1i=1∑m<y(i),loghw(x(i))>
5.4.2 Softmax回归优化算法
Softmax回归的梯度计算用到对矩阵理解要求较高,并且比较复杂。
这里直接给结果
∇
F
(
w
)
=
1
m
X
T
(
h
w
(
X
)
−
y
)
\nabla F(w)=\frac1mX^T(h_w(X)-y)
∇F(w)=m1XT(hw(X)−y)
没错和Logistic回归完全一样,只是数据矩阵在维数上不一样