LinearRegression,RidgeCV,LassoCV

作者: 不爱去冒险的少年y | 来源:发表于2018-06-06 16:55 被阅读4次

LinearRegression,RidgeCV,LassoCV,ElasticNetCV各自使用场景

概念:

      #线性回归的目的是要得到输出向量Y和输入特征X之间的线性关系,求出线性回归系数θ,也就是Y=Xθ,  其中Y的维度为m x 1,X的维度为 m x n,而θ的维度为 n x 1,    m代表样本个数,   n代表样本特征的维度  

       #损失函数:损失函数是用来评价模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数 通常用L(Y,f(x))表示,损失函数越小,模型的性能就越好  ,优化方法:最小二乘法和梯度下降(scikit中采用最小二乘  )

        #正则化项:为了防止损失函数过拟合的问题,一般会在损失函数中加上正则化项,增加模型的泛化能力  

使用场景:

        LinearRegression:只要数据线性相关,LinearRegression是我们的首选,如果发现拟合或者预测的不够好,再考虑其他的线性回归库 

Pipeline([  
                    ('poly', PolynomialFeatures()),  
                    ('linear', LinearRegression(fit_intercept=False))
                ])

LinearRegression 损失函数

        RidgeCV(岭回归):只要数据线性相关,用LinearRegression拟合的不是很好,需要正则化,可以考虑使用RidgeCV回归, 如何输入特征的维度很高,而且是稀疏线性关系的话, RidgeCV就不太合适,考虑使用Lasso回归类家族 

a为超参数 alphas=np.logspace(-3, 2, 50) 从给定的超参数a中选择一个最优的,logspace用于创建等比数列 本例中 开始点为10的-3次幂,结束点10的2次幂,元素个数为  
50,并且从这50个数中选择一个最优的超参数  
linspace创建等差数列  
Ridge回归中超参数a和回归系数θ的关系,a越大,正则项惩罚的就越厉害,得到的回归系数θ就越小,最终趋近与0  
如果a越小,即正则化项越小,那么回归系数θ就越来越接近于普通的线性回归系数  

Pipeline([
                    ('Poly', PolynomialFeatures()),
                    ('Linear', RidgeCV(alphas= np.logspace(-3, 2, 50), fit_intercept=False))
                ]),

 RidgeCV(岭回归)损失函数

        LassoCV:Lasso回归可以使得一些特征的系数变小,甚至还使一些绝对值较小的系数直接变为0,从而增强模型的泛化能力  
        使用场景:对于高纬的特征数据,尤其是线性关系是稀疏的,就采用Lasso回归,或者是要在一堆特征里面找出主要的特征,那么  Lasso回归更是首选了  

a为超参数 alphas=np.logspace(-3, 2, 50) 从给定的超参数a中选择一个最优的,logspace用于创建等比数列 本例中 开始点为10的-3次幂,结束点10的2次幂,元素个数为  
50,并且从这50个数中选择一个最优的超参数  
linspace创建等差数列  
Ridge回归中超参数a和回归系数θ的关系,a越大,正则项惩罚的就越厉害,得到的回归系数θ就越小,最终趋近与0  
如果a越小,即正则化项越小,那么回归系数θ就越来越接近于普通的线性回归系数  

Pipeline([
                    ('Poly', PolynomialFeatures()),
                    ('Linear', LassoCV(alphas=np.logspace(-3,2,50), fit_intercept=False))
            ]),

LassoCV 损失函数

        ElasticNetCV:对超参数a和p使用交叉验证,帮助我们选择合适的a和p  
        使用场景:ElasticNetCV类在我们发现用Lasso回归太过(太多特征被稀疏为0),而Ridge回归也正则化的不够(回归系数衰减太慢)的时候  

alphas=np.logspace(-3, 2, 50), l1_ratio=[.1, .5, .7, .95,  1] ElasticNetCV会从中选出最优的 a和p  

Pipeline([
                    ('Poly', PolynomialFeatures()),
                    ('Linear', ElasticNetCV(alphas= np.logspace(-3, 2, 50), l1_ratio=[.1, .5, .7, .95, 1], fit_intercept=False))
            ])    

ElasticNetCV 损失函数

相关文章

网友评论

    本文标题:LinearRegression,RidgeCV,LassoCV

    本文链接:https://www.haomeiwen.com/subject/uiobsftx.html