python 用lasso进行变量选择_python – Lasso – 选择scikit坐标下降的初始点

在scikit-learn中使用Lasso进行回归时,初始系数的选择会影响结果。默认使用零系数作为起点,但可以通过设置`warm_start=True`并自定义`coef_`属性来改变初始点。对于非唯一解的情况,如退化设计矩阵,Lasso解决方案是一系列连续的最优解。LARS算法可以用于处理这种情况,它平等地对待所有特征。
摘要由CSDN通过智能技术生成

我的问题在于scikit中的Lasso非常普遍:

我正在使用Lasso进行回归,以便为特征x_i拟合一定数量的点y_i.点数n严格地低于特征的尺寸p.

因此,存在针对给定惩罚α系数的若干解决方案.

scikit给出的解决方案取决于起点(它是d个零系数的向量).

除了修改库之外,您是否知道另一个库可以自由选择起点?

或者也许有一个明显的选择我错过scikit选择起点?

解决方法:

可以在scikit-learn中设置Lasso的初始点.

但是可能存在一组无限的同样好的解决方案,以发现您需要一些先进的二次编程方法

要设置初始点,只需使用warm_start = True初始化模型并设置其coef_属性.

像这样:

from sklearn.linear_model import Lasso

model = Lasso(warm_start=True)

model.coef_ = manual_initial_coef

model.fit(X, y)

if not self.warm_start or not hasattr(self, "coef_"):

coef_ = np.zeros((n_targets, n_features), dtype=X.dtype,

order='F')

else:

coef_ = self.coef_

if coef_.ndim == 1:

coef_ = coef_[np.newaxis, :]

但是,在我看来,默认初始系数(零)对于大多数问题是最好的.实际上,当你使用套索时,你通常会认为它的最终系数大部分为零 – 为什么不从全零开始呢?

在退化设计矩阵的情况下,Lasso解决方案确实是非独特的.但是不能有多个不相交的局部最优(如在神经网络中),因为成本函数仍然(非严格地)凸.相反,可能存在一组连续(也是凸起)的同样好的解决方案.这种模糊性的最简单的情况是当x由两个相同的列组成时:系数(beta,0),(0,beta)$,并且它们的所有凸组合都做得很好.

如果是这种情况,从多个随机点简单重新启动将无法为您提供整套解决方案.相反,您需要使用special techniques以某种方式定义其角(极端)点,或以某种方式定义此集合中的“最佳”解决方案.定义唯一“最佳”解决方案的一种方法是LARS algorithm(sklearn.linear_model.Lars),它为不确定情况下的所有协变量赋予“平等权利”.

标签:python,graph,scikit-learn

来源: https://codeday.me/bug/20190708/1403368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值