首页 > 解决方案 > Pyspark / SparkML 中没有 GLM 的模型摘要

问题描述

我正在熟悉PysparkSparkML目前。为此,我使用 Titanic 数据集来训练 GLM 以预测该数据集中的“票价”。

我正在密切关注 Spark 文档。我确实得到了一个工作模型(我称之为glm_fare),但是当我尝试使用评估训练模型时,summary我收到以下错误消息:

RuntimeError:没有可用于此 GeneralizedLinearRegressionModel 的训练摘要

为什么是这样?

训练的代码是这样的:

glm_fare = GeneralizedLinearRegression(
            labelCol="Fare", 
            featuresCol="features", 
            predictionCol='prediction',
            family='gamma',
            link='log',
            weightCol='wght',
            maxIter=20
            )
    glm_fit = glm_fare.fit(training_df)

    glm_fit.summary

标签: pysparkapache-spark-ml

解决方案


万一有人遇到这个问题,我也遇到了这个问题,似乎当 Hessian 矩阵不可逆时会发生此错误。该矩阵用于最大化估计系数的可能性。

如果特征值之一为 0,则矩阵不可逆,这发生在变量中存在多重共线性时。这意味着可以使用其他变量的线性组合来预测其中一个变量。因此,无法确定每个变量的影响具有任何意义。

一种可能的解决方案是找到(多)共线性的变量,并从回归中删除其中一个。但是请注意,多重共线性仅在您想解释系数时才是一个问题,而不是在模型用于预测时。


推荐阅读