机器学习实战的P264中代码对应的公式推导

版权声明:本文为博主原创文章,可以随便转载 https://blog.csdn.net/appleyuchi/article/details/82913217

文章针对以下代码重点研究:

xformedItems = dataMat.T * U[:,:4] * Sig4.I 

首先是SVD分解的公式:
M m n = U m m Σ m n ( V n n ) T M_{m·n}=U_{m·m}·Σ_{m·n}·{(V_{n·n})}^{T}
注意Σ在python代码中返回时,是一个向量,矩阵论中是一个对角矩阵。
对角线上都是各个奇异值,其余元素都是0.
并且Σ矩阵必定是从大到小排序过的。
其中 U m m U_{m·m} V n n V_{n·n} 是正交阵
正交矩阵的各行是单位向量且两两正交
正交矩阵的各列是单位向量且两两正交
对于正交阵A(特指方阵)有以下性质:
A T = A 1 A^T=A^{-1}
如果从 U m m U_{m·m} 中抽取k列,构成 U m k U_{m·k} ,且 U k m = ( U m k ) T U_{k·m}=(U_{m·k})^{T}
如果从 V m m V_{m·m} 中抽取k列,构成 V m k V_{m·k} ,且 V k m = ( V m k ) T V_{k·m}=(V_{m·k})^{T}
那么有:
U k m U m k = E k k U_{k·m}·U_{m·k}=E_{k·k}①
U m k U k m E m m U_{m·k}·U_{k·m}≠E_{m·m}
V k m V m k = E k k V_{k·m}·V_{m·k}=E_{k·k}②
V m k V k m E m m V_{m·k}·V_{k·m}≠E_{m·m}
上述等式的成立条件是:k≤m
注意上面①②的每个式子的顺序不能反,
接下来是SVD的近似公式:
M m n U m k Σ k k ( V n k ) T M_{m·n}≈U_{m·k}·Σ_{k·k}·{(V_{n·k})}^{T} ③
下面根据该式进行推导,对于③中,等式左右两边乘以 U k m U_{k·m} ,得到:
U k m M m n U k m U m k Σ k k ( V n k ) T U_{k·m}·M_{m·n}≈(U_{k·m}·U_{m·k})·Σ_{k·k}·{(V_{n·k})}^{T}
代入式①得到:
U k m M m n E k k Σ k k ( V n k ) T U_{k·m}·M_{m·n}≈E_{k·k}·Σ_{k·k}·{(V_{n·k})}^{T}④
两边乘以 Σ k k 1 (Σ_{k·k})^{-1} ,得到:
Σ k k 1 U k m M m n ( V n k ) T {(Σ_{k·k}})^{-1}·U_{k·m}·M_{m·n}≈{(V_{n·k})}^{T}⑤
等式两边进行转置操作:
V n k Σ k k 1 U k m M m n T {V_{n·k}}≈({(Σ_{k·k}})^{-1}·U_{k·m}·M_{m·n})^{T}
对等式右边进行展开:
V n k ( M m n ) T U m k ( Σ k k 1 ) T {V_{n·k}}≈({M_{m·n})^{T}·U_{m·k}·((Σ_{k·k}})^{-1})^{T}⑥

Σ k k (Σ_{k·k}) 是对角阵,
Σ k k 1 (Σ_{k·k})^{-1} 也是对角阵
Σ k k 1 (Σ_{k·k})^{-1} 的转置矩阵等于 Σ k k 1 (Σ_{k·k})^{-1}⑦
将⑦中关系,代入⑥,得到

V n k ( M m n ) T U m k Σ k k 1 {V_{n·k}}≈({M_{m·n})^{T}·U_{m·k}·(Σ_{k·k}})^{-1}⑧

对比⑧和书上的这句代码进行比较:

xformedItems = dataMat.T * U[:,:4] * Sig4.I 

我们会发现是一模一样的。
所以上述推导是这句代码的理论依据。

借助的在线公式编辑器链接为:
http://www.sciweavers.org/free-online-latex-equation-editor

猜你喜欢

转载自blog.csdn.net/appleyuchi/article/details/82913217