Logistic Regression的思考与整理

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

关于回归算法的Bias和Variance

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

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

我们将 f(x) g(x) 当成一个连续函数,那么对于特定的 xi r 表示输入数据在该点的值,且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) 就变成了一个随机变量了。

现在考虑一个长度为 N x⃗ 随机样本,我们希望 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

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

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

那么当我们用五次函数去训练分类的时候,我们可以明显地发现,对于特定的 xi g(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就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值