scala - 在 Spark 线性回归中获取协方差矩阵

标签 scala apache-spark linear-regression apache-spark-mllib covariance

我一直在查看 Spark 的文档,但在进行线性回归后仍然找不到如何获得协方差矩阵。

给定输入训练数据,我做了一个非常简单的线性回归,类似于 this :

val lr = new LinearRegression()
val fit = lr.fit(training)

获取回归参数就像 fit.coefficients 一样简单但似乎没有关于如何获得协方差矩阵的信息。

为了澄清,我正在寻找类似于 vcov 的功能在 R 中。有了这个,我应该可以做类似 vcov(fit) 的事情。得到协方差矩阵。可以帮助实现这一目标的任何其他方法也可以。

编辑

详细讨论了如何从线性回归中获取协方差矩阵 here .标准偏差很容易得到,因为它由 fit.summary.meanSsquaredError 提供.但是,参数 (X'X)-1 很难获得。看看这是否可以用来以某种方式计算协方差矩阵会很有趣。

最佳答案

虽然整个协方差矩阵是 收藏 driver ,如果不制作自己的求解器,就不可能获得它。您可以通过复制 WLS 来做到这一点。并设置额外的“ setter/getter ”。

无需深入研究代码即可获得的最接近的信息是 lrModel.summary.coefficientStandardErrorsbased在倒置的对角线上 matrix (A^T * W * A) 即 based在上三角矩阵(协方差)上。

我认为这还不够,所以对此感到抱歉。

关于scala - 在 Spark 线性回归中获取协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48200844/

相关文章:

mongodb - ReactiveMongo:使用游标[BSONObjectID]查找查询

apache-spark - 为 impala 表无缝覆盖底层 parquet 数据

R从model.frame中恢复原始data.frame

python-3.x - 线性回归中的混淆矩阵

scala - 如何在 Scala 中将范围转换为列表或数组

Scala 通用函数假设类型

java - 如何修复 scala.tools.nsc.typechecker.Contexts$Context.imports(Contexts.scala :232) in an sbt project?

python - Pyspark 对列中列表中的值进行联接和操作

python - 按列(对象)分割分层

scala - 无法从 Scala 方法返回 Map