我已经有两年 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

本节内容综述

  1. 李老师将无监督学习分为两类:化繁为简(聚类 Clustering),降维 Dimension Reduction、无中生有(Generation)
  2. 讲了 K-means 、Hierarchical Agglomerative Clustering (HAC)、Distributed Representation / Dimension Reduction (如何做?Feature Selection、PCA)。
  3. 详细介绍 PCA 。很详细,从线性代数角度。但是,PCA有不可逆的缺陷(无监督、线性)。之后用宝可梦、MNIST、人脸识别举了例子,例子详见上述的笔记3。
  4. 另外,略提了 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ˉ≈c1​u1+c2​u2+...+ck​uk=x^

L=min⁡u1,...,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∑k​ci​ui)∣∣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∑K​ck​wk逼近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相关推荐

  1. 李宏毅svm_李宏毅2020 ML/DL补充Structured Learning Structured SVM

    李宏毅2020 ML/DL补充Structured Learning Structured SVM [李宏毅2020 ML/DL]补充:Structured Learning: Structured ...

  2. 【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  3. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐):https://github.com/Sakura-gh/ML-note ...

  4. 【李宏毅2020 ML/DL】P1 introduction

    [李宏毅2020 ML/DL]P1 introduction 本节主要介绍了 DL 的15个作业 英文大意 Regression: 回归分析 Classification: 分类 RNN: 循环神经网 ...

  5. 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  6. 【李宏毅2020 ML/DL】P86-87 More about Domain Adaptation

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课由助教 Chao Brian 讲解. 首先讲解些领域适配的基础内容,包括名词.定义等. 接 ...

  7. 【李宏毅2020 ML/DL】P15 Why Deep-

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 已经有人记了笔记(很用心,强烈推荐): https://github.com/Sakura-gh/ML-not ...

  8. 【李宏毅2020 ML/DL】P66 Self-supervised Learning

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本节内容综述 本节课四十分钟,由助教 Chi-Liang Liu 讲解 Self-Supervised Lea ...

  9. 【李宏毅2020 ML/DL】补充:Structured Learning: Introduction Structured Linear Model

    我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的.自己不知道的东西. 本次笔记补充视频 BV1JE411g7XF 的缺失部分.在另一个UP主上传的2017课程BV13x411v7U ...

最新文章

  1. linux下查看vnc端口_怎样查vnc端口,Linux下根据进程名怎样查端口
  2. HTML5-响应式的实现方式-弹性布局浅谈
  3. tomcat异常处理经验汇总
  4. 聚类算法(3):DBSCAN密度聚类
  5. [vue] 你有写过自定义组件吗?
  6. 怎么选择跨境电商ERP系统?
  7. 「小程序JAVA实战」小程序开源搜索组件(53)
  8. 融云 SDK 如何实现群组操作
  9. app怎么嵌套vue页面_用vue做app内嵌页遇到的坑
  10. android 魅族手机bug多,魅族Flyme出现大面积Bug
  11. Bongo Cat 小猫咪自制全键盘版本 养一只超可爱的小猫
  12. 什么是web安全测试
  13. 程序人生 | 春风得意马蹄疾,一日看尽长安花
  14. 学习记录_美术部分_美术理论基础
  15. 【一级倒立摆】基于simulink的一级倒立摆控制器系统仿真
  16. 浙江数字孪生数字化工厂三维激光扫描建模_三维可视化管理平台_吉优赛维_三维建模解决方案_3D模型
  17. [某人的题解]徒步旅行(travel)
  18. 为特斯拉车主构思设计的一款刹车踩踏数据监测器
  19. 机械狗的机器学习入门(绪)——做一盘大菜。2019/3/31
  20. 使用dd命令烧写linux系统到sd卡

热门文章

  1. firefox关闭窗口问题
  2. windows预口体验成员内口版本遇到问题需要重启 终止代码:IRQL_NOT_LESS_OR_EQUAL 绿屏 蓝屏 电脑崩溃 的解决方案
  3. 【Sqoop】sqoop导入导出
  4. node.js入门 - 7.异常处理与多进程开发
  5. springBoot JPA 数据库字段(实体类)带下划线在扩展findBy方法时出错的解决办法
  6. Android 屏幕适配:最全面的解决方案
  7. sun.misc.BASE64Encoder找不到的解决方法
  8. 如何“ grep”连续流?
  9. 提前浏览win11浏览器什么样
  10. stm32 JTAG和SWD的使用区别简要介绍