Large-scale Parallel Collaborative Filtering for the
Netflix Prize
”。实际上
Spark MLlib
的
ALS
算法实现思想就来源于这两篇论文。
虽然
Y
是未知的,但我们可以把它初始化为随机行向量矩阵。接着运用简单的线性代数,
就能在给定
A
和
Y
的条件下求出
X
的最优解。实际上,
X
的第
i
行是
A
的第
i
行和
Y
的函
数,因此可以很容易分开计算
X
的每一行。因为
X
的每一行可以分开计算,所以我们可以
将其并行化,而并行化是大规模计算的一大优点。
A
i
Y
(
Y
T
Y
)
–1
=
X
i
要想两边精确相等是不可能的,因此实际的目标是最小化
|
A
i
Y
(
Y
T
Y
)
–1
-
X
i
|
,或者最小化两
个矩阵的平方误差。这就是算法名称中“最小二乘”的来由。这里给出方程式只是为了
说明行向量计算方法,但实践中从来不会对矩阵求逆,我们会借助于
QR
分解(
https://
en.wikipedia.org/wiki/QR_decomposition
)之类的方法,这种方法速度更快而且更直接。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.