zoukankan      html  css  js  c++  java
  • 逻辑回归

    1 逻辑回归的应用场景

    • 广告点击率
    • 是否为垃圾邮件
    • 是否患病
    • 金融诈骗
    • 虚假账号

    看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器

    2 逻辑回归的原理

    要想掌握逻辑回归,必须掌握两点:

    • 逻辑回归中,其输入值是什么

    • 如何判断逻辑回归的输出

    2.1 输入

    逻辑回归的输入就是一个线性回归的结果。

    2.2 激活函数

    • sigmoid函数g(w^T, x)=frac{1}{1+e^{-h(w)}}=frac{1}{1+e^{-w^Tx}}g(wT​​,x)=1+eh(w)​​1​​=1+ewT​​x​​1​​

    • 判断标准

      • 回归的结果输入到sigmoid函数当中
      • 输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值

    逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),另外的一个类别会标记为0(反例)。(方便损失计算)

    输出结果解释(重要):假设有两个类别A,B,并且假设我们的概率值为属于A(1)这个类别的概率值。现在有一个样本的输入到逻辑回归输出结果0.55,那么这个概率值超过0.5,意味着我们训练或者预测的结果就是A(1)类别。那么反之,如果得出结果为0.3那么,训练或者预测结果就为B(0)类别。

    关于逻辑回归的阈值是可以进行改变的,比如上面举例中,如果你把阈值设置为0.6,那么输出的结果0.55,就属于B类。

    在之前,我们用最小二乘法衡量线性回归的损失

    在逻辑回归中,当预测结果不对的时候,我们该怎么衡量其损失呢?

    我们来看下图(下图中,设置阈值为0.6),

    那么如何去衡量逻辑回归的预测结果与真实结果的差异呢?

    3 损失以及优化

    3.1 损失

    逻辑回归的损失,称之为对数似然损失,公式如下:

    • 分开类别:

    其中y为真实值,h_ heta(x)hθ​​(x)为预测值

    怎么理解单个的式子呢?这个要根据log的函数图像来理解

    无论何时,我们都希望损失函数值,越小越好

    分情况讨论,对应的损失函数值:

    • 当y=1时,我们希望h_ heta(x)hθ​​(x)值越大越好;
    • 当y=0时,我们希望h_ heta(x)hθ​​(x)值越小越好
    • 综合完整损失函数

    接下来我们呢就带入上面那个例子来计算一遍,就能理解意义了。

    我们已经知道,log(P), P值越大,结果越小,所以我们可以对着这个损失的式子去分析

    3.2 优化

    同样使用梯度下降优化算法,去减少损失函数的值。这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率。


    4 小结

    • 逻辑回归概念【知道】
      • 解决的是一个二分类问题
      • 逻辑回归的输入是线性回归的输出
    • 逻辑回归的原理【掌握】
      • 输入:
        • 线性回归的输出
      • 激活函数
        • sigmoid函数
        • 把整体的值映射到[0,1]
        • 再设置一个阈值,进行分类判断
    • 逻辑回归的损失和优化【掌握】
      • 损失
        • 对数似然损失
        • 借助了log思想,进行完成
        • 真实值等于0,等于1两种情况进行划分
      • 优化
        • 提升原本属于1类别的概率,降低原本是0类别的概率。
  • 相关阅读:
    [LeetCode] 582. Kill Process
    [LeetCode] 686. Repeated String Match
    [LeetCode] 341. Flatten Nested List Iterator
    [LeetCode] 404. Sum of Left Leaves
    [LeetCode] 366. Find Leaves of Binary Tree
    [LeetCode] 1485. Clone Binary Tree With Random Pointer
    [LeetCode] 459. Repeated Substring Pattern
    [LeetCode] 565. Array Nesting
    [LeetCode] 679. 24 Game
    [LeetCode] 364. Nested List Weight Sum II
  • 原文地址:https://www.cnblogs.com/deepend/p/14464552.html
Copyright © 2011-2022 走看看