机器学习(4)——广义线性回归

函数模型

  在前面我们探讨了普通的线性回归,这次我们来讨论广义线性回归,通常也被称为 Logistic回归 ,我们先回忆一下线性回归的函数模型:

f(x)=\omega^Tx+b

  这个函数在表示的是一个直线,平面,或者超平面,不过它有致命的缺点,它在进行一个分类问题时,比如我们举一个二分类的例子,并不能很好的进行一个拟合,假如说,存在训练集得出的y,y_1=1,y_2=10,y_3=100,我们很难进行一个分类,并且它无法去拟合一个曲面,对于曲面,我们既想使用线性函数进行拟合,又希望拟合过程尽可能好,那么,我们可以对上式进行变形:

h(x)=g(\omega^Tx+b)

  从整体上来说,通过逻辑回归模型,我们将在整个实数范围上的x映射到了有限个点上,这样就实现了对x的分类。因为每次拿过来一个x,经过逻辑回归分析,就可以将它归入某一类y中。

边界决策函数

  这个函数名称是我自己一个习惯性的叫法,这里我们简单的介绍几种常见的函数。   我们还是举二分类为例,对于一个二分类问题,我们最简单的方法就是当\omega^Tx+b\geqslant 0,那么y=1,\omega^Tx+b<0,那么y=0,你可能很快会想到分段函数(我们称为 Threshold 函数):

f(x)=\left\{\begin{matrix}
 1,& \omega^Tx+b\geqslant 0 & \\ 
 0,&\omega^Tx+b< 0  & 
\end{matrix}\right.

  这个函数对于分类是否足够好呢?至少从难易上以及正确率上,一定是不错的。但是,这个函数是不可导的,并且分段梯度始终为0,我们显然在后续的处理上是很麻烦的,因此,我们通常不会使用这种方法。   这里我们直接引出我们的 Sigmoid 函数:

s(x)=(1+e^{-x})^{-1}=\frac{1}{1+e^{-x}}

  Sigmoid函数通常作为逻辑回归、神经网络等算法的默认配置,不过它虽然可以很好的作为一个默认函数,但它也是有缺点的。   我们看到它的图像:

Sigmod.png

  很显然,假定我们的初始输入值过大,Sigmoid仍然被限制在(-1,1)之间,这个时候,我们对Sigmoid函数进行求导会发现,Sigmoid函数的导数接近0,我们称为易饱和性,所以我们应该尝试求修改初始值,常用的方法是放缩,这个我们在后续进行讨论。

  更多的,Sigmoid函数还存在输出期望不为0的缺点,这在神经网络中是一个非常糟糕的事情,我们同样会在后续进行讲解。

  对于Sigmoid函数,第一个缺点显然是容易解决,但是第二个缺点更为致命。因此我们也常用双曲正切函数( Hyperbolic Tangent ):

tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}

  它的图像:

扫描二维码关注公众号,回复: 2917183 查看本文章
Tanh.png
  这个函数的期望 \int_{\infty}tanh(x)=0,但是同样存在易饱和的缺点。

  事实上,tanh函数就是对Sigmoid函数的一个变形:

tanh(x)=2Sigmoid(2x)-1

  不过通常为了加速运算,我们仅使用Sigmoid函数即可,所以我们的Logistic函数模型就是:

f(x)=\frac{1}{Sigmoid(\omega^Tx)}=\frac{1}{1+e^{-\omega^Tx}}

代价函数

  这里我们不加以解释的给出代价函数,对于代价函数的选择和使用,我们在下一节中有极为详细的说明。

J(\omega)=-\frac{1}{m}[\sum^m_{i=1}y^{(i)}logh(\omega x^{(i)})+(1-y^{(i)})log(1-h(\omega x^{(i)}))]

  我们在目前的学习中暂时不引入正则化的概念,不知道各位是否还记得这个公式,这其实是我们的交叉熵公式,在下一节,我们将详细的推导这个代价函数以及解释各个代价函数的最优使用范围。

我的掘金:WarrenRyan

我的简书:WarrenRyan

欢迎关注我的博客获得第一时间更新 blog.tity.online

我的Github:StevenEco

猜你喜欢

转载自juejin.im/post/5b835feef265da432a6ae48e