钜形不锈钢水箱 发表于 2025-3-26 19:22:09

新手村:逻辑回归-理解03:逻辑回归中的最大似然函数

新手村:逻辑回归-理解03:逻辑回归中的最大似然函数

https://i-blog.csdnimg.cn/direct/72635fdded124285adf2f71904a28536.png
1. 似然函数

假设我们有一个二分类题目,其中                                    N                              N                  N 个样本的数据集为                                    {                         (                                 x                            1                                  ,                                 y                            1                                  )                         ,                         (                                 x                            2                                  ,                                 y                            2                                  )                         ,                         …                         ,                         (                                 x                            N                                  ,                                 y                            N                                  )                         }                              \{(x_1, y_1), (x_2, y_2), \ldots, (x_N, y_N)\}                  {(x1​,y1​),(x2​,y2​),…,(xN​,yN​)},每个样本                                              x                            i                                       x_i                  xi​ 对应一个标签                                              y                            i                                  ∈                         {                         0                         ,                         1                         }                              y_i \in \{0, 1\}                  yi​∈{0,1}。
对于每个样本                                    i                              i                  i,我们可以用逻辑回归模子来预测其属于种别1的概率:
                                                                y                                  ^                                          i                                    =                            P                            (                                       y                               i                                    =                            1                            ∣                                       x                               i                                    ;                            w                            ,                            b                            )                            =                            σ                            (                                       w                               T                                                 x                               i                                    +                            b                            )                                  \hat{y}_i = P(y_i = 1 | x_i; w, b) = \sigma(w^T x_i + b)                     y^​i​=P(yi​=1∣xi​;w,b)=σ(wTxi​+b)
其中                                    σ                         (                         z                         )                         =                                 1                                       1                               +                                           e                                             −                                     z                                                                        \sigma(z) = \frac{1}{1 + e^{-z}}                  σ(z)=1+e−z1​ 是sigmoid函数,                                 w                              w                  w 是权重向量,                                 b                              b                  b 是偏置项。
2. 单个样本的条件概率

