本文始发于个人公众号:TechFlow,原创不易,求个关注
在之前的文章当中,我们推导了线性回归的公式,线性回归本质是线性函数,模型的原理不难,核心是求解模型参数的过程。通过对线性回归的推导和学习,我们基本上了解了机器学习模型学习的过程,这是机器学习的精髓,要比单个模型的原理重要得多。
新关注和有所遗忘的同学可以点击下方的链接回顾一下之前的线性回归和梯度下降的内容。
回归与分类
在机器学习当中,模型根据预测结果的不同分为两类,如果我们希望模型预测一个或者多个连续值,这类问题被称为是回归问题。像是常见的未来股票价格的估计、未来温度估计等等都算是回归问题。还有一类呢是分类问题,模型的预测结果是一个离散值,也就是说只有固定的种类的结果。常见的有垃圾邮件识别、网页图片鉴黄等等。
我们之前介绍的逻辑回归顾名思义是一个回归问题,今天的文章讲的呢是如何将这个回归模型转化成分类模型,这个由线性回归推导得到的分类模型称为逻辑回归。
逻辑回归
逻辑回归这个模型很神奇,虽然它的本质也是回归,但是它是一个分类模型,并且它的名字当中又包含”回归“两个字,未免让人觉得莫名其妙。
如果是初学者,觉得头晕是正常的,没关系,让我们一点点捋清楚。
让我们先回到线性回归,我们都知道,线性回归当中 y = W X + b y=WX+b y=WX+b。我们通过W和b可以求出X对应的y,这里的y是一个连续值,是回归模型对吧。但如果我们希望这个模型来做分类呢,应该怎么办?很容易想到,我们可以人为地设置阈值对吧,比如我们规定y > 0最后的分类是1,y < 0最后的分类是0。从表面上来看,这当然是可以的,但实际上这样操作会有很多问题。
最大的问题在于如果我们简单地设计一个阈值来做判断,那么会导致最后的y是一个分段函数,而分段函数不连续,使得我们没有办法对它求梯度,为了解决这个问题,我们得找到一个平滑的函数使得既可以用来做分类,又可以解决梯度的问题。
很快,信息学家们找到了这样一个函数,它就是Sigmoid函数,它的表达式是:
σ ( x ) = 1 1 + e − x \sigma(x)= \frac{1}{1+e^{-x}} σ(x)=1+e−x1
它的函数图像如下:
可以看到,sigmoid函数在x=0处取值0.5,在正无穷处极限是1,在负无穷处极限是0,并且函数连续,处处可导。sigmoid的函数值的取值范围是0-1,非常适合用来反映一个事物发生的概率。我们认为 σ ( x ) \sigma(x) σ(x)表示x发生的概率,那么x不发生的概率就是 1 − σ ( x ) 1-\sigma(x) 1−σ(x)。我们把发生和不发生看成是两个类别,那么sigmoid函数就转化成了分类函数,如果 σ ( x ) > 0.5 \sigma(x)>0.5 σ(x)>0.5表示类别1,否则表示类别0.
到这里就很简单了,通过线性回归我们可以得到 y = W X + b , P ( 1 ) = σ ( y ) , P ( 0 ) = 1 − σ ( y ) y = WX + b, P(1)=\sigma(y), P(0)=1-\sigma(y) y=WX+b,P(1)=σ(y),P(0)=1−σ(y)。也就是说我们在线性回归模型的外面套了一层sigmoid函数,我们通过计算出不同的y,从而获得不同的概率,最后得到不同的分类结果。
损失函数
下面的推导全程高能,我相信你们看完会三连的(点赞、转发、关注)。
让我们开始吧,我们先来确定一下符号,为了区分,我们把训练样本当中的真实分类命名为 y y y, y y y的矩阵写成 Y Y Y。同样,单条样本写成 x x x, x x x的矩阵写成 X X X。单条预测的结果写成 y ^ \hat{y} y^,所有的预测结果写成 Y ^ \hat{Y} Y^。
对于单条样本来说,y有两个取值,可能是1,也可能是0,1和0代表两个不同的分类。我们希望 y = 1 y = 1 y=1的时候, y ^ \hat{y} y^尽量大, y = 0 y = 0 y=0时, 1 − y ^ 1 - \hat{y} 1−y^尽量大,也就是 y ^ \hat{y} y^尽量小,因为它取值在0-1之间。我们用一个式子来统一这两种情况:
P ( y ∣ x ) = y ^ y ( 1 − y ^ ) 1 − y P(y|x)=\hat{y}^y(1-\hat{y})^{1-y} P(y∣x)=