当前位置:   article > 正文

逻辑回归模型笔记整理2 - w参数求解,by梯度下降_对于二分类问题逻辑回归中利用下式计算后验概率请给出求解模型参数w的方法

对于二分类问题逻辑回归中利用下式计算后验概率请给出求解模型参数w的方法

5. 交叉熵损失函数分析

为了方便起见,我们可以对单个样本进行分析。由损失函数的组成,我们可以得出:

5.1 当真实类别为1时,sigmoid函数(可以认为是得分预测函数)的值越接近于1,则损失值越小

理解这句话见下图:
注意:(1)对数函数;(2)sigmoid函数取值范围在[0, 1]
在这里插入图片描述

5.2 当真实类别为0时,sigmoid函数的值越接近于0,则损失值越小

同理sigmoid函数

我们现在来绘制损失函数曲线

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams["font.family"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False

s = np.linspace(0.01, 0.99, 200)
for y in [0, 1]:
    # 逻辑回归的损失函数。
    loss = -y * np.log(s)-(1 - y) * np.log(1 - s)
    plt.plot(s, loss, label=f"y={y}")
plt.legend()
plt.xlabel("sigmoid(z)")
plt.ylabel("J(w)")
plt.title("损失函数J(w)与sigmoid(z)的关系")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

规律如下:

  • 5.1 当真实类别为1时,sigmoid函数(可以认为是得分预测函数)的值越接近于1,则损失值越小
  • 5.2 当真实类别为0时,sigmoid函数的值越接近于0,则损失值越小
    在这里插入图片描述

6. 梯度下降求解w

针对刚得到的损失函数J(w),接下来,我们可以使用梯度下降方法来求解w,使得损失函数的值最小。我们先考虑对一个样本中的w求偏导对于所有样本,只需要依次将所有样本的偏导结果累加即可(a + b的导数等于各自的导数再相加)。
在这里插入图片描述
其中, ∂ s ( z ( i ) ) ∂ z \frac{\partial s(z^{(i)})}{\partial z} zs(z(i))就是对sigmoid函数求导,即 s ′ ( z ) s'(z) s(z)
在这里插入图片描述
因此,上式为:
在这里插入图片描述

7. 进一步解释第6点公式的推导过程

如何得到?
在这里插入图片描述
以x w作为参数的时候 y=1 的概率是多少?
s(z)是sigmoid 的简写。
y=0 就是 1 – s(z)

s越大 y=1 的p越大
s越小 y=0 的 p越大

以x作为前提,w为参数,也就是条件概率。
然后将两个式子合并在一起,因为方便计算。
看 y=1 带入 s(z);y=0 带入 1-s(z),这样两个式子就统一了。
在这里插入图片描述
把这两个概率综合在一起考虑了,一个样本有一个z的值,任何一个样本的概率值是多少?目的就是让这个联合概率最大。
在这里插入图片描述
不知道概率相关的参数,但有结果,让结果最大,推参数。
使用最大似然估计,进行累乘,估计w的值。
带入,还是一个累乘的形式,不方便,考虑在似然函数上取对数,函数虽然变了,但没关系,不改变极值点。之前的博文也提到过。

在这里插入图片描述
得到上面式子的过程需要用到的对数公式知识:
在这里插入图片描述
在这里插入图片描述
让它达到最大,本来应该用梯度上升,但梯度上升在机器学习中一般不用;解决方法:加上符号

所以目的就是让下面的式子最小, 求w:
在这里插入图片描述
交叉熵损失函数:

类别 * ln类别(一个类别,另一个类别)
在这里插入图片描述

7.1 Why 分类算法用 交叉熵 ?,而回归用平方和比较合适?**

在回归算法中,真实100 预测 50 90 它们损失不一样,但是分类当中上述的不合适。

而在 分类算法分 1 2 3 4 5类别,1是正确的,除非你预测是1 ,否则其他都是错的,预测2 越策5 都是错的都是一样的,不在乎哪一个编一个好,也没有接不接近的说法,不是特别合适。

7.2 Why用 交叉熵 类别 乘以 ln类别 ,而不会出现平方和的问题?

在这里插入图片描述
观察,分析:
在这里插入图片描述让它越来越大 ;当y是1 后买是0
在这里插入图片描述
让它越大越好, 前面是1
在这里插入图片描述
让ln越大越好;就是让 z sigmoid越大越好

S(z)最大也就是能取到1 因为 e^0 等1
在这里插入图片描述
当yi 取1 的时候,我们希望sz越大越好,就代表越趋紧真实的1
Sz越小 小 小 加符号越来越大
在这里插入图片描述
如果yi要是0,
只剩下这个部分:在这里插入图片描述
希望它越大越好,就是希望:

在这里插入图片描述
越大越好,也就是s(z)月小越好
在这里插入图片描述
逻辑回归的损失函数隆重推出:
在这里插入图片描述
交叉熵损失函数代码中,y取0的时候循环一次,1的时候循环一次。

在这里插入图片描述
不取0,取0.01,因为log 不能取0;
不能取1,取0.99 ,因为1-1=0了。

在这里插入图片描述
在这里插入图片描述
y=1 sz增大 越趋近于1 损失函数越小;
也符合实际,sz越大,信心指数越强,真实值又是1。

y=0 sz增大 损失值上涨;
真实类别为0 预测为1的信心指数越强 预测差距越大 损失函数的值越大。

8. 不用复杂方法,简单看损失函数

能快速分析出上面的结论:
在这里插入图片描述
真实类别 y=1;只剩下 -lins(z(i))
zg越大 损失函数越小,就可以采用梯度下降求;
求偏导,先只求一个样本 然后再累积求和。后续…
在这里插入图片描述
wj在哪儿 z里面;其中多处涉及复合函数求导:
在这里插入图片描述
首先看 ln A ; Lna导数 1/a
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
提出来 都涉及szi对wj求偏导 提到外面。

在这里插入图片描述
下图又是一个复合函数
在这里插入图片描述
在这里插入图片描述
对里面的求导,sigmoid z 求偏导 直接写出
在这里插入图片描述
在这里插入图片描述
所以对他求导数,又是一个复合函数
在这里插入图片描述
导数在这里插入图片描述
在这里插入图片描述
大A
在这里插入图片描述
A的-1等于 ,-a的平方之一
在这里插入图片描述
在这里插入图片描述
里面的 大A,复合函数求导;e的a次方求导还是:
在这里插入图片描述
A对z求偏导:
在这里插入图片描述
A就是-z;所以就是:
在这里插入图片描述
在这里插入图片描述
进行整理:
在这里插入图片描述上去;然后拆开;平方拆两个
在这里插入图片描述
得到:
在这里插入图片描述
符号抵消了;然后改种写法 一样的:

在这里插入图片描述
得到 然后根据:
在这里插入图片描述
在这里插入图片描述
xj提到外面;撑开:
在这里插入图片描述
Yi -yi *szi -
在这里插入图片描述
到了梯度下降的更新公式
在这里插入图片描述
szi就是simgoi的;开始更新;梯度值乘以eta。
-梯度值 前面有符号 负负为正 原本是减号。
得到这个公式:
在这里插入图片描述
批量的话,所有样本加载一起搞;不断迭代 就能让损失函数越来越小;求出w值。
挺相似的 只不过是概率的预测 换成y_hat:
在这里插入图片描述
接着再循环里面不断的迭代就可以了。

在这里插入图片描述
在这里插入图片描述
e上面是-z
在这里插入图片描述

通过 sigmoid转化为 0 1的区间,不仅分类 还能给出概率,图像类似于s

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/279427
推荐阅读
相关标签
  

闽ICP备14008679号