线性回归模型(linear regression)
1.模型定义
给定数据集,T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)=(1,x1,x2,...,xn)T∈X=Rn+1,y(i)∈Y=R,线性回归模型试图学到一个通过属性的线性组合来进行预测的函数,即
f(x)=w1x1+w2x2+...+wnxn+b
一般用向量写成:
f(x)=wT⋅x+b
其中w=(w1,x2,...,wn)T∈Rn,b∈R,使得f(x)≃y。
如何确定w和b呢,显然关键在于如何衡量f(x)与y之间的差别。均方误差是最常用的性能度量,因此我们可以试图让均方误差最小化,即:
w,bminL(w,b)=i=1∑m(f(x(i))−y(i))2
=i=1∑m(wT⋅x(i)+b−y(i))2
均方误差有非常好的几何意义,它对应了常用的欧几里得距离或简称“欧氏距离”(Euclidean distance)。基于均方误差最小化来进行模型求解的方法称为“最小二乘法”(least square method)。在线性回归中,最小二乘法是试图找到一条直线,使得所有样本到直线上的欧氏距离之和最小。
求解w和b,使L(w,b)=i=1∑m(f(x(i))−y(i))2最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。令w0=b,x0=1,则w=(w0,w1,w2,...,wn)T,x=(x0,x1,x2,...,xn)T,原式转换为:
f(x)=wT⋅x
wminL(w)=i=1∑m(wT⋅x(i)−y(i))2
对其求导,可得:
∂wj∂L(w,b)=∂wj∂i=1∑m(wT⋅x(i)−y(i))2
=i=1∑m2(wT⋅x(i)−y(i))xj(i)
得到梯度向量:
∇L(w)=i=1∑m(wT⋅x(i)−y(i))x(i)
假定:
X=⎣⎢⎢⎢⎢⎡(x(1))T(x(2))T(x(3))T...(x(m))T⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎡111...1x1(1)x1(2)x1(3)x1(m)x2(1)x2(2)x2(3)x2(m)............xn(1)xn(2)xn(3)xn(m)⎦⎥⎥⎥⎥⎥⎤,Y=⎣⎢⎢⎢⎢⎡y(1)y(2)y(3)...y(m)⎦⎥⎥⎥⎥⎤,w=⎣⎢⎢⎢⎢⎡w0w1w2...wn⎦⎥⎥⎥⎥⎤
则:
X⋅w=⎣⎢⎢⎢⎢⎢⎡111...1x1(1)x1(2)x1(3)x1(m)x2(1)x2(2)x2(3)x2(m)............xn(1)xn(2)xn(3)xn(m)⎦⎥⎥⎥⎥⎥⎤⋅⎣⎢⎢⎢⎢⎡w0w1w2...wn⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡(x(1))T⋅w(x(2))T⋅w(x(3))T⋅w...(x(m))T⋅w⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡wT⋅x(1)wT⋅x(2)wT⋅x(3)...wT⋅x(m)⎦⎥⎥⎥⎥⎤
X⋅w−Y=⎣⎢⎢⎢⎢⎡wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)⎦⎥⎥⎥⎥⎤
XT⋅(X⋅w−Y)=[x(1)x(2)x(3)...x(m)]⋅⎣⎢⎢⎢⎢⎡wT⋅x(1)−y(1)wT⋅x(2)−y(2)wT⋅x(3)−y(3)...wT⋅x(m)−y(m)⎦⎥⎥⎥⎥⎤
于是得到:
∇L(w)=2XT⋅(X⋅w−Y)
令一方面L(w)也可以表示成:
L(w)=(X⋅w−Y)T⋅(X⋅w−Y)=(wTXTXw−2wTXTY+YTY)
对w求导,同样可以得到梯度。
欲求的最优解,令梯度为0,
∇L(w)=2XT⋅X⋅w−2XT⋅Y=0
则得到:
w=(XT⋅X)−1⋅XT⋅Y
于是最终得到线性模型:
f(x)=wT⋅x=xT⋅(XT⋅X)−1⋅XT⋅Y
令X†=(XT⋅X)−1⋅XT,称为伪逆(seudo-inverse),代入得到。
f(x)=xT⋅X†⋅Y
2.学习算法
2.1 Normal Equations
计算w=(XT⋅X)−1⋅XT⋅Y,直接得到模型f(x)=wT⋅x
但是计算矩阵的逆是非常费时的事情,Xn×mT⋅Xm×n=Zn×n,因此当特征数量比较多时,偏向于用梯度下降法。
2.2 批量梯度下降(Batch Gradient Descent)
输入:训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)∈X=Rn,y(i)∈Y=Rn,i=1,2,...,m,学习率η(0<η⩽1);
输出:w=(w1,w2,...,wn)T和b,模型f(x)=wT⋅x+b
1)将输入的每个x(i)转换成x(i)=(1,x1,x2,...xn),令w0=b,则输出为w=(w0,w1,w2,...,wn)T
2)选取初始w(0)=(w0,w1,w2,...,wn)T
3)计算梯度XT⋅(X⋅w(j)−Y),这里略去系数2,其中w(j)为第j次迭代的结果,则第j+1迭代:
w(j+1)←w(j)−ηXT⋅(X⋅w(j)−Y)
4)转到步骤(3),一直到满足一定条件,或者迭代到足够的次数。
在批量梯度下降算法中,每一步的迭代都需要计算所有样本,当样本数较大时,计算量会很大。
2.3 随机梯度下降(Stochastic Gradient Descent)
将上面的步骤(3)改为:
3) 随机选取某个样本x(i),则:
w(j+1)←w(j)−η((w(j))T⋅x(i)−y(i))x(i)
一直到迭代到足够的次数。