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

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

首先是SVD分解的公式(注意不是SVD近似公式):
Mm⋅n=Um⋅m⋅Σm⋅n⋅(Vn⋅n)TM_{m·n}=U_{m·m}·Σ_{m·n}·{(V_{n·n})}^{T} Mm⋅n​=Um⋅m​⋅Σm⋅n​⋅(Vn⋅n​)T
注意ΣΣΣ在python代码中返回时,是一个向量,矩阵论中是一个对角矩阵。
对角线上都是各个奇异值,其余元素都是0.
并且ΣΣΣ矩阵必定是从大到小排序过的。
其中Um⋅mU_{m·m}Um⋅m​和Vn⋅nV_{n·n}Vn⋅n​是正交阵
正交矩阵的各行是单位向量且两两正交
正交矩阵的各列是单位向量且两两正交
对于正交阵AAA(特指方阵)有以下性质:
AT=A−1A^T=A^{-1}AT=A−1
如果从Um⋅mU_{m·m}Um⋅m​中抽取k列,构成Um⋅kU_{m·k}Um⋅k​,且Uk⋅m=(Um⋅k)TU_{k·m}=(U_{m·k})^{T}Uk⋅m​=(Um⋅k​)T
如果从Vm⋅mV_{m·m}Vm⋅m​中抽取k列,构成Vm⋅kV_{m·k}Vm⋅k​,且Vk⋅m=(Vm⋅k)TV_{k·m}=(V_{m·k})^{T}Vk⋅m​=(Vm⋅k​)T
那么有:
Uk⋅m⋅Um⋅k=Ek⋅k①U_{k·m}·U_{m·k}=E_{k·k}①Uk⋅m​⋅Um⋅k​=Ek⋅k​①
Um⋅k⋅Uk⋅mU_{m·k}·U_{k·m}Um⋅k​⋅Uk⋅m​≠Em⋅mE_{m·m}Em⋅m​
Vk⋅m⋅Vm⋅k=Ek⋅k②V_{k·m}·V_{m·k}=E_{k·k}②Vk⋅m​⋅Vm⋅k​=Ek⋅k​②
Vm⋅k⋅Vk⋅mV_{m·k}·V_{k·m}Vm⋅k​⋅Vk⋅m​≠Em⋅mE_{m·m}Em⋅m​

上述等式的成立条件是:k≤m
注意上面①②的每个式子的顺序不能反,
接下来是SVD的近似公式:
Mm⋅n≈Um⋅k⋅Σk⋅k⋅(Vn⋅k)T③M_{m·n}≈U_{m·k}·Σ_{k·k}·{(V_{n·k})}^{T} ③Mm⋅n​≈Um⋅k​⋅Σk⋅k​⋅(Vn⋅k​)T③
下面根据该式进行推导,对于③中,等式左右两边乘以Uk⋅mU_{k·m}Uk⋅m​,得到:
Uk⋅m⋅Mm⋅n≈(Uk⋅m⋅Um⋅k)⋅Σk⋅k⋅(Vn⋅k)TU_{k·m}·M_{m·n}≈(U_{k·m}·U_{m·k})·Σ_{k·k}·{(V_{n·k})}^{T}Uk⋅m​⋅Mm⋅n​≈(Uk⋅m​⋅Um⋅k​)⋅Σk⋅k​⋅(Vn⋅k​)T
代入式①得到:
Uk⋅m⋅Mm⋅n≈Ek⋅k⋅Σk⋅k⋅(Vn⋅k)T④U_{k·m}·M_{m·n}≈E_{k·k}·Σ_{k·k}·{(V_{n·k})}^{T}④Uk⋅m​⋅Mm⋅n​≈Ek⋅k​⋅Σk⋅k​⋅(Vn⋅k​)T④
两边乘以(Σk⋅k)−1(Σ_{k·k})^{-1}(Σk⋅k​)−1,得到:
(Σk⋅k)−1⋅Uk⋅m⋅Mm⋅n≈(Vn⋅k)T⑤{(Σ_{k·k}})^{-1}·U_{k·m}·M_{m·n}≈{(V_{n·k})}^{T}⑤(Σk⋅k​)−1⋅Uk⋅m​⋅Mm⋅n​≈(Vn⋅k​)T⑤
等式两边进行转置操作:
Vn⋅k≈((Σk⋅k)−1⋅Uk⋅m⋅Mm⋅n)T{V_{n·k}}≈({(Σ_{k·k}})^{-1}·U_{k·m}·M_{m·n})^{T}Vn⋅k​≈((Σk⋅k​)−1⋅Uk⋅m​⋅Mm⋅n​)T
对等式右边进行展开:
Vn⋅k≈(Mm⋅n)T⋅Um⋅k⋅((Σk⋅k)−1)T⑥{V_{n·k}}≈({M_{m·n})^{T}·U_{m·k}·((Σ_{k·k}})^{-1})^{T}⑥Vn⋅k​≈(Mm⋅n​)T⋅Um⋅k​⋅((Σk⋅k​)−1)T⑥

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

