gpt4 book ai didi

python - 套索 - 选择 scikit 坐标下降的初始点

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:32 26 4
gpt4 key购买 nike

我的问题关于 scikit 中的套索非常笼统:

我正在使用 Lasso 进行回归,以将一定数量的点 y_i 拟合到特征 x_i。点数 n 严格低于特征的维数 p

因此对于给定的惩罚 alpha 系数存在多种解决方案。

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),它在不确定的情况下赋予所有协变量“平等的权利”。

关于python - 套索 - 选择 scikit 坐标下降的初始点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com