Logistic Regression的思考与整理

来源:互联网 发布:!号c语言中是什么意思 编辑:程序博客网 时间:2024/06/06 04:50

在NYU上了Machine Learning,学到了一些以前没有注意或者不知道的知识。在原有部分博文的基础上进行更详细地讲解。

关于回归算法的Bias和Variance

加深了对误差理论的理解。

对于一个输入为x⃗ 的回归算法,我们设算法输出的预测函数为g(x),算法的真正分类函数为f(x)。我们期望的就是让g(x)尽可能地与f(x)靠近。

我们将f(x)g(x)当成一个连续函数,那么对于特定的xir表示输入数据在该点的值,且f(x)=E[r|xi](因为输入有噪声的缘故)。

E[(rg(xi))2|xi] = = E[(rE[r|xi])2|xi]noise(E[r|xi]g(xi))2square error=biasE[(rf(xi))2|xi]noise(f(xi)g(xi))2square error=bias

对于固定的xi和一堆g(xi)(我们可以认为是假设集里的所有函数),那么g(xi)就变成了一个随机变量了。

现在考虑一个长度为Nx⃗ 随机样本,我们希望g(xi)E[r|xi]是相同的。

Ex⃗ [(E[r|xi]g(xi))2|xi] = (E[r|xi]Ex⃗ [g(xi)])2bias of learning alg on xi+E[(g(xi)Ex⃗ [g(xi)])2]variance of learning alg

其中后者指的是多个函数之间的variance。

例子1

对于如图的输入样例,用一次函数去进行分类,那么我们可以明显地发现,对于特定的xig(xi)造成的bias非常大,也就是square error特别大。

但是考虑到假设集合(即,所有一次函数的集合),多个g(x)之间的variance是较小的。反正一次函数变来变去就只有ABC三个参数变,化简一下就只剩下斜率和偏移能够变化了。

那么当我们用五次函数去训练分类的时候,我们可以明显地发现,对于特定的xig(xi)造成的bias为0,但是五次函数的variance就明显比一次函数大多了。

所以图1是欠拟合,图2则是过拟合。

例子2

f(x)=2,在输入的时候没有噪音,即r=f(x)=2

设计算法:

  1. 当第一个输入的样例(x,r)x>10,则让g(x)=1
  2. 否则。让g(x)=3

对于训练集合,我们让xt均匀得从[0,20]中随机得出。

x⃗ ={(4,2),(5,2),(7,2)}

我们可以看得出来这题的算法得出的g(x)的variance为0,但是它的bias却非常大。

关于逻辑回归函数的由来

Logistic函数

看到一个博客上面说逻辑回归为啥叫逻辑回归,是因为它用了Logistic函数。当时我就觉得非常牛逼,这个函数是科学家用硬生生猜出来的么。

现在才知道这个函数也是推导出来的。

我们要预测一个样本x的类别,则需要比较一下在输入为的x条件下,两个类别的概率大小

P[+|x]=yP[|x]=1y

我们假设可以假设P[+|x]>P[|x]

y>1yy1y>1log[y1y]>0

那么我们就考虑函数f(x)=log(y1y)

我们让z=log(y1y)y=11+ez

同时我们让wdxd++w1x1+w0=z,可以得到

P[+|x]=11+ewTx+w0

这就是Logistic函数的由来。

损失函数的由来

逻辑回归的损失函数是由log对数损失函数得来的。

输入x1,x2,x3,那么他们的分类是1,1,0的概率是

P[1|x1]×P[1|x2]×P[0|x3]logP[1|x1]+logP[1|x2]+logP[0|x3]

我们让y=P[1|x],那么对于x1,,xn得到分类结果是r1,,rn的概率是

t=1n(yt)rt(1yt)1rtt=1n(log((yt)rt(1yt)1rt))=t=1n[rtlog(yt)+(1rt)log(1yt)]cross entropy

最后得出的就是交叉熵

而我们的期望是找到w⃗ 来使交叉熵最大,这样等价于找到一个w⃗ 使得交叉熵的相反数最小。

我们可以假设olog0=0

  1. rt=1时,cost=log(yt)
  2. rt=0时,cost=log(1yt)

将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:

cost(x,y)=rtlog(yt)(1rt)log(1yt)

全体样本的损失函数可以表示为:

cost(r⃗ ,y⃗ )=t=1n[rtlog(yt)+(1rt)log(1yt)]

这就是逻辑回归最终的损失函数表达式。

大家可以将y=P[1|x]=11+ewTx+w0带入后进行求导,则可以得到

Ewj=t=1nrtxtt=1n(111+ewTx+w0)xt

大家可以发现,使得上面的导数为0,是无法求出解的,所以只能用梯度下降计算

z=sigmoid(a)dzda=z(1z)wj=(rtyt)Xtj

如果再考虑learning rate就可以了。

原创粉丝点击