Logistic Regression
本章我们来看另一个简单且强大的解决线性回归二元分类问题的算法, 即逻辑回归。不要望文生义, 逻辑回归虽然带回归这个字眼, 但它其实处理的是分类任务,即逻辑回归是一种分类模型, 而非回归模型,只不过它本质上使用的是回归, 并且在预测类别的时候采用了回归的思想, 所以称为Logistic Regression。
Logistic Regression:
- 优点:模型简单、输出解释性好且模型输出的结果可解释为概率
- 缺点:仅适用于二分类问题, 对于复杂的非线性问题效果可能不佳。虽然可以用过OvO/OVR的方式拓展到多分类任务, 但它其实处理的仍然是二分类问题。
- 适用场景:适用于二分类或多分类任务, 需概率分布的场景, 如信用评分、疾病风险评估。
几率(odds)
若将p视为样本x作为正例的可能性, 则1-y是其反例的可能性, 两者的比值即为几率:
o d d s = p 1 − p odds = \frac{p}{1-p} odds=1−pp
几率反映了x作为正例的相对可能性。
对数几率函数(log odds function)
我们的假设函数(这里针对单个样本而言) h ( x ) = θ T x h(x)=\theta^Tx h(x)=θTx的值域是R, 同时在这里概率和几率的值域分别为(0, 1)和(0, +inf)。很显然我们不能直接将假设函数产生的值当作概率, 所以我们需将概率或几率进行一个函数映射, 且这个新的函数的值域为R, 定义域为几率的值域。 很显然, 我们使用几率更容易一些, 因为几率的值域刚好与对数函数的定义域相同, 所以我们可以对几率取对数, 即对数几率(log odds, 亦称logit)。且对数几率的值域为R, 于是我们就得到了与假设函数相同值域的函数, 此时我们就可以将假设函数与对数几率进行对应
l n ( p 1 − p ) = θ T x = z ln(\frac{p}{1-p})=\theta^Tx=z ln(1−pp)=θTx=z
于是我们就可以求解出概率P
p = 1 1 + e − z p=\frac{1}{1+e^{-z}} p=1+e−z1
而这就是对数几率函数也被称为sigmoid函数, 该函数将线性模型的输出z映射为(0, 1)之间的概率值,然后参考threshold得到最终的分类结果。
由于 e − z e^{-z} e−z 是指数函数,其值总是正的,所以 e − z e^{-z} e−z 加上 1 后也总是大于 1 。因此, sigmoid 函数的分母总是大于 1 ,这意味着整个分数的值永远在 0 和 1 之间,但不会达到这两个端点。换句话说,无论 z z z 的值是多少, e − z e^{-z} e−z 都不可能为负数或零,因此 p p p 不可能为 0 或1。
这里我们只是将线性回归的结果输入到sigmoid函数中来计算出样本为正例的概率, 所以我们并不将线性回归函数作为目标函数, 而是将sigmoid函数作为我们的目标函数。
Logistic Regression的本质
所以LR模型就是通过线性回归对目标的对数几率进行拟合。这就是LR的本质。
sigmoid函数
p = h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x g ( z ) = 1 1 + e − z g ′ ( z ) = ( 1 1 + e − z ) ′ = e − z ( 1 + e − z ) 2 = 1 1 + e − z ⋅ e − z 1 + e − z = 1 1 + e − z ⋅ ( 1 − 1 1 + e − z ) = g ( z ) ⋅ ( 1 − g ( z ) ) \begin{gathered} p=h_\theta\left(x\right)=g\left(\theta^Tx\right)=\frac1{1+e^{-\theta^Tx}}\quad \quad g(z)=\frac{1}{1+e^{-z}} &\\ g^{\prime}(z)=\left(\frac{1}{1+e^{-z}}\right)^{\prime}=\frac{e^{-z}}{\left(1+e^{-z}\right)^2}=\frac{1}{1+e^{-z}} \cdot \frac{e^{-z}}{1+e^{-z}}=\frac{1}{1+e^{-z}} \cdot\left(1-\frac{1}{1+e^{-z}}\right)=g(z) \cdot(1-g(z))& \end{gathered} p=hθ(x)=g(θTx)=1+e−θTx1g(z)=1+e−z1g′(z)=(1+e−z1)′=(1+e−z)2e−z=1+e−z1⋅1+e−ze−z=1+e−z1⋅(1−1+e−z1)=g(z)⋅(1−g(z))
y = { 1 0 y ^ = { 1 , p > threshold 0 , p ≤ threshold \begin{aligned} & y=\left\{\begin{array}{l} 1 \\ 0 \end{array}\right. \\ & \widehat{\mathrm{y}}=\left\{\begin{array}{l} 1, p>\text { threshold } \\ 0, p \leq \text { threshold } \end{array}\right. \end{aligned} y={
10y
={
1,p> threshold 0,p≤ threshold
当某个样本的预测概率 p p p正好等于我们所设置的阈值 t h r e s h o l d threshold threshold时, 我们将该样本预测为正例或者负例都可以。
logistic 回归及似然函数
- 假设:
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) ( 1 − y ) \begin{aligned} & P(y=1 \mid x ; \theta)=h_\theta(x) \\ & P(y=0 \mid x ; \theta)=1-h_\theta(x) \\ & P(y \mid x ; \theta)=\left(h_\theta(x)\right)^y\left(1-h_\theta(x)\right)^{(1-y)} \end{aligned} P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)P(y∣x;θ)=(hθ(x))y(1−hθ(x))(1−y) - 对于所有训练样本,我们希望最大化整个数据集的联合概率分布,即似然函数: L ( θ ) = p ( y ⃗ ∣ X ; θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) L(\theta)=p(\vec{y} \mid X ; \theta)=\prod_{i=1}^m p\left(y^{(i)} \mid x^{(i)} ; \theta\right) L(θ)=p(y∣X;θ)=∏i=1mp(y(i)∣x(i);θ)
= ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) ( 1 − y ( i ) ) =\prod_{i=1}^m\left(h_\theta\left(x^{(i)}\right)\right)^{y^{(i)}}\left(1-h_\theta\left(x^{(i)}\right)\right)^{\left(1-y^{(i)}\right)} =i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))(1−y(i)) - 为了便于计算,我们通常对似然函数取对数,得到对数似然函数 ℓ ( θ ) \ell(\theta) ℓ(θ)
ℓ ( θ ) = ln L ( θ ) = ∑ i = 1 m ( y ( i ) ln h θ ( x ( i ) ) + ( 1 − y ( i ) ) ln ( 1 − h θ ( x ( i ) ) ) ) \ell(\theta)=\ln L(\theta)=\sum_{i=1}^m\left(y^{(i)} \ln h_\theta\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \ln \left(1-h_\theta\left(x^{(i)}\right)\right)\right) ℓ(θ)=lnL(θ)=i=1∑m(y(i)lnhθ(x(i))+(1−y(i))ln(1−hθ(x(i))))
交叉熵损失函数
交叉熵损失函数(Cross-Entropy Loss Function),在机器学习中也常称为对数损失(Log Loss),是一种评估模型性能的指标,特别是在分类任务中。它衡量的是实际输出(标签)和模型预测之间的差异。
定义
对于二分类问题,交叉熵损失可以定义为:
J ( θ ) = ∑ i = 1 m [ − y ( i ) ln ( h θ ( x ( i ) ) ) − ( 1 − y ( i ) ) ln ( 1 − h θ ( x ( i ) ) ) ] J(\theta)=\sum_{i=1}^m\left[-y^{(i)} \ln \left(h_\theta\left(x^{(i)}\right)\right)-\left(1-y^{(i)}\right) \ln \left(1-h_\theta\left(x^{(i)}\right)\right)\right] J(θ)=i=1∑m[−y(i)ln(hθ