• Logistic Regression


    Logistic Regression

    背景

    之前写到了Linear Regression是为了解决线性的问题,例如预测房价等,结果是连续的值,而现实生活中还存在一些离散的计算,例如最简单的二分类,结果往往用两个离散的值来表示。这时,就要引入Logistic Regression来解决此类问题

    Sigmoid函数

    也称Logistic函数,它的公式是

    [sigma(z)=frac{1}{1+e^{-z}} ]

    函数图像如下,可以很明显的看到,在z无穷小处,其值为0,无穷大处,其值为1,所以利用其特性可以用来做二分类问题,即通过Sigmoid,将结果转化成趋近于0或趋近于1的值

    image-20210802204315764

    其函数的导数为:

    [sigma'(z)=frac{e^{-z}}{(1+e^{-z})^2}=sigma(z)(1-sigma(z)) ]

    方便计算

    数学推导

    和之前的Linear Regression不同的是,引入非线性的函数

    [y=frac{1}{1+e^{-(h_ heta(x))}}=frac{1}{1+e^{-(omega^Tx+b)}} ]

    上述式子可以写成另外一种形式:

    [ln(frac{y}{1-y})=h_ heta(x)=omega^Tx+b ]

    由于使用了Sigmoid函数,所以结果输出在0~1之间,所以原先的均方误差损失函数不能够更好的满足需求,这里引入了交叉熵损失函数

    [egin{align} J( heta)=frac{1}{m}sum_{i=1}^{m}(y_ilog(h_ heta(x_i))+(1-y_i)log(1-h_ heta(x_i)))\ J(omega,b)=frac{1}{m}sum_{i=1}^{m}(y_ilog(omega^TX_i+b)+(1-y_i)log(1-omega^TX_i-b)) end{align} ]

    式子中的m是样本参与计算的样本数量

    交叉熵损失函数为什么具有更好的效果呢,以下就来分析一下,可以看到,当结果(y_i)为1时,可以看到损失值为(-ln(y_i-hat{y})),反之为0时,损失值为(-ln(1-(hat{y}-y_i))),从图像上可以看到:

    image-20210802221408995

    通过交叉熵损失函数,可以更好的处理0~1之间的损失值。

    这里慢慢理解一下

    下一步是是最小化损失函数,和Linear Regression一样,求导,这里运用链式求导法则:

    [egin{align*} frac{partial J( heta)}{partial heta_j} &=frac{partial}{partial heta_j}[-frac{1}{m}sum_{i=1}^{m}[y_ilog(h_ heta(x_i))+(1-y_i)log{(1-h_ heta(x_i)})]]\ &=-frac{1}{m}sum_{i=1}^{m}[y_ifrac{1}{h_ heta(x_i)}frac{partial}{partial heta_j}h_ heta(x_i)-(1-y_i)frac{1}{1-h_ heta(x_i)}frac{partial}{partial heta_j}h_ heta(x_i)]\ &=-frac{1}{m}sum_{i=1}^{m}[y_ifrac{1}{h_ heta(x_i)}-(1-y_i)frac{1}{1-h_ heta(x_i)}]frac{partial}{partial heta_j}h_ heta(x_i)\ &=-frac{1}{m}sum_{i=1}^{m}[y_ifrac{1}{h_ heta(x_i)}-(1-y_i)frac{1}{1-h_ heta(x_i)}]frac{partial}{partial heta_j}g( heta^Tx_i) end{align*} ]

    [egin{align} frac{partial}{partial heta_j}g( heta^Tx_i) &=frac{partial}{partial heta_j}frac{1}{1+e^{- heta^Tx_i}}\ &=frac{e^{- heta^Tx_i}}{1+e^{- heta^Tx_i}}frac{partial}{partial heta_j} heta^Tx_i \ &=g( heta^Tx_i)(1-g( heta^Tx_i))frac{partial}{partial heta_j}( heta^Tx_i) end{align} ]

    [egin{align*} frac{partial J( heta)}{partial heta_j} &=-frac{1}{m}sum_{i=1}^{m}[y_i(1-g( heta^Tx_i))-(1-y_i)g( heta^Tx_i)]frac{partial}{partial heta_j}( heta^Tx_i) \ &=-frac{1}{m}sum_{i=1}^{m}(y_i-g( heta^Tx_i))frac{partial}{partial heta_j}( heta^Tx_i) \ &=frac{1}{m}sum_{i=1}^{m}(h_ heta(x_i)-y_i)frac{partial}{partial heta_j}( heta^Tx_i) \ end{align*} ]

    有趣的是,最后的结果竟然和Linear Regression的均方误差损失函数求导结果一样!

    以上就是Logistic Regression的大致概括

    Reference

    逻辑回归(Logistic Regression)(一)

    逻辑回归(Logistic Regression)(二)

  • 相关阅读:
    软件 = 程序 + 软件工程(构建之法读书笔记一)
    网站系统开发需要掌握的技术
    C++迪杰斯特拉算法求最短路径
    strcpy函数在VS2015无法使用的问题
    C++哈夫曼树编码和译码的实现
    java学习中一些疑惑解答(2)
    凯撒加密、解密算法
    利用DOS批处理实现定时关机操作
    C及C++中typedef的简单使用指南
    java学习中的一些疑惑解答
  • 原文地址:https://www.cnblogs.com/JoshuaYu/p/15092309.html
Copyright © 2020-2023  润新知