Logistic Regression|8月更文挑战

本文简单介绍一下Logistic Regression的定义和原理。对于(Linear Regression)线性回归模型,输入 x x ,网络参数为 w w b b ,输出值为 y y ,是个连续值。可是分类问题最终的输出值应该为离散的,那么如何转化为分类问题呢?html

能够考虑增长一个 σ \sigma 函数,变为 y = σ ( w x + b ) y=\sigma(wx+b) ,这个 σ \sigma 也叫sigmoid函数或logistic函数,这样输出的值就能压缩到 [ 0 , 1 ] [0,1] ,咱们能够将这个值等效为probabilitymarkdown

对于Regression问题,其目标是使pred(预测值)近似于输出的 y y 值,即最小化 dist ( p r e d , y ) \text{dist}(pred,y) ;对于Classification问题,其目标是最大化accuracy,或者说最小化 dist ( p θ ( y x ) , p r ( y x ) ) \text{dist}(p_\theta(y|x), p_r(y|x)) 。二者最主要的区别是traning的目标不一样,这里可能会有疑问,why not maximize accuracy?网络

由于通常acc的计算公式为: 预测对的数量 总的数量 \frac{预测对的数量}{总的数量} app

a c c = I ( p r e d = y i ) len ( Y ) acc = \frac{\sum I(pred = y_i)}{\text{len}(Y)}

对于一个二分类问题,咱们假设阈值为0.5,即 p r e d > 0.5 pred>0.5 ,认为是第一类, p r e d < 0.5 pred<0.5 ,咱们认为是第二类。一开始确定会有分类不正确的,假设真实类别为1,预测值为0.4,则网络将其归为0这一类,在网络更新后,预测值变大为0.45,虽然更加靠近1,更加接近真实值,可是因为没有发生本质的变化,即仍然没有大于0.5函数

再比方说,假如一开始一个预测值为0.499,真实类别为1,网络更新后,预测值变为0.501,预测正确了,可是计算梯度时,可能会致使梯度很是很是大,甚至不连续spa

上面两个问题总结起来就是:code

  • gradient = 0 if accuracy unchanged but weights changed
  • gradient not continuous since the number of correct is not continuous

最后一个问题,why call logistic regression?logistic好理解,由于使用了 σ \sigma 函数,可是为何叫regression,而不是classification呢?这个问题的解答网上有不少争议,其中一个解释是说,由于一开始作classification的时候,用的就是MSE,因此叫作regression(解决regression问题经常使用的loss就是MSE),可是如今解决classification问题用的是Cross Entropy,只不过叫法以及被你们习惯了,因此没改orm

相关文章
相关标签/搜索