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

打印 上一主题 下一主题

主题 1942|帖子 1942|积分 5826

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


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​))
可视化对数似然函数

为了更好地理解对数似然函数的行为,我们可以绘制不同预测概率下的对数似然函数曲线。

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. # 定义对数似然函数
  4. def log_likelihood(y_true, y_pred):
  5.     """
  6.     计算二分类问题的对数似然函数
  7.     :param y_true: 真实标签 (0或1)
  8.     :param y_pred: 预测概率 (0到1之间的浮点数)
  9.     :return: 对数似然函数值
  10.     """
  11.     epsilon = 1e-15  # 防止log(0)错误
  12.     y_pred = np.clip(y_pred, epsilon, 1 - epsilon)
  13.     return y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred)
  14. # 构造一系列不同的预测概率y_pred,并计算对应的对数似然值
  15. y_pred_values = np.linspace(0.01, 0.99, 400)  # 预测概率从0.01到0.99
  16. # 真实标签为1的情况
  17. ll_y_true_1 = [log_likelihood(1, y_pred) for y_pred in y_pred_values]
  18. # 真实标签为0的情况
  19. ll_y_true_0 = [log_likelihood(0, y_pred) for y_pred in y_pred_values]
  20. # 可视化对数似然函数随预测概率的变化趋势
  21. plt.figure(figsize=(10, 6))
  22. plt.plot(y_pred_values, ll_y_true_1, label='真实标签为1', color='blue')
  23. plt.plot(y_pred_values, ll_y_true_0, label='真实标签为0', color='red')
  24. plt.title("二分类问题中的对数似然函数", fontsize=16)
  25. plt.xlabel("预测概率 $P(y=1|x)$", fontsize=14)
  26. plt.ylabel("对数似然函数值", fontsize=14)
  27. plt.grid(True)
  28. plt.legend(fontsize=12)
  29. plt.tight_layout()
  30. 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表