gpt4 book ai didi

python - Statsmodels 的 Logit.fit_regularized 永远运行

转载 作者:行者123 更新时间:2023-12-01 08:50:09 33 4
gpt4 key购买 nike

最近我一直在尝试对矢量化文本数据进行正则化 Logistic 回归。我首先尝试使用 sklearn,没有任何问题,但后来我发现我无法通过 sklearn 进行推理,所以我尝试切换到 statsmodels。问题是,当我尝试适应 logit 时,它会永远运行并使用大约 95% 的 RAM(在 8GB 和 16GB RAM 计算机上都尝试过)。

我的第一个猜测是它与维度有关,因为我正在使用 2960 x 43k 矩阵。因此,为了减少它,我删除了二元组并仅采集了 100 个观察值的样本,这留下了一个 100 x 6984 的矩阵,我认为这应该不会有太大问题。

这是我的代码的一个小示例:

for train_index, test_index in sss.split(df_modelo.Cuerpo, df_modelo.Dummy_genero):

X_train, X_test = df_modelo.Cuerpo[train_index], df_modelo.Cuerpo[test_index]
y_train, y_test = df_modelo.Dummy_genero[train_index], df_modelo.Dummy_genero[test_index]


cvectorizer=CountVectorizer(max_df=0.97, min_df=3, ngram_range=(1,1) )
vec=cvectorizer.fit(X_train)
X_train_vectorized = vec.transform(X_train)

这为我提供了一个火车和一个测试集,然后对来自 X_train 的文本进行矢量化。然后我尝试:

import statsmodels.api as sm

logit=sm.Logit(y_train.values,X_train_vectorized.todense())
result=logit.fit_regularized(method='l1')

一切正常,直到 result 行为止,该行将永远运行。有什么我可以做的吗?如果我正在寻找统计推断,我应该切换到 R 吗?

提前致谢!

最佳答案

几乎所有的统计模型和所有的推理都是为观察数量远大于特征数量的情况而设计的。

Logit.fit_regularized 使用带有 scipy 优化器的内点算法,需要将所有特征保留在内存中。参数的推断需要参数估计的协方差,其形状为 n_features × n_features。它设计的用例是当特征数量与观察数量相比相对较小时,并且 Hessian 可以在内存中使用。

GLM.fit_regularized 估计弹性净惩罚参数并使用坐标下降。这可能可以处理大量特征,但没有任何可用的推理结果。

Lasso 后的推断和选择变量的类似惩罚仅在最近的研究中可用。例如,参见 Python 中的选择性推理 https://github.com/selective-inference/Python-software还可以使用 R 包。

关于python - Statsmodels 的 Logit.fit_regularized 永远运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53160083/

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