线性回归
线性回归用于回归问题,在sklearn中LinearRegression表示没有正则项的普通的线性回归,一般很少使用,使用较多的是Ridge(RidgeCV),Lasso(LassoCV)和ElasticNet(ElasticNetCV)。下面分别介绍。
1.Ridge(RidgeCV)
Ridge中加入了L2范数的正则项,需要调参的参数是平衡均方误差的alpha,在sklearn中Ridge回归的求解方法是最小二乘法。
RidgeCV与Ridge的区别在于可以用到交叉验证的方法,只需提供一组alpha的取值,RidgeCV会自动选出其中最合适的alpha。也可以使用网格搜索找到最优的alpha
使用场景:当需要正则化时,考虑。
from sklearn.linear_model import RidgeCV
alphas=np.logspace(-4,-2,10) #得到有10个取值的等比数列,范围是[10^-4,10^-2]
rigecv= RidgeCV(alphas=alphas,cv=5) #进行交叉验证,选出最优的
print(rigecv.alpha_) #输出最优的alpha值
print(rigecv.coef_) #输出各个特征对应的系数
2.Lasso(LassoCV)
Lasso中加入了L1范数的正则项,调参也是alpha,在sklearn中使用坐标轴下降法。调用方法与Ridge回归一样。
使用场景:①特征维度很高,而且是稀疏线性关系②需要进行特征选择。
3.ElasticNet(ElasticNetCV)
损失函数:$$1 / (2 n_samples) ||y - Xw||^2_2
- alpha l1_ratio ||w||_1
- 0.5 alpha (1 - l1_ratio) * ||w||^2_2$$
利用l1_ration来平衡L1和L2正则化的比重,alpha仍然是正则化超参数。总共有两个需要调优的参数:alpha和l1_ration