【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA Matrix Factorization
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-notes
本节对应笔记:
- https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-md/16_Unsupervised%20Learning%20Introduction.md
- https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-md/17_Unsupervised%20Learning%20PCA%20part1.md
- https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-md/18_Unsupervised%20Learning%20PCA%20part2.md
- https://github.com/Sakura-gh/ML-notes/blob/master/ML-notes-md/19_Matrix%20Factorization.md
本节内容综述
- 李老师将无监督学习分为两类:化繁为简
(聚类 Clustering),降维 Dimension Reduction
、无中生有(Generation)
。 - 讲了 K-means 、
Hierarchical Agglomerative Clustering (HAC)
、Distributed Representation / Dimension Reduction (如何做?Feature Selection、PCA)。 - 详细介绍 PCA 。很详细,从线性代数角度。但是,PCA有不可逆的缺陷(无监督、线性)。之后用宝可梦、MNIST、人脸识别举了例子,例子详见上述的笔记3。
- 另外,略提了 NMF (Non-negative matrix factorization),其要求,所有数据都必须是组件的非负加权组合。
文章目录
- 本节内容综述
- 小细节
- PCA
- Lagrange multiplier
- PCA-decorrelation
- Reconstruction Component
- Weakness of PCA
- Matrix Factorization
- Latent semantic analysis (LSA)
小细节
PCA
principal components analysis
如上,我们希望找一个方向,这个方向能让数据进行分散地投影在上面。
我们再找下一个 www 是,其必须与上一个 www 是正交的。
此时WWW是正交矩阵(orthogonal matrix)。
Lagrange multiplier
除了经典梯度下降(建模成神经网络),也可以用拉格朗日乘数法。
简单的线性代数展开如上。我们的目标即为最大化 (w1)TSw1(w^1)^TSw^1(w1)TSw1。
然后使用拉格朗日乘数法。
结论:w1w^1w1是S=Cov(x)S=Cov(x)S=Cov(x)这个matrix中的特征向量,对应最大的特征值λ1\lambda_1λ1。
结论,w2w^2w2也是S=Cov(x)S=Cov(x)S=Cov(x)这个matrix中的特征向量,对应第二大的特征值λ2\lambda_2λ2。
PCA-decorrelation
如上,z=W⋅xz=W \cdot xz=W⋅x,Cov(z)=DCov(z)=DCov(z)=D,这使得zzz的协方差是一个对角矩阵 diagonal matrix。
“PCA可以让不同dimension之间的covariance变为0,即不同new feature之间是没有correlation的,这样做的好处是,减少feature之间的联系从而减少model所需的参数量。”
Reconstruction Component
如上,数字 7 是由不同的组件 uuu 加起来的结果。
如果 uuu 的数量比 pixel 少,那么这个组合是有意义的。
于是我们来确定优化目标。
x−xˉ≈c1u1+c2u2+...+ckuk=x^x-\bar x≈c_1u^1+c_2u^2+...+c_ku^k=\hat xx−xˉ≈c1u1+c2u2+...+ckuk=x^
L=minu1,...,uk∑∣∣(x−xˉ)−(∑i=1kciui)∣∣2L=\min\limits_{u^1,...,u^k}\sum||(x-\bar x)-(\sum\limits_{i=1}^k c_i u^i) ||_2L=u1,...,ukmin∑∣∣(x−xˉ)−(i=1∑kciui)∣∣2
如上,我们希望两边的矩阵越接近越好。
可以使用 SVD 拆分。
如上,可以得出结论:
- 用 PCA 找出来的 w1,w2,...,wk{w^1,w^2,...,w^k}w1,w2,...,wk 就是 kkk 个组件的 u1,u2,...,uk{u^1,u^2,...,u^k}u1,u2,...,uk 。
如上,我们的目标是将x^=∑k=1Kckwk\hat x=\sum\limits_{k=1}^K c_k w^kx^=k=1∑Kckwk逼近x−xˉx- \bar{x}x−xˉ,此时因为WWW是标准正交的,应该有ck=(x−xˉ)⋅wkc_k=(x-\bar x)\cdot w^kck=(x−xˉ)⋅wk。
于是我们可以用神经网络表示上述优化问题。
这件事就叫做了:Autoencoder 。
注意,通过 PCA 直接解出的 wiw^iwi 与使用神经网络梯度下降的方式得到的 wiw^iwi 其结果是不一样的,因为神经网络无法保证 wiw^iwi 正交。
因此:
- 在 linear 的情况下,直接使用 PCA 找 WWW 比神经网络更快更方便;
- 用神经网络的好处是,可以使用不止一层隐层,作为 deep autoencoder 。
Weakness of PCA
如上,PCA 有明显的弱点:
非监督学习
,如果我们要将下图绿色的点投影到一维空间上,PCA给出的从左上到右下的划分(如上)会使原本属于蓝色和橙色的两个class的点被merge在一起(因此我们可以使用LDA
);线性的
,对于S型彩色曲面,无法拉直。
Matrix Factorization
举个例子讲解一下矩阵分解。
加深每个人有一定数量的手办。如上。发现,有手办1的人,就比较可能有手办2。说明可能人们偏好不同。
但是,一个人的偏好,与手办的属性其实没有办法知道。我们只能通过数据来推导。
如上,首先我们明确:对于 r 向量,其维度需要人为确定好,就好像神经网络的神经元数量一样。
之后,我们可以将矩阵分解如上图下半部分。我们即可知道 rA,r1r^A, r^1rA,r1 等值。
可以使用 SVD 等方法求解。
如上,此外,我们可能缺失一些值。此时我们更换我们的优化目标,变为 L=∑(i,j)(ri⋅rj−nij)2L = \sum_{(i,j)} (r^i \cdot r^j - n_{ij})^2L=∑(i,j)(ri⋅rj−nij)2,并且跳过我们不知道到的元素。
使用梯度下降即可。
如上,我们使用梯度下降,得到各自的编码,就可以根据 nij=ri⋅rjn_{ij} = r_i \cdot r_jnij=ri⋅rj 得到矩阵中的位置数据,从而进行推荐。
此外,模型还可以做的紧致一些:
- 用户 A 本身的属性 bAb_AbA;
- 手办 1 本身的欢迎程度 b1b_1b1。
Latent semantic analysis (LSA)
Matrix Factorization for Topic analysis
如上,每个文档中出现词汇的顺序。可以找出每个词背后的主题。
有很多方法,比如PLSA、LDA。
【李宏毅2020 ML/DL】P57 Unsupervised Learning - Linear Methods | PCA Matrix Factorization相关推荐
- 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM
李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...
- 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...
- 【李宏毅2020 ML/DL】P1 introduction
[李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...
- 【李宏毅2020 ML/DL】P15 Why Deep-
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...
- 【李宏毅2020 ML/DL】P66 Self-supervised Learning
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课四十分钟,由助教 Chi-Liang Liu 讲解 Self-Supervised Lea ...
- 【李宏毅2020 ML/DL】补充:Structured Learning: Introduction Structured Linear Model
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...
最新文章
- linux下查看vnc端口_怎样查vnc端口,Linux下根据进程名怎样查端口
- HTML5-响应式的实现方式-弹性布局浅谈
- tomcat异常处理经验汇总
- 聚类算法(3):DBSCAN密度聚类
- [vue] 你有写过自定义组件吗?
- 怎么选择跨境电商ERP系统?
- 「小程序JAVA实战」小程序开源搜索组件(53)
- 融云 SDK 如何实现群组操作
- app怎么嵌套vue页面_用vue做app内嵌页遇到的坑
- android 魅族手机bug多,魅族Flyme出现大面积Bug
- Bongo Cat 小猫咪自制全键盘版本 养一只超可爱的小猫
- 什么是web安全测试
- 程序人生 | 春风得意马蹄疾,一日看尽长安花
- 学习记录_美术部分_美术理论基础
- 【一级倒立摆】基于simulink的一级倒立摆控制器系统仿真
- 浙江数字孪生数字化工厂三维激光扫描建模_三维可视化管理平台_吉优赛维_三维建模解决方案_3D模型
- [某人的题解]徒步旅行(travel)
- 为特斯拉车主构思设计的一款刹车踩踏数据监测器
- 机械狗的机器学习入门(绪)——做一盘大菜。2019/3/31
- 使用dd命令烧写linux系统到sd卡
热门文章
- firefox关闭窗口问题
- windows预口体验成员内口版本遇到问题需要重启 终止代码:IRQL_NOT_LESS_OR_EQUAL 绿屏 蓝屏 电脑崩溃 的解决方案
- 【Sqoop】sqoop导入导出
- node.js入门 - 7.异常处理与多进程开发
- springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法
- Android 屏幕适配:最全面的解决方案
- sun.misc.BASE64Encoder找不到的解决方法
- 如何“ grep”连续流?
- 提前浏览win11浏览器什么样
- stm32 JTAG和SWD的使用区别简要介绍