CH7 逻辑回归
属于机器学习中的监督学习,主要用来解决二分类问题。
通过给定的n组数据(训练集)来训练模型,并在训练结束后对给定的一组或多组数据(测试集)进行分类。其中每一组数据都是由p 个指标构成。
逻辑回归是用来分类的。例如,我们给出一个人的 [身高,体重] 这两个指标,然后判断这个人是属于”胖“还是”瘦“这一类。对于这个问题,我们可以先测量n个人的身高、体重以及对应的指标”胖“,"瘦”,把胖和瘦分别用0和1来表示,把这n组数据输入模型进行训练。训练之后再把待分类的一个人的身高、体重输入模型中,看这个人是属于“胖”还是“瘦”。
从本质上来说,逻辑回归训练后的模型是平面的一条直线(p=2),或是平面(p=3),超平面(p>3)。并且这条线或平面把空间中的散点分成两半,属于同一类的数据大多数分布在曲线或平面的同一侧。
7.1 算法原理
处理二分类问题,其中一类标签为0,另一类为1。我们需要一个函数,对于输入的每一组数据 x ( i ) x^{(i)} x(i),都能映射成0~1之间的数,并且如果函数值大于0.5,就判定属于1,否则属于0。
7.1.1 预测函数推导过程
函数中需要待定参数,通过利用样本训练,使得这个参数能够对训练集中的数据有很准确的预测。这个函数就是sigmoid函数
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1+e^{-x}}
σ(x)=1+e−x1
在这里我们设函数为
h
(
x
i
)
=
1
1
+
e
−
(
w
T
x
i
+
b
)
h(x^i) = \frac{1}{1+e^{-(w^Tx^i+b)}}
h(xi)=1+e−(wTxi+b)1
这里
x
i
x^i
xi是测试集第i个数据,是p维列向量
(
x
1
i
x
2
i
…
x
p
i
)
T
(x_1^i\quad x^i_2\quad \dots \quad x^i_p)^T
(x1ix2i…xpi)T
w
w
w是p维列向量,
(
w
1
w
2
…
w
p
)
T
(w_1\quad w_2\quad \dots \quad w_p)^T
(w1w2…wp)T,为待求参数
b是一个数,也是待求参数
对于
w
T
x
+
b
w^Tx+b
wTx+b,其结果是
w
1
x
1
+
w
2
x
2
+
⋯
+
w
p
x
p
+
b
w_1x_1+w_2x_2+\dots+w_px_p+b
w1x1+w2x2+⋯+wpxp+b
所以把
w
w
w写成
(
w
1
w
2
…
w
p
b
)
T
(w_1\quad w_2\quad \dots \quad w_p\quad b)^T
(w1w2…wpb)T,
x
i
x^i
xi写成
(
x
1
i
x
2
i
…
x
p
i
1
)
T
(x_1^i\quad x^i_2\quad \dots \quad x^i_p\quad 1)^T
(x1ix2i…xpi1)T,
w
T
x
+
b
w^Tx+b
wTx+b就可以写成
w
T
+
x
w^T+x
wT+x,则最终预测函数为:
h
(
x
i
)
=
1
1
+
e
−
w
T
x
i
h(x^i) = \frac{1}{1+e^{-w^Tx^i}}
h(xi)=1+e−wTxi1
7.2 求解参数(证明题)
7.2.1 极大似然估计
思想是,一个事件发生了,那么发生这个事件的概率就是最大的。
对于样本i,其类别为
y
i
∈
(
0
,
1
)
y_i\in(0,1)
yi∈(0,1)。对于样本i,可以把
h
(
x
i
)
h(x_i)
h(xi)看成一种概率。
y
i
y_i
yi对应是1是,概率是
h
(
x
i
)
h(x_i)
h(xi),即
x
i
x_i
xi属于1的可能性;
y
i
y_i
yi对应是0时,概率是
1
−
h
(
x
i
)
1-h(x_i)
1−h(xi),即
x
i
x_i
xi属于0的可能性。构造极大似然函数:
∏
i
=
1
k
h
(
x
i
)
∏
i
=
k
+
1
n
(
1
−
h
(
x
i
)
)
\prod_{i=1}^{k}h(x_i)\prod^n_{i=k+1}(1-h(x_i))
i=1∏kh(xi)i=k+1∏n(1−h(xi))
其中i从0到k是属于类别1的个数k,从k+1到n是属于类别0的个数n-k。由于y是标签0或1,所以上式也可以写成:
∏
i
=
1
n
h
(
x
i
)
y
i
(
1
−
h
(
x
i
)
)
1
−
y
i
\prod^n_{i=1}h(x_i)^{y_i}(1-h(x_i))^{1-y_i}
i=1∏nh(xi)yi(1−h(xi))1−yi
为了方便我们对式子取对数。因为是求式子的最大值,所以转换成式子乘负1然后求最小值。可得:
∑
i
=
1
n
−
y
i
l
n
(
h
(
x
i
)
)
−
(
1
−
y
i
)
l
n
(
1
−
h
(
x
i
)
)
\sum^n_{i=1}-y_i ln(h(x_i))-(1-y_i)ln(1-h(x_i))
i=1∑n−yiln(h(xi))−(1−yi)ln(1−h(xi))
7.2.2 损失函数
同时对于n个数据,累加后值会很大,之后如果用梯度下降容易导致梯度爆炸,所以除以样本总数n,得到的为损失函数:
L
(
w
)
=
1
n
(
∑
i
=
1
n
−
y
i
l
n
(
h
(
x
i
)
)
−
(
1
−
y
i
)
l
n
(
1
−
h
(
x
i
)
)
)
L(w) = \frac{1}{n}\Big(\sum^n_{i=1}-y_i ln(h(x_i))-(1-y_i)ln(1-h(x_i))\Big)
L(w)=n1(i=1∑n−yiln(h(xi))−(1−yi)ln(1−h(xi)))
损失函数是参数
w
w
w的函数
总的损失函数可以用来评价模型的好坏,损失函数越小越说明模型和参数越符合训练样本。
7.2.3 梯度下降法求最小值
即求损失函数的导数
L
(
w
)
=
1
n
(
∑
i
=
1
n
−
y
i
l
n
(
h
(
x
i
)
)
−
(
1
−
y
i
)
l
n
(
1
−
h
(
x
i
)
)
)
L(w) = \frac{1}{n}(\sum^n_{i=1}-y_i ln(h(x_i))-(1-y_i)ln(1-h(x_i)))
L(w)=n1(i=1∑n−yiln(h(xi))−(1−yi)ln(1−h(xi)))
∂
L
(
w
)
∂
w
=
1
n
(
∑
i
=
1
n
(
−
y
i
1
h
(
x
i
)
⋅
∂
h
(
x
i
)
∂
w
)
+
(
1
−
y
i
)
1
1
−
h
(
x
i
)
⋅
∂
h
(
x
i
)
∂
w
)
\frac{\partial L(w)}{\partial w} = \frac{1}{n}(\sum^n_{i=1}(-y_i\frac{1}{h(x_i)}\cdot\frac{\partial h(x_i)}{\partial w})+(1-y_i)\frac{1}{1-h(x_i)}\cdot\frac{\partial h(x_i)}{\partial w})
∂w∂L(w)=n1(i=1∑n(−yih(xi)1⋅∂w∂h(xi))+(1−yi)1−h(xi)1⋅∂w∂h(xi))
记:
σ
(
x
)
=
1
1
+
e
−
x
记:\sigma(x) = \frac{1}{1+e^{-x}}
记:σ(x)=1+e−x1
σ
(
w
T
x
)
=
1
1
+
e
−
w
T
x
=
h
(
x
)
\sigma(w^Tx) =\frac{1}{1+e^{-w^Tx}} = h(x)
σ(wTx)=1+e−wTx1=h(x)
σ
′
(
x
)
=
σ
(
x
)
(
1
−
σ
(
x
)
)
\sigma'(x) = \sigma(x)(1-\sigma(x))
σ′(x)=σ(x)(1−σ(x))
∂ h ( x i ) ∂ w = ∂ 1 1 + e − w x i ∂ w = ∂ ( σ ( w T x i ) ) ∂ w T x i = σ ( w T x ) ( 1 − σ ( w T x ) ) ⋅ ∂ w T x i ∂ w = σ ( w T x ) ( 1 − σ ( w T x ) ) x i \begin{split} \frac{\partial h(x_i)}{\partial w} &= \frac{\partial{\frac{1}{1+e^{-wx_i}}}}{\partial w} = \frac{\partial(\sigma (w^Tx_i))}{\partial w^Tx_i}\\ &=\sigma(w^Tx)(1-\sigma(w^Tx))\cdot \frac{\partial w^Tx_i}{\partial w}\\ &=\sigma(w^Tx)(1-\sigma(w^Tx))x_i \end{split} ∂w∂h(xi)=∂w∂1+e−wxi1=∂wTxi∂(σ(wTxi))=σ(wTx)(1−σ(wTx))⋅∂w∂wTxi=σ(wTx)(1−σ(wTx))xi
d ( t r ( w T x ) ) = t r ( d w T x ) = t r ( x ⋅ d w T ) ⇒ ∂ w T x ∂ w = x 对上一步求导的解释 \begin{aligned} d(tr(w^Tx))&=tr(dw^Tx)\\ &=tr(x\cdot dw^T)\\ &\Rightarrow \frac{\partial w^Tx}{\partial w} = x \quad\text{对上一步求导的解释} \end{aligned} d(tr(wTx))=tr(dwTx)=tr(x⋅dwT)⇒∂w∂wTx=x对上一步求导的解释
∂ L ( w ) ∂ w = 1 n ( ∑ i = 1 n − y i 1 σ ( w T x ) σ ( w T x ) ( 1 − σ ( w T x ) x i ) + ( 1 − y i ) 1 1 − σ ( w T x ) ⋅ σ ( w T x ) ( 1 − σ ( w T x ) ) x i ) = 1 n ( ∑ i = 1 n − y i ( 1 − σ ( w T x i ) ) x i + y ( 1 − y i ) σ ( w T x i ) x i ) = 1 n ( ∑ i = 1 n − y i x i + y i σ ( w T x i ) x i − y i σ ( w T x i ) x i + σ ( w T x i ) x i ) = 1 n ( ∑ i = 1 n − y i x i + σ ( w T x i ) x i ) = 1 n ( ∑ i = 1 n ( σ ( w T x i ) − y i ) x i ) \begin{aligned} \frac{\partial L(w)}{\partial w} &= \frac{1}{n}\bigg(\sum^n_{i=1}-y_i\frac{1}{\sigma(w^Tx)}\sigma(w^Tx)(1-\sigma(w^Tx)x_i) + (1-y_i)\frac{1}{1-\sigma(w^Tx)}\cdot\sigma(w^Tx)(1-\sigma(w^Tx))x_i\bigg)\\ &=\frac{1}{n}\bigg(\sum^n_{i=1}-y_i(1-\sigma(w^Tx_i))x_i+y(1-y_i)\sigma(w^Tx_i)x_i\bigg)\\ &=\frac{1}{n}\bigg(\sum^n_{i=1}-y_ix_i+y_i\sigma(w^Tx_i)x_i-y_i\sigma(w^Tx_i)x_i + \sigma(w^Tx_i)x_i\bigg)\\ &=\frac{1}{n}\bigg(\sum^n_{i=1}-y_ix_i+\sigma(w^Tx_i)x_i\bigg)\\ &=\frac{1}{n}\bigg(\sum^n_{i=1}(\sigma(w^Tx_i)-y_i)x_i\bigg) \end{aligned} ∂w∂L(w)=n1(i=1∑n−yiσ(wTx)1σ(wTx)(1−σ(wTx)xi)+(1−yi)1−σ(wTx)1⋅σ(wTx)(1−σ(wTx))xi)=n1(i=1∑n−yi(1−σ(wTxi))xi+y(1−yi)σ(wTxi)xi)=n1(i=1∑n−yixi+yiσ(wTxi)xi−yiσ(wTxi)xi+σ(wTxi)xi)=n1(i=1∑n−yixi+σ(wTxi)xi)=n1(i=1∑n(σ(wTxi)−yi)xi)