对于单个样本                                    i                              i                  i,其条件概率可以表示为:
                                       P                            (                                       y                               i                                    ∣                                       x                               i                                    ;                            w                            ,                            b                            )                            =                                       {                                                                                                                      y                                                 ^                                                            i                                                                                                                            if                                                                y                                                 i                                                            =                                              1                                                                                                                                                1                                              −                                                                                 y                                                    ^                                                                  i                                                                                                                                          if                                                                y                                                 i                                                            =                                              0                                                                                                             P(y_i | x_i; w, b) = \begin{cases} \hat{y}_i & \text{if } y_i = 1 \\ 1 - \hat{y}_i & \text{if } y_i = 0 \end{cases}                     P(yi​∣xi​;w,b)={y^​i​1−y^​i​​if yi​=1if yi​=0​
为了方便数学上的操纵,我们盼望把这两个分支合并成一个通用的公式。注意到:


[*]当                                                    y                               i                                    =                            1                                  y_i = 1                     yi​=1,我们需要保存                                                                y                                  ^                                          i                                          \hat{y}_i                     y^​i​ 并忽略                                       1                            −                                                   y                                  ^                                          i                                          1 - \hat{y}_i                     1−y^​i​。
[*]当                                                    y                               i                                    =                            0                                  y_i = 0                     yi​=0,我们需要保存                                       1                            −                                                   y                                  ^                                          i                                          1 - \hat{y}_i                     1−y^​i​ 并忽略                                                                y                                  ^                                          i                                          \hat{y}_i                     y^​i​。
因此,我们可以引入 幂运算 来实现这一点:
                                       P                            (                                       y                               i                                    ∣                                       x                               i                                    ;                            w                            ,                            b                            )                            =                                                   y                                  ^                                          i                                           y                                  i                                                 (                            1                            −                                                   y                                  ^                                          i                                                 )                                           1                                  −                                             y                                     i                                                             .                                  P(y_i | x_i; w, b) = \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i}.                     P(yi​∣xi​;w,b)=y^​iyi​​(1−y^​i​)1−yi​.
   解释:

[*]当                                                                y                                     i                                              =                                  1                                          y_i = 1                           yi​=1:


[*]此时                                                          y                                  i                                             y                                     i                                                      =                                                      y                                     ^                                              i                                  1                                          =                                                      y                                     ^                                              i                                                 y_i^{y_i} = \hat{y}_i^1 = \hat{y}_i                        yiyi​​=y^​i1​=y^​i​,
[*]而                                              (                               1                               −                                                      y                                     ^                                              i                                                      )                                             1                                     −                                                   y                                        i                                                                   =                               (                               1                               −                                                      y                                     ^                                              i                                                      )                                  0                                          =                               1                                    (1 - \hat{y}_i)^{1-y_i} = (1 - \hat{y}_i)^0 = 1                        (1−y^​i​)1−yi​=(1−y^​i​)0=1。
[*]所以整个表达式变为                                              P                               (                                           y                                  i                                          ∣                                           x                                  i                                          ;                               w                               ,                               b                               )                               =                                                      y                                     ^                                              i                                                 P(y_i | x_i; w, b) = \hat{y}_i                        P(yi​∣xi​;w,b)=y^​i​,符合我们的预期。

[*]当                                                                y                                     i                                              =                                  0                                          y_i = 0                           yi​=0:


[*]此时                                                                     y                                     ^                                              i                                             y                                     i                                                      =                                                      y                                     ^                                              i                                  0                                          =                               1                                    \hat{y}_i^{y_i} = \hat{y}_i^0 = 1                        y^​iyi​​=y^​i0​=1,
[*]而                                              (                               1                               −                                                      y                                     ^                                              i                                                      )                                             1                                     −                                                   y                                        i                                                                   =                               (                               1                               −                                                      y                                     ^                                              i                                                      )                                  1                                          =                               1                               −                                                      y                                     ^                                              i                                                 (1 - \hat{y}_i)^{1-y_i} = (1 - \hat{y}_i)^1 = 1 - \hat{y}_i                        (1−y^​i​)1−yi​=(1−y^​i​)1=1−y^​i​。
[*]所以整个表达式变为                                              P                               (                                           y                                  i                                          ∣                                           x                                  i                                          ;                               w                               ,                               b                               )                               =                               1                               −                                                      y                                     ^                                              i                                                 P(y_i | x_i; w, b) = 1 - \hat{y}_i                        P(yi​∣xi​;w,b)=1−y^​i​,也符合我们的预期。
指数的作用

通过使用                                                         y                               ^                                    i                                       y                               i                                                 \hat{y}_i^{y_i}                  y^​iyi​​ 和                                    (                         1                         −                                              y                               ^                                    i                                          )                                       1                               −                                           y                                  i                                                            (1 - \hat{y}_i)^{1-y_i}                  (1−y^​i​)1−yi​,我们巧妙地使用了                                              y                            i                                       y_i                  yi​ 的值(0或1)来选择符合的项:


[*]当                                                    y                               i                                    =                            1                                  y_i = 1                     yi​=1,第一项                                                                y                                  ^                                          i                                           y                                  i                                                       \hat{y}_i^{y_i}                     y^​iyi​​ 生效,第二项被消除。
[*]当                                                    y                               i                                    =                            0                                  y_i = 0                     yi​=0,第二项                                       (                            1                            −                                                   y                                  ^                                          i                                                 )                                           1                                  −                                             y                                     i                                                                   (1 - \hat{y}_i)^{1-y_i}                     (1−y^​i​)1−yi​ 生效,第一项被消除。
这种技巧的优点在于它允许我们在数学上用一个同一的表达式来描述两种不同的情况,而不需要显式的分支判断。
                                       P                            (                                       y                               i                                    ∣                                       x                               i                                    ;                            w                            ,                            b                            )                            =                                                   y                                  ^                                          i                                           y                                  i                                                 (                            1                            −                                                   y                                  ^                                          i                                                 )                                           1                                  −                                             y                                     i                                                                   P(y_i | x_i; w, b) = \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i}                     P(yi​∣xi​;w,b)=y^​iyi​​(1−y^​i​)1−yi​
3. 似然函数

