坐标矩阵 Apache Spark 上的 Ax = b 求解器

Posted

技术标签:

【中文标题】坐标矩阵 Apache Spark 上的 Ax = b 求解器【英文标题】:Ax = b solver on coordinate matrix Apache Spark 【发布时间】:2017-12-26 18:15:55 【问题描述】:

如何使用 Apache spark 解决 Ax = b 问题。我的输入是一个坐标矩阵:

import numpy as np
import scipy
from scipy import sparse
row = np.array([0, 3, 1, 0])
col = np.array([0, 3, 1, 2])
data = np.array([4, 5, 7, 9])
A = sparse.coo_matrix((data, (row, col)), shape=(4, 4))
#take the first column of A
b = sparse.coo_matrix((data, (row, 1)), shape=(4, 1))

#Solve Ax = b
np.linalg.solve(A,b)

现在我想使用 Apache Spark 框架的 python 库解决 Ax=b 中的 x,因此解决方案应该是 [1,0,0,0],因为 b 是 A 的第一列

以下是 Apache Spark 线性回归。现在,我该如何设置输入为坐标矩阵(A)和坐标向量(b)的问题?

   from pyspark.ml.regression import LinearRegression

# Load training data
training = spark.read.format("libsvm")\
    .load("data/mllib/sample_linear_regression_data.txt")

lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)

# Fit the model
lrModel = lr.fit(training)

# Print the coefficients and intercept for linear regression
print("Coefficients: %s" % str(lrModel.coefficients))
print("Intercept: %s" % str(lrModel.intercept))

# Summarize the model over the training set and print out some metrics
trainingSummary = lrModel.summary
print("numIterations: %d" % trainingSummary.totalIterations)
print("objectiveHistory: %s" % str(trainingSummary.objectiveHistory))
trainingSummary.residuals.show()
print("RMSE: %f" % trainingSummary.rootMeanSquaredError)
print("r2: %f" % trainingSummary.r2)

【问题讨论】:

【参考方案1】:

如何使用 Apache spark 解决 Ax = b 问题。

直接(分析)你不能。 Spark 不提供线性代数库。

间接 - 使用pyspark.ml.regression 来近似解决 OLS 问题。可以参考:

API docs。 MLlib guide

有关预期输入和所需步骤的详细信息。

【讨论】:

以上是关于坐标矩阵 Apache Spark 上的 Ax = b 求解器的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 上的 Apache Hive

Spark Distributed matrix 分布式矩阵

代数之美奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用

代数之美奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用

代数之美奇异值分解(SVD)及其在线性最小二乘解Ax=b上的应用

矩阵论练习12(线性映射的坐标变换证明)