Vn⋅k≈(Mm⋅n)T⋅Um⋅k⋅(Σk⋅k)−1⑧{V_{n·k}}≈({M_{m·n})^{T}·U_{m·k}·(Σ_{k·k}})^{-1}⑧Vn⋅k​≈(Mm⋅n​)T⋅Um⋅k​⋅(Σk⋅k​)−1⑧

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

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

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

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

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

  1. 【ML/DL】python3学习《机器学习实战》书中的报错及解决办法

    python3学习<机器学习实战>书中的报错及解决办法(更新中) <机器学习实战>是一本很不错的书,其采用的是py2的语法格式,在用最新的python3.6编写代码的过程中,书 ...

  2. 机器学习实战 —— 决策树(完整代码)

    声明: 此笔记是学习<机器学习实战> -- Peter Harrington 上的实例并结合西瓜书上的理论知识来完成,使用Python3 ,会与书上一些地方不一样. 机器学习实战-- 决策 ...

  3. 机器学习实战——绘制决策树(代码)

    最近在学习Peter Harrington的<机器学习实战>,代码与书中的略有不同,但可以顺利运行. import matplotlib.pyplot as plt# 定义文本框和箭头格式 ...

  4. 免费课程 | 云脑机器学习实战训练营,中美大咖携手带你飞!

    随着机器学习的不断发展,人工智能掀起了新一轮的热潮.这次人工智能的复兴,最大的特点就是AI能够走入业界的真实应用场景,与商业模式紧密结合,开始在产业界发挥出真正的价值. 在业界的真实应用中,如何挖掘用 ...

  5. 机器学习实战-决策树 java版代码开发实现

    话不多说,直接上代码,若有帮助,帮忙点赞哦 python版,或其他机器学习算法,可发邮箱:476562571@qq.com 主要实现功能: 特征 二值判别 递归遍历文件目录加载训练数据集 召回率计算 ...

  6. 【机器学习实战】python中使用Matplotlib绘制树形图

    上一篇:决策树--构造决策树 文章目录 Matplotlib注解 使用文本注解绘制树节点 测试 构造注解树 获取叶节点的数目和树的层数 测试 plotTree 测试 Matplotlib注解 Matp ...

  7. 《机器学习实战》之KNN代码基础

    理论不在赘述,自己明白就行,代码基础记录如下: 1.sum(axis=0/1) import numpy as np np.sum([0,1,2],[1,2,3],axis=1) >>ar ...

  8. 机器学习实战--决策树ID3的构建、画图与实例:预测隐形眼镜类型

    声明 本文参考了<机器学习实战>书中代码,结合该书讲解,并加之自己的理解和阐述 机器学习实战系列博文 机器学习实战--k近邻算法改进约会网站的配对效果 机器学习实战--决策树的构建.画图与 ...

  9. 机器学习实战--Logistic回归与实例:从疝病症预测病马的死亡率

    声明 本文参考了<机器学习实战>书中代码,结合该书讲解,并加之自己的理解和阐述 机器学习实战系列博文 机器学习实战--k近邻算法改进约会网站的配对效果 机器学习实战--决策树的构建.画图与 ...

最新文章

  1. Ubuntu13.04 下源码安装Rapidsvn
  2. Android TV 快进帧预览
  3. 最短路径 - 迪杰斯特拉(Dijkstra)算法
  4. 计算机学院五名学生开发手语app,大学生团队研发成功“聋人自然手语翻译器”APP...
  5. 水滴石穿之页面遮罩层实现、向window.open()打开的窗口POST数据
  6. .NET 原理之 ViewState
  7. FlexForAndroid:文件读写
  8. 安装cdr2019卡在正在下载_cdr2019最新版下载-coreldraw2019安装包中文版 - 极光下载站...
  9. nrf52840 内部 flash 结构
  10. Windows系统下使用WCP搭建自己的本地知识库管理平台
  11. 获取input输入值和获取form表单中的组件输入值区别
  12. Google Chrome for mac(谷歌浏览器)
  13. 统计了300位硬件工程师的工资,我悟了
  14. 用 Python 写一个俄罗斯方块游戏
  15. 【大数据处理】广州餐饮店铺爬虫并可视化,上传至hdfs
  16. 【C++】引用、内联函数、函数重载、函数默认参数(缺省参数)与占位参数、extern “C“ 浅析
  17. 实验一 基于TCP和UDP的客户端和服务器端
  18. 浅探 进程的家族关系
  19. 调用二级页面的html代码,从一级页面直接调用二级页面中的iframe框架
  20. ConTeXt 插入Visio图解决方案

热门文章

  1. IS2009制作Oracle 静默安装包(二) 感谢空白先生特许授权
  2. think in java - 第四章 学习笔记
  3. 【深入浅出WF】——令牌环的变身—书签
  4. XCTF-MISC-新手区:pdf
  5. java高级知识点_JAVA高级阶段知识点汇总
  6. 【Git】pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
  7. github unity 图片切换效果_CSS3图片模糊切换效果
  8. git reset之后找回本地未提交(未add+commit)的代码
  9. VScode配置ESlint自动修复格式化
  10. 一次合同违约复盘(一)