先引出机器学习万变不离其宗的公式:
损失函数+惩罚项
当损失函数为Square Loss时,所对应的模型就是Linear Regression。
预测值
ŷ (w,x)=w0+w1x1+…+wnxn=wTx
Ordinary Least Square
目标: min||Xw−y||22
优点:无偏估计
缺点:存在ill-condition病态问题,容易发生过拟合
求解方式:
(1)迭代法(这里的θ对应上面的w)
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2
where
hθ=θTx=θ0+θ1x1
In batch gradient descent, each iteration performs the update
θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))x(i)j
其中α所乘的项为▽J(θ),−▽J(θ)称为下降方向
这里采用的方法是最速下降法,α称为学习率,太小则学习过慢,太大则容易过学习。[1]
- α
尝试法,取0.003,0.01,0.03,0.1,0.3,观察J(θ)的曲线下降情况
利用精确搜索(Fibonacci法、黄金分割法和二次插值法)或者不精确法(Wolfe算法)求解[2]
- 注意点
在用OLS中,遇到变量之间的尺度不同的时候,要用Feature Normalization方法,具体做法如下:
a. Subtract the mean value of each feature from the dataset.
b. After subtracting the mean, additionally scale (divide) the feature values by their respective “standard deviations.”[1]
(2)Normal Equations
对于线性回归而言,是有解析解的,即
w=(XTX)−1XTy
随着样本的数量和变量的种类的增加,计算量也随之增大。[1]
Ridge Regression
目标: min||Xw−y||22+λ||w||22
优点:解决了multicolinearity
缺点:无法做validable selection,有偏估计
OLS虽然是无偏估计,但是有一个很大的问题,就是会依赖于训练数据而发生过拟合。(也可以从ill-condition角度上理解[3])
当w=(XTX)−1XTy中XTX不是满秩的时候,XTX不可逆,会存在多个解,如果从许多个解中选取一个的话,可能不是正确的解,容易发生过拟合。
XTX不是满秩的情况分为两种(1)数据点少于变量的个数(行不满秩) (2)变量间存在高度的相关性(列不满秩)
当加上了L2规则项后,w=(XTX)−1XTy变成了w=(XTX+λI)−1XTy,就可以直接求逆矩阵了。
- λ的选取
(1)根据岭迹图选取,在各个变量随λ达到平稳时的λ
(2)用GCV(Generalized Cross-Validation)来设置
Lasso
目标: min||Xw−y||22+λ||w||1
优点:可以做validable selection
缺点:不连续,无解析解,不能做group lasso
先来看看正则化项的轮廓。
目标函数
min||Xw−y||22+λ||w||1
与
min||Xw−y||22
s.t.||w||1≤t
可以通过Lagrange multipliers相联起来[4](Ridge Regression 同)。
可以得到下列图。
图上蓝色表示变量为2个时的损失函数等高线,越接近中心则损失值越小,黄色表示变量的约束范围。左图是L2范数约束,右图是L1范数约束。圆周/菱形边与等高线的交点为在约束下损失最小的w1和w2值,可以看到右图的w1=0,即将变量降到1个变量。这是因为L2范数倾向于w的分量取值尽量均衡,即非零分量个数尽量稠密,而L0范数和L1范数则倾向于w的分量尽量稀疏,即非零分量个数尽可能少[5]。
Lasso是一种嵌入式特征选择方法
- L1的求解:PGD (Proximal Gradient Descent)
[1] Andrew Ng, Machine Learning course https://www.coursera.org/learn/machine-learning/
[2] 谢可新《最优化方法》
[3] 机器学习中的范数规则化之(一)L0、L1与L2范数
[4] M.Jordan 《Pattern Recognition and Machine Learning》
[5] 周志华 《机器学习》