似然函数是所有样本条件概率的乘积:
                                       L                            (                            w                            ,                            b                            )                            =                                       ∏                                           i                                  =                                  1                                          N                                    P                            (                                       y                               i                                    ∣                                       x                               i                                    ;                            w                            ,                            b                            )                            =                                       ∏                                           i                                  =                                  1                                          N                                                 (                                                      y                                     ^                                              i                                             y                                     i                                                      (                               1                               −                                                      y                                     ^                                              i                                                      )                                             1                                     −                                                   y                                        i                                                                   )                                          L(w, b) = \prod_{i=1}^N P(y_i | x_i; w, b) = \prod_{i=1}^N \left( \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i} \right)                     L(w,b)=i=1∏N​P(yi​∣xi​;w,b)=i=1∏N​(y^​iyi​​(1−y^​i​)1−yi​)
4. 对数似然函数

为了简化优化过程,通常取似然函数的自然对数(ln),称为对数似然函数:
                                       log                            ⁡                            L                            (                            w                            ,                            b                            )                            =                            log                            ⁡                                       (                                           ∏                                             i                                     =                                     1                                              N                                                      (                                                             y                                        ^                                                i                                                   y                                        i                                                         (                                  1                                  −                                                             y                                        ^                                                i                                                         )                                                   1                                        −                                                       y                                           i                                                                         )                                          )                                          \log L(w, b) = \log \left( \prod_{i=1}^N \left( \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i} \right) \right)                     logL(w,b)=log(i=1∏N​(y^​iyi​​(1−y^​i​)1−yi​))
使用对数的性质                                    log                         ⁡                         (                         a                         b                         )                         =                         log                         ⁡                         (                         a                         )                         +                         log                         ⁡                         (                         b                         )                              \log(ab) = \log(a) + \log(b)                  log(ab)=log(a)+log(b),我们可以将乘积转换为求和:
                                       log                            ⁡                            L                            (                            w                            ,                            b                            )                            =                                       ∑                                           i                                  =                                  1                                          N                                    log                            ⁡                                       (                                                      y                                     ^                                              i                                             y                                     i                                                      (                               1                               −                                                      y                                     ^                                              i                                                      )                                             1                                     −                                                   y                                        i                                                                   )                                          \log L(w, b) = \sum_{i=1}^N \log \left( \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i} \right)                     logL(w,b)=i=1∑N​log(y^​iyi​​(1−y^​i​)1−yi​)
进一步使用对数的性质                                    log                         ⁡                         (                                 a                            b                                  )                         =                         b                         log                         ⁡                         (                         a                         )                              \log(a^b) = b \log(a)                  log(ab)=blog(a),得到:
                                       log                            ⁡                            L                            (                            w                            ,                            b                            )                            =                                       ∑                                           i                                  =                                  1                                          N                                                 (                                           y                                  i                                          log                               ⁡                               (                                                      y                                     ^                                              i                                          )                               +                               (                               1                               −                                           y                                  i                                          )                               log                               ⁡                               (                               1                               −                                                      y                                     ^                                              i                                          )                               )                                          \log L(w, b) = \sum_{i=1}^N \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right)                     logL(w,b)=i=1∑N​(yi​log(y^​i​)+(1−yi​)log(1−y^​i​))
这就是我们熟悉的对数似然函数的形式。
完备推导总结


[*] 似然函数:
                                                   L                                  (                                  w                                  ,                                  b                                  )                                  =                                             ∏                                                   i                                        =                                        1                                                N                                                         (                                                                  y                                           ^                                                      i                                                       y                                           i                                                                (                                     1                                     −                                                                  y                                           ^                                                      i                                                                )                                                       1                                           −                                                         y                                              i                                                                               )                                                      L(w, b) = \prod_{i=1}^N \left( \hat{y}_i^{y_i} (1 - \hat{y}_i)^{1-y_i} \right)                           L(w,b)=i=1∏N​(y^​iyi​​(1−y^​i​)1−yi​)
[*] 对数似然函数:
                                                   log                                  ⁡                                  L                                  (                                  w                                  ,                                  b                                  )                                  =                                             ∑                                                   i                                        =                                        1                                                N                                                         (                                                   y                                        i                                                log                                     ⁡                                     (                                                                  y                                           ^                                                      i                                                )                                     +                                     (                                     1                                     −                                                   y                                        i                                                )                                     log                                     ⁡                                     (                                     1                                     −                                                                  y                                           ^                                                      i                                                )                                     )                                                      \log L(w, b) = \sum_{i=1}^N \left( y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i) \right)                           logL(w,b)=i=1∑N​(yi​log(y^​i​)+(1−yi​)log(1−y^​i​))
