python – Lasso – 选择scikit坐标下降的初始点
我的问题在于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) 这是可能的,因为代码inside scikit-learn Lasso implementation包含 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),它为不确定情况下的所有协变量赋予“平等权利”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |