线性回归
给定一组数据集
={(x1,y1),(x2,y2),(x3,y3)......(xn,yn)}
,其中
y∈R
。我们现在需要找到一个函数来拟合该数据集。函数是线性的时候,可以表示为:
f(x)=WTX+b
要拟合这样一条直线,我们的损失函数定义为:
L=∑i=1n(f(xi)−yi)2=∑i=1n(wxi+b−yi)2
我们现在求出使得损失函数最小的w和b。对于这个问题,基本没有任何难度了。直接求导就完事儿了。
∂L∂w=2∗(∑i=1n(wxi+b−yi)∗xi)=2∗(w∑i=1nx2i+∑i=1nxi(b−yi))
∂L∂b=2∗∑i=1n(wxi+b−yi)=2∗(nb+∑i=1nxi(w−yi))
令其为0即可求得。结果就不说了,大家可以自行去解。
最后拟合成这样一条线:
逻辑回归
逻辑回归可以看做是线性回归的扩展,因为线性回归是要将
WTX+b
映射成一个数值,而在逻辑回归中我们将其映射成
lny1−y
。即是说:
y=11+e−(wx+b),这个时候我们的线性模型是逼近lny1−y
为啥要逼近这个值呢?我们知道逻辑回归中标记 y∈{1,0} ,而线性回归中得到的数据是: wTx+b 这是一个实数,如何转变成0和1呢,采用最常见的对数几率函数, y=11+e−z 如下图:
为啥不用单位越阶函数呢,因为不可导呀。最后其实我们就是想通过线性回归 wTx+b 转换得到0或者1,通过对数几率函数可以实现,就得到了:
y=11+e−(wx+b)
即:
lny1−y=wTx+b
y其实可以看做概率,得到:
P(y=1|x)P(y=0|x)=wTx+b
则:
P(y=1|x)=ewTx+b1+ewTx+b
P(y=0|x)=11+ewTx+b
对于概率类的东西,第一个想到的是最大似然法,所以我们的损失函数是负的最大似然。
L=−∏i=1nP(yi|xi;w,b)
要使得损失函数最小,两边取对数,得到:
lnL=−∑i=1nlnP(yi|xi;w,b)
最小化:
−∑i=1n(yi∗P(yi=1|xi;w,b)+(1−yi)∗P(yi=0|xi;w,b))
这没有办法采用求导的方式,只能采用优化的方法,比如梯度下降或者牛顿法之类。
鄙人写的,程序实现可以参考:
http://blog.csdn.net/cqy_chen/article/details/64479457