线性回归

线性回归用于回归问题,在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

results matching ""

    No results matching ""