线性回归(Linear Regression)
理论实现
最简单的想法是
y≈i=0∑dwixi
线性回归的假设函数为: h(x)=wTx。类似于 perceptron 只是没有 sign 函数。
线性回归的目的是找到一个方差最小的超平面(线条),所以误差检测使用流行的方差(squared error)
err(y~,y)=(y~−y)2
in-sample / out-of-sample 误差为:
Ein(w)=N1n=1∑N(wTxnh(xn)−yn)2Eout (w)=(x,y)∼PE(wTx−y)2
为了表示方便写出 in-sample 误差 Ein(w) 的矩阵形式:
Ein(w)=N1n=1∑N(wTxn−yn)2=N1n=1∑N(xnTw−yn)2=N1∥∥∥∥∥∥∥∥x1Tw−y1x2Tw−y2⋯xNTw−yN∥∥∥∥∥∥∥∥2=N1∥∥∥∥∥∥∥∥⎣⎢⎢⎡−−x1T−−−−x2T−−⋯−−xNT−−⎦⎥⎥⎤w−⎣⎢⎢⎡y1y2⋯yN⎦⎥⎥⎤∥∥∥∥∥∥∥∥2=N1∥N×d+1Xd+1×1w−N×1y∥2
那现在的任务便是
wminEin(w)=N1∥Xw−y∥2
此时的 Ein(w) 曲线如下:
由公式和图形可知 Ein(w) 是连续(continuous),可微(differentiable),凸(convex)的。那么最小化 Ein(w) 的必要条件(necessary condition)是:
∇Ein (w)≡⎣⎢⎢⎡∂w0∂Ein (w)∂w1∂Ein (w)⋯∂wd∂Ein (w)⎦⎥⎥⎤=⎣⎢⎢⎡00⋯0⎦⎥⎥⎤
那么现在的任务便是找出wLIN 使得 ∇Ein (wLIN)=0。
矩阵形式的多项式展开为:
Ein(w)=N1∥Xw−y∥2=N1(wTXTXw−2wTXTy+yTy)
所以其矩阵求导结果为(可类比于非向量形式):
∇Ein (w)=N2(XTXw−XTy)
那么现在令其为零可求得:
wLIN=X†y
其中 † 代表伪逆,当XTX非奇异时也可使用 wLIN=(XTX)−1Xy 求得。
总结一下Linear Regression算法的实现步骤为:
- 通过数据集,获取输入矩阵(input matrix)和输出向量(output vector)
X=N×(d+1)⎣⎢⎢⎡−−x1T−−−−x2T−−⋯−−xNT−−⎦⎥⎥⎤y=N×1⎣⎢⎢⎡y1y2⋯yN⎦⎥⎥⎤
- 计算伪逆 (pseudo-inverse)(d+1)×NX†
- return d+1×1wLIN=X†y
Hat Matrix 的几何视角
下面公式的意义为对于服从统一分布的数据,经过多次抽取后训练误差的平均 Ein ,而其大概长下面这个样子是
Ein =D∼PNE{Ein (wLIN w.r.t. D)}=noise level⋅(1−Nd+1)
Ein(wLIN)=N1∥y−predictions y^∥2=N1∥y−XWLINX†y∥2=N1∥(identityI−XWLINX†)y∥2
这里叫 XX† 为 hat matrix H。
经过上述推导,可以得出 y^=XwLIN ,即 y^ 是 xn 的线性组合,也是由 xn 展开的空间中的一个向量;同时由于 y 是独立于该空间外的一个向量,同时由于 y−y^ 最小,那么 y−y^ 必然垂直于该空间。进而可以得出 y^ 是 y 在该空间上的一个投影,而投影矩阵便是 H。所以 I−H 也可以看作 y 向 y−y^ 映射的投影矩阵。
可以推导得 trace(I−H)=N−(d+1),不详细解释。物理意义是将一个N维向量向d+1维空间做投影时,其余数的*度最多有只有N−(d+1)。
那么 noise 向量向该空间内投影后取余仍然是 (I−H)noise=y−y^ ,即:
Ein (wLIN)=N1∥y−y^∥2=N1∥(I−H) noise ∥2=N1(N−(d+1))∥noise∥2=N1(N−(d+1))σ2
经过理论推导可以得出(这里不详细推导):
EinEout=(1−Nd+1)σ2=(1+Nd+1)σ2
将两者绘制出随数据量增加的变化曲线如下:
可以看出当 N→inf 时,两者均收敛,且两者之差为 N2(d+1)。类似于 VC bound。
线性回归(Linear Regression)→分类(Classification)
由于 Linear Classification 是一种 NP-Hard 问题,那可以将回归的解决方法用于分类吗?
先对比一下两者的误差测量函数:
err0/1=∥∥sign(wTx)=y∥∥ err sqr=(wTx−y)2
绘制出曲线如下:
可见err0/1<errsqr,所以可以得出:
classification Eout(w)≤classification Ein(w)+⋯⋯≤regression Ein(w)+⋯⋯
所以说如果回归误差作为上限很小,那么分类误差也会很小。所以线性回归可以用于分类。
由于存在误差所以可以将wLIN作为 PLA/Pocket 算法的初始(基础)向量。