apache-spark - 在多项逻辑回归中解释系数矩阵、截距向量和混淆矩阵
问题描述
任何人都可以解释如何解释coefficientMatrix
,,interceptVector
Confusion matrix
一个multinomial logistic regression
。
根据 Spark 文档:
通过多项逻辑 (softmax) 回归支持多类分类。在多项逻辑回归中,该算法生成 K 组系数,或维度为 K×J 的矩阵,其中 K 是结果类的数量,J 是特征的数量。如果算法适合截距项,则长度为 K 的截距向量可用。
我使用 spark ml 2.3.0 翻了一个例子,得到了这个结果。
如果我分析我得到的:
的coefficientMatrix
尺寸为5 * 11
的interceptVector
尺寸为5
如果是这样,为什么 the Confusion matrix
有一个维度4 * 4
?
另外,任何人都可以解释coefficientMatrix
,interceptVector
吗?
为什么我得到负系数?
如果 5 是分类后的类数,为什么我得到 4 行the confusion matrix
?
编辑
我忘了提到我仍然是机器学习的初学者,我在谷歌上的搜索没有帮助,所以也许我得到了赞成票:)
解决方案
关于 4x4 混淆矩阵:我想当您将数据拆分为测试和训练时,您的训练集中有 5 个类,而测试集中只有 4 个类。如果响应变量的分布不平衡,这很容易发生。
在建模之前,您需要尝试在测试和训练之间进行一些分层拆分。如果您正在使用 pyspark,您可能会发现此库很有帮助:https ://github.com/databricks/spark-sklearn
现在关于多类 Logistic 回归的负系数:正如您所提到的,您返回的 coefficientMatrix 形状是 5x11。Spark 通过一对多的方法生成了五个模型。第一个模型对应于正类是第一个标签的模型,负类是由所有其他标签组成的。假设这个模型的第一个系数是-2.23。为了解释这个系数,我们采用 -2.23 的指数,即(大约)0.10。此处的解释:“随着第一个特征增加一个单位,我们预计正面标签的几率会降低 90%”
推荐阅读
- java - Spring RequestScope bean 未按预期工作
- javascript - React 可拖动的 Laggy
- excel - 用 If OR 语句替换 #N/A
- c++ - 您可以从 std::transform_reduce 中的变换步骤修改临时中间值吗?
- kotlin - 如何在 Kotlin 的函数类型中接收 null 作为参数
- javascript - 有没有更优雅的方法可以使用 array.map 在 NodeJS 中解决这个问题?
- typescript - Flickity 渲染重复的幻灯片,直到 Inspector 关闭或打开
- c++ - 为什么 std::all_of() 的编码版本与对 std::all_of() 的调用不同?
- javascript - auth0 loginWithRedirect() 不同提供者的不同范围
- python - Python Selenium 等待不起作用/Java Selenium 问题