逻辑回归(Logistic Regression)
逻辑回归是一个用于二分类(binary classification)的算法。
- 训练数据:
{
(
x
(
1
)
,
y
(
1
)
)
,
(
x
(
2
)
,
y
(
2
)
)
,
…
(
x
(
m
)
,
y
(
m
)
)
,
}
\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\dots(x^{(m)},y^{(m)}),\}
{(x(1),y(1)),(x(2),y(2)),…(x(m),y(m)),}
即 X ∈ R n x × m X \in \mathbb{R}^{n_x \times m} X∈Rnx×m, Y ∈ R 1 × m Y \in \mathbb{R}^{1 \times m} Y∈R1×m
X.shape
- 逻辑回归参数
- 特征向量:
x
∈
R
n
x
×
1
x \in \mathbb{R}^{n_x \times 1}
x∈Rnx×1 ,表示样本
x
x
x包含
n
x
n_x
nx个特征;
输出标签: y ∈ 0 , 1 y \in 0,1 y∈0,1 ,目标值属于0、1分类; - 权重:
w
∈
R
n
x
×
1
w \in \mathbb{R}^{n_x \times 1}
w∈Rnx×1
偏置: b ∈ R b \in \mathbb{R} b∈R - 预测值:
y
^
=
P
(
y
=
1
∣
x
)
∈
[
0
,
1
]
\hat{y} = P(y=1|x) \in [0,1]
y^=P(y=1∣x)∈[0,1]
y ^ = σ ( w T x + b ) \hat{y} = \sigma (w^T x + b) y^=σ(wTx+b)
其中Sigmoid 函数 σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1
⚠️Sigmoid函数的一阶导数:
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) \sigma'(z)=\sigma(z)(1-\sigma(z)) σ′(z)=σ(z)(1−σ(z))
这里可以解释梯度消失的问题,当 z = 0 z=0 z=0时,导数最大,但是导数最大为 σ ′ ( 0 ) = σ ( 0 ) ( 1 − σ ( 0 ) ) = 0.25 \sigma'(0)=\sigma(0)(1-\sigma(0))=0.25 σ′(0)=σ(0)(1−σ(0))=0.25 ,这里导数仅为原函数值的0.25倍。 参数梯度下降公式的不断更新, σ ′ ( z ) \sigma'(z) σ′(z)会变得越来越小,每次迭代参数更新的步伐越来越小,最终接近于0,产生梯度消失的现象。
- 特征向量:
x
∈
R
n
x
×
1
x \in \mathbb{R}^{n_x \times 1}
x∈Rnx×1 ,表示样本
x
x
x包含
n
x
n_x
nx个特征;
- 代价函数(Loss Function)
- 损失函数(Cost Function)
用于衡量预测结果与真实值之间的误差。
⚠️读懂深度学习中的代价函数、交叉熵- 通常损失函数定义方式为平方差损失:
L ( y ^ , y ) = 1 2 ( y ^ − y ) 2 L(\hat{y} ,y)=\frac{1}{2}(\hat{y} −y)^2 L(y^,y)=21(y^−y)2
但 Logistic 回归中我们并不倾向于使用这样的损失函数,因为之后讨论的优化问题会变成非凸的,最后会得到很多个局部最优解,梯度下降法可能找不到全局最优值。 - 逻辑回归的损失函数(交叉熵):
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^)
when y = 1 y=1 y=1, min ( L ( y ^ , y ) ) = − log ( y ^ ) ⇒ max ( log ( y ^ ) ) = max ( y ^ ) ⇒ 1 \min{(L(\hat{y} ,y))}=-\log(\hat{y}) \Rightarrow \max{(\log(\hat{y}))}=\max{(\hat{y})} \Rightarrow 1 min(L(y^,y))=−log(y^)⇒max(log(y^))=max(y^)⇒1
如果 y ^ \hat{y} y^越接近1,表示预测效果越好;如果 y ^ \hat{y} y^越接近0,表示预测效果越差;
when y = 0 y=0 y=0, min ( L ( y ^ , y ) ) = log ( 1 − y ^ ) ⇒ max ( log ( 1 − y ^ ) ) = max ( 1 − y ^ ) ⇒ min ( y ^ ) ⇒ 0 \min{(L(\hat{y} ,y))}=\log(1-\hat{y}) \Rightarrow \max{(\log(1-\hat{y}))}=\max{(1-\hat{y})} \Rightarrow \min{(\hat{y})} \Rightarrow 0 min(L(y^,y))=log(1−y^)⇒max(log(1−y^))=max(1−y^)⇒min(y^)⇒0
如果 y ^ \hat{y} y^越接近0,表示预测效果越好;如果 y ^ \hat{y} y^越接近1,表示预测效果越差;
- 通常损失函数定义方式为平方差损失:
- 代价函数(Loss Function)
损失函数是在单个训练样本中定义的,它衡量了在单个训练样本上的表现。
而代价函数衡量的是在全体训练样本上的表现,即衡量参数 w 和 b 的效果。- 交叉熵代价函数:
J ( w , b ) = 1 m ∑ i m L ( y ^ ( i ) , y ( i ) ) = 1 m ∑ i m ( − ( y ( i ) log y ^ ( i ) ) − ( 1 − y ( i ) ) log ( 1 − y ^ ( i ) ) ) J(w,b)=\frac{1}{m} \sum^{m}_i L(\hat{y}^{(i)},y^{(i)}) = \frac{1}{m} \sum^{m}_i (−(y^{(i)}\log\hat{y}^{(i)})−(1−y^{(i)})\log(1−\hat{y}^{(i)})) J(w,b)=m1∑imL(y^(i),y(i))=m1∑im(−(y(i)logy^(i))−(1−y(i))log(1−y^(i))) - 目标: arg min w , b J ( w , b ) \arg \min_{w,b}J(w,b) argminw,bJ(w,b)
- 交叉熵代价函数:
- 损失函数(Cost Function)