这里将用TensorFlow实现矩阵分解,对于一般的线性回归算法,求解Ax=b,则x=(A'A)^(-1)A'b,然而该方法在大部分情况下是低效率的,特别是当矩阵非常大时效率更低。另一种方式则是通过矩阵分解来提高效率。这里采用TensorFlow内建的Cholesky矩阵分解法实现线性回归。
Cholesky可以将一个矩阵分解为上三角矩阵和下三角矩阵,即A = LL'
这里,要求解Ax=b ==>A'Ax=A'b,我们将A'A进行Cholesky分解.即A'A = LL'因此上式可以变为
LL'x = A'b
因此我们可以分两步进行求解X
(1)Ly = A'b求出y
(2)y = L'x
下面我们具体实现:
首先引入相应的库并创建计算图会话,声明占位符和变量并构建数据
#A通过Cholesky分解为LL'因此Ax = b ==>A'Ax = A'b ==>LL'x = A'b ==>Ly = A'b ,L'x = y(L与L'矩阵为上三角与下三角矩阵,且互为转置)
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
sess = tf.Session()
x_vals = np.linspace(0,10,100)
y_vals = x_vals + np.random.normal(0,1,100)
x_vals_colum = np.trans