在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[(r−g(xi))2|xi] = = E[(r−E[r|xi])2|xi]noise−(E[r|xi]−g(xi))2square error=biasE[(r−f(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。
设计算法:
- 当第一个输入的样例(x′,r′)中x′>10,则让g(x)=1。
- 否则。让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]=1−y
我们假设可以假设P[+|x]>P[−|x]。
y>1−y⇒y1−y>1⇒log[y1−y]>0
那么我们就考虑函数f(x)=log(y1−y)。
我们让z=log(y1−y)⇒y=11+e−z,
同时我们让wdxd+⋯+w1x1+w0=z,可以得到
P[+|x]=11+e−wTx+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(1−yt)1−rt⇒∑t=1n(log((yt)rt(1−yt)1−rt))=∑t=1n[rtlog(yt)+(1−rt)log(1−yt)]→cross entropy
最后得出的就是交叉熵
而我们的期望是找到w⃗ 来使交叉熵最大,这样等价于找到一个w⃗ 使得交叉熵的相反数最小。
我们可以假设olog0=0。
- 当rt=1时,cost=−log(yt)
- 当rt=0时,cost=−log(1−yt)
将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:
cost(x,y)=−rtlog(yt)−(1−rt)log(1−yt)
全体样本的损失函数可以表示为:
cost(r⃗ ,y⃗ )=∑t=1n[rtlog(yt)+(1−rt)log(1−yt)]
这就是逻辑回归最终的损失函数表达式。
大家可以将y=P[1|x]=11+e−wTx+w0带入后进行求导,则可以得到
∂E∂wj=∑t=1nrtxt−∑t=1n(1−11+e−wTx+w0)xt
大家可以发现,使得上面的导数为0,是无法求出解的,所以只能用梯度下降计算
z=sigmoid(a)⇒dzda=z(1−z)⇒∂∂wj=−(rt−yt)∑Xtj
如果再考虑learning rate就可以了。