Machine learning PySpark:lasso返回所有非零系数

Machine learning PySpark:lasso返回所有非零系数,machine-learning,pyspark,logistic-regression,Machine Learning,Pyspark,Logistic Regression,在将我的数据拆分为培训和测试后,我的培训数据有大约3300万条记录。我有77个特性和一个二进制响应。我用套索拟合逻辑回归。但是,lasso为所有列返回非零的系数值。我探索了特征之间的相关性,其中一些特征的相关性高达0.8和0.7。假设我有很多特征(77),并且这些特征是相关的,我希望lasso能够过滤掉至少一些特征。为什么没有发生这种情况?我无法共享数据,因为它的大小和隐私。但我使用的代码如下。我在寻找可能发生的事情和需要探索的东西 logreg = LogisticRegression(max

在将我的数据拆分为培训和测试后,我的培训数据有大约3300万条记录。我有77个特性和一个二进制响应。我用套索拟合逻辑回归。但是,lasso为所有列返回非零的系数值。我探索了特征之间的相关性,其中一些特征的相关性高达0.8和0.7。假设我有很多特征(77),并且这些特征是相关的,我希望lasso能够过滤掉至少一些特征。为什么没有发生这种情况?我无法共享数据,因为它的大小和隐私。但我使用的代码如下。我在寻找可能发生的事情和需要探索的东西

logreg = LogisticRegression(maxIter = 200, featuresCol = "features", 
                 labelCol = 'label', standardization = True, elasticNetParam = 1)
paramGrid_logreg = ParamGridBuilder().addGrid(logreg.regParam, np.linspace(0.0, 1, 11)).build()
crossval_logreg = CrossValidator(estimator = logreg, 
                                 estimatorParamMaps = paramGrid_logreg, 
                                 evaluator = BinaryClassificationEvaluator(), 
                                 numFolds = 10) 
cvModel_logreg = crossval_logreg.fit(train_df)
现在,系数如下所示:

cvModel_logreg.bestModel.coefficients
登革者([0.0022, -0.0216, -0.0261, -0.0018, 0.0014, -0.0012, -0.0006, 0.0023, -0.0024, -0.0003, -0.0114, 0.0003, 0.0, -0.0018, -0.0163, -0.0009, -0.0022, 0.0009, -0.0017, 0.0005, -0.0024, 0.0006, -0.0025, 0.0015, -0.0025, 0.0007, -0.002, 0.0002, 0.0007, 0.0002, -0.0025, 0.0008, -0.0012, -0.0001, -0.0017, 0.0002, 0.0026, -0.0002, -0.0019, 0.0003, -0.0017, 0.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0、0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0056,0.0451])


交叉验证cvmodel_logreg_lasso4.bestModel.\u java_obj.getRegParam()产生的regParam的优化值是多少给出0.0这意味着零套索惩罚。如果你想要更少数量的变量,那么你必须有一些惩罚,但是CV说最好的模型是零惩罚的。分析CV结果并决定。交叉验证CVModel_logreg_lasso4.bestModel.的regParam优化值是多少。\u java_obj.getRegParam()给出0.0这意味着零套索惩罚。如果你想要更少数量的变量,那么你必须有一些惩罚,但CV说最好的模型是零惩罚。分析CV结果并决定。