pyspark 2.2.0 逻辑回归模型中raw predictions字段的概念

我试图理解Pyspark中逻辑回归模型生成的输出概念。

能否请有人解释一下逻辑回归模型生成的rawPrediction字段计算背后的概念?谢谢。


回答:

在早期版本的Spark javadocs(例如1.5.x版本)中,有如下解释:

“raw”预测的含义可能因算法而异,但直观上它给出了对每个可能标签的信心度量(其中较大值表示更有信心)。

在后来的版本中这一解释已不存在,但你仍然可以在Scala 源代码中找到它。

无论如何,撇开任何不恰当的措辞不谈,Spark ML中逻辑回归情况下的rawPrecictions,在其他地方被称为logits,即逻辑回归分类器的原始输出,之后通过逻辑函数 exp(x)/(1+exp(x))转换为概率分数。

这是一个使用玩具数据的示例:

spark.version# u'2.2.0'from pyspark.ml.classification import LogisticRegressionfrom pyspark.ml.linalg import Vectorsfrom pyspark.sql import Rowdf = sqlContext.createDataFrame([     (0.0, Vectors.dense(0.0, 1.0)),     (1.0, Vectors.dense(1.0, 0.0))],      ["label", "features"])df.show()# +-----+---------+# |label| features|# +-----+---------+# |  0.0|[0.0,1.0]|# |  1.0|[1.0,0.0]|# +-----+---------+lr = LogisticRegression(maxIter=5, regParam=0.01, labelCol="label")lr_model = lr.fit(df)test = sc.parallelize([Row(features=Vectors.dense(0.2, 0.5)),                       Row(features=Vectors.dense(0.5, 0.2))]).toDF()lr_result = lr_model.transform(test)lr_result.show(truncate=False)

这是结果:

+---------+----------------------------------------+----------------------------------------+----------+ |features |                          rawPrediction |                            probability |prediction|+---------+----------------------------------------+----------------------------------------+----------+ |[0.2,0.5]|[0.9894187891647654,-0.9894187891647654]|[0.7289731070426124,0.27102689295738763]|      0.0 ||[0.5,0.2]|[-0.9894187891647683,0.9894187891647683]|[0.2710268929573871,0.728973107042613]  |      1.0 | +---------+----------------------------------------+----------------------------------------+----------+

现在让我们确认rawPrediction的逻辑函数确实给出了probability列:

import numpy as npx1 = np.array([0.9894187891647654,-0.9894187891647654])np.exp(x1)/(1+np.exp(x1))# array([ 0.72897311, 0.27102689])x2 = np.array([-0.9894187891647683,0.9894187891647683])np.exp(x2)/(1+np.exp(x2))# array([ 0.27102689, 0.72897311])

即,确实如此


因此,总结关于所有三个(3)输出列的情况:

  • rawPrediction是逻辑回归分类器的原始输出(数组长度等于类别数)
  • probability是将逻辑函数应用于rawPrediction的结果(数组长度与rawPrediction相同)
  • predictionprobability数组达到最大值的参数,它给出最可能的标签(单个数字)

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注