监督学习——应用Lasso回归和ridge回归
降低过拟合的一个常见方法为正则化,它通过在成本函数中添加一个独立于特征值之外的额外限制来避免过拟合。
两个最常用的正则化项如下:
- L1正则化:该方法在评分函数上添加一个与所有权重绝对值的和成比例的元素,基于权重向量的L1范数(也称曼哈顿距离)。由于曼哈顿的街道是网状布局,L1范数类似于测量一个纽约出租车从A 点向B点所需的距离。对应的算法叫作Lasso回归。
- L2正则化:该方法在评分函数上添加一个与所有权重平方和成比例的元素,基于权重向量的L2范数(也称欧式距离)。L2范数包含了一个平方操作,所以它对那些权重向量中较大的离群值的惩罚力度比L1范数的惩罚力度更大。对应的算法叫作ridge回归。
以上一个例子——“使用线性回归预测波士顿房价”为基础,在“训练模型”步骤中,将定义一个线性回归模型此行代码进行更新替换,来实现Lasso回归和ridge回归。
linreg = linear_model.LinearRegression() #定义一个线性回归模型
对于Lasso回归算法,使用下面的命令来进行替换:
lassoreg = linear_model.Lasso() #Lasso回归
对于ridge回归算法,使用下面的命令来进行替换:
ridgereg = linear_model.Ridge() #ridge回归
请大家尝试一下在波士顿数据集上用这两个算法代替传统线性回归算法来进行测试,观察其泛化误差以及预测的模型拟合度图会有如何变化。
(获取Lasso回归和ridge回归两个算法的完整代码,可关注“HappyWin数学建模”公众号)
参考书籍:《机器学习:使用OpenCV和Python进行智能图像处理》