可视化对数似然函数

为了更好地理解对数似然函数的行为,我们可以绘制不同预测概率下的对数似然函数曲线。
https://i-blog.csdnimg.cn/direct/209d60d5ac5f4ba0bdf9476b1e31f7c4.png
import numpy as np
import matplotlib.pyplot as plt

# 定义对数似然函数
def log_likelihood(y_true, y_pred):
    """
    计算二分类问题的对数似然函数
    :param y_true: 真实标签 (0或1)
    :param y_pred: 预测概率 (0到1之间的浮点数)
    :return: 对数似然函数值
    """
    epsilon = 1e-15# 防止log(0)错误
    y_pred = np.clip(y_pred, epsilon, 1 - epsilon)
    return y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)

# 构造一系列不同的预测概率y_pred,并计算对应的对数似然值
y_pred_values = np.linspace(0.01, 0.99, 400)# 预测概率从0.01到0.99

# 真实标签为1的情况
ll_y_true_1 =

# 真实标签为0的情况
ll_y_true_0 =

# 可视化对数似然函数随预测概率的变化趋势
plt.figure(figsize=(10, 6))
plt.plot(y_pred_values, ll_y_true_1, label='真实标签为1', color='blue')
plt.plot(y_pred_values, ll_y_true_0, label='真实标签为0', color='red')

plt.title("二分类问题中的对数似然函数", fontsize=16)
plt.xlabel("预测概率 $P(y=1|x)$", fontsize=14)
plt.ylabel("对数似然函数值", fontsize=14)
plt.grid(True)
plt.legend(fontsize=12)
plt.tight_layout()
plt.show()
说明


[*] 对数似然函数界说:

[*]函数 log_likelihood 根据公式                                                   log                                  ⁡                                  L                                  (                                  w                                  ,                                  b                                  )                                  =                                             y                                     i                                              log                                  ⁡                                  (                                                             y                                        ^                                                i                                              )                                  +                                  (                                  1                                  −                                             y                                     i                                              )                                  log                                  ⁡                                  (                                  1                                  −                                                             y                                        ^                                                i                                              )                                          \log L(w, b) = y_i \log(\hat{y}_i) + (1 - y_i) \log(1 - \hat{y}_i)                           logL(w,b)=yi​log(y^​i​)+(1−yi​)log(1−y^​i​) 实现。
[*]使用 np.clip 来防止预测概率接近0或1时出现                                                   log                                  ⁡                                  (                                  0                                  )                                          \log(0)                           log(0) 错误。

[*] 构造预测概率:

[*]我们生成了一系列预测概率                                                                y                                     ^                                                      \hat{y}                           y^​ 的值,范围从0.01到0.99。

[*] 计算对数似然值:

[*]分别计算真实标签为1和真实标签为0时的对数似然函数值。

[*] 可视化:

[*]使用 Matplotlib 绘制两条曲线,一条表示真实标签为1时的对数似然函数值变化,另一条表示真实标签为0时的对数似然函数值变化。
[*]曲线的颜色分别为蓝色和赤色,便于区分。

结果分析



[*]当真实标签为1时,假如预测概率                                                    y                               ^                                          \hat{y}                     y^​ 接近1,对数似然函数值很大;反之,假如                                                    y                               ^                                          \hat{y}                     y^​ 接近0,对数似然函数值很小。
[*]当真实标签为0时,假如预测概率                                                    y                               ^                                          \hat{y}                     y^​ 接近0,对数似然函数值很大;反之,假如                                                    y                               ^                                          \hat{y}                     y^​ 接近1,对数似然函数值很小。
[*]这种特性使得对数似然函数能够有效地衡量预测分布与真实分布之间的差异,并引导模子朝着正确的方向进行优化。
通过这种可视化方式,您可以直观地理解对数似然函数的行为及其在二分类题目中的应用。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 新手村:逻辑回归-理解03:逻辑回归中的最大似然函数