本节介绍线性回归模型( ŷ =wTx )的最小二乘“参数估计几”的几种求解方法的时间和空间复杂度。
一、最小二乘法的闭式解
最小二乘法的闭式解优点是可以得到全局最优解,缺点是计算和存储效率低.
为了方便对时间和空间复杂度进行讨论,我们首先对一些变量进行定义:
- XϵRn×d
- yϵRn
- ŷ ϵRn
- wϵRn
最小二乘法的求解目标是得到一个W使得
ŷ
和y的均方误差最小:
当满足 XTX 为满秩矩阵时,该最小二乘法模型存在闭式解,把式(1)对w求导,再令导函数为零得:
矩阵的分布式计算
spark平台对矩阵进行计算的方法和我们平时计算的办法不同,下面将通过计算
XTX
为例演示这个过程。
算式(3)在spark上计算时可分解成3个job进行并行计算。
XT 的第一列 X 的第一行相乘得矩阵a。
[14∗∗∗∗]⎡⎣⎢⎢1∗∗4∗∗⎤⎦⎥⎥=[14416] XT 的第二列 X 的第二行相乘得矩阵b。
[∗∗25∗∗]⎡⎣⎢⎢∗2∗∗5∗⎤⎦⎥⎥=[4101025] -
XT
的第三列
X
的第三行相乘得矩阵c。
[∗∗∗∗36]⎡⎣⎢⎢∗∗3∗∗6⎤⎦⎥⎥=[9181836]
最后将a、b、c三个矩阵相加可得结果。
下图是从berkeley的课件中截取的,详细的说明了矩阵的mapreduce过程,还有计算时的时间和空间复杂度。
二、Big n 和 Big d 情况下的存储和计算
上面讨论的闭式解适用于n较大、d较小大情况。但当数据的特征值较多,即d较大时,由于计算时间复杂度 O(nd2+d3) 和存储空间负责度 O(d2) 导致上面的方法在实际使用中很难实现。这时,我们需要在时间和空间复杂度上都是线性的方法。
Exploit Sparsity
稀疏数据在很多方面都有使用,例如文本处理、协同过滤、邻接矩阵、数据预处理的独热编码(One-Hot Encoding)。
梯度下降法
采用梯度下降这张迭代算法可以得到
O(nd)
的时间复杂度,每次迭代计算时
O(d)
的空间复杂度。