Logistic regression ,Softmax regression and Newton's method

来源:互联网 发布:mac切换root帐号 编辑:程序博客网 时间:2024/04/30 19:32

首先说的是Logistic regression,一般来说他只能用于分两类(0或1)的情况,虽然我曾在Andrew Ng的课上讲过也可以处理多类的情况。

Logistic regression的思想非常简单,就是将负无穷到正无穷的区间用一个函数映射到了0到1的区间。这个函数是:

使用这个函数是有一套理论支撑的,Andrew Ng在网易公开课有讲,大概就是涉及到指数分布和一般线性模型的概念,比较复杂,这里略过。

假如设Htheta(x)为x是1类的概率,那么显然有1-Htheta(x)为x是0类的概率,我们可以写出两个式子

P(y=1/x)=Htheta(x)

P(y=0/x)=1-Htheta(x)

那么有:


我之所以写出这个式子,是因为我想用它来推导cost函数,而不是直接得到cost函数。

根据最大似然理论:


根据这个式子,取对数后能够得到cost函数为:


接下来就是如何最小化这个cost函数得到最优的theta值,这里可以用梯度下降法,或者牛顿法来解决。


这里说下Logistic regression解决多类的问题,具体可以这样做,当我们想要分很多类的时候,我们对于每一类当做一类,其他不属于这个类的属于另一类,然后可以算得一条分界线,对于k类的情况,可以算得k条分界线,也就是k个分类器,每当一个新的样本来时,只要枚举所有分类器,每j个分类器能算出这个新的样本属于第j类的概率Pj(1<=j<=k),最后的结果则取使得Pj最大的那个j所对应的类。


Softmax regression 的Htheta函数和cost函数如下:


可以发现,Softmax regression 和Logistic regression 的损失函数非常相似,

这是因为Logistic regression的损失函数可以写成这样:


Softmax regression最优化后得到的参数有一个特点,就是所有的参数减去同一个值

后,他们还是最优的,有证明如下:


这个说明了参数的解不是唯一的,我们还需要加一个规则项来修改cost函数:


最后得到偏导数表达式为:


至此说完这两个回归,个人觉得这里还是有必要说一下牛顿法,

牛顿法可以用来求解f(x)=0的根,它的求解方法如下:设r是f(x)=0的根,选取x0作为r的初始近似值,过点(x0,f(x0)做曲线y=f(x)的切线L,L的方程为y=f(x0)+f'(x0)(x-x0),求出L与x轴交点的横坐标x1=x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1)做曲线y=f(x)的切线,并求该切线与x轴交点的横坐标x2=x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程直到误差小于某个值。

而对于一个似然函数的最大值,我们可以选择将这个似然函数的导数令做f(x)求其的0解来得到似然函数的最大值。

对于最一般的牛顿法,有:

此时theta是一个向量,H是hessian矩阵。

这里说一点牛顿法并不是对所有的f(x)试用,比如f(x)不连续就不可以使用。

  







0 0