机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

主成分分析

精确主成分

主成分分析(Principal component analysis, PCA)通常用来分解一个多变量数据集成为逐次正交的成分,这些成分解释原始变量的方差最大。在scikit-learn里,PCA是一个转换对象,在该对象的fit方法里学习n个成分,用于新数据投影到这些成分上,得到新的主成分数据。

设置最优参数whiten=True, 投影数据到奇异空间上,缩放每个主成分为单位方差。在支持向量机和k-means里,这样的参数设置是有利的。

增量主成分

PCA对象虽然有用,但对于大数据集却有些限制。最大的限制是,PCA只支持批量处理,这意味着所有等待处理的数据必须符合主存储器的要求。IncrementalPCA对象使用了一个不同的处理形式,它考虑几乎精确地匹配PCA结果的部分计算,而以一种最小批量的方式处理数据。IncrementalPCA只存储主成分和噪音方差的估计。

随机SVD

通过放弃较小奇异值的主成分的奇异向量,可以实现将数据投射到低维空间,而仍能保持大部分方差的目的。例如,对于64×6464\times6464×64的人脸识别灰度图像,数据的维度是4096, 在这样规模的数据上训练一个RBF支持向量机是很慢的。由于人脸的所有图像看起来相似,所以数据的内在维度远小于4096. PCA算法能够用来线性地转换数据,同时降低维度和保持大部分可解释方差。
PCA类里,当我们想放弃大部分限制计算的奇异向量时,使用参数svd_solver='randomized'是非常有用的。例如,下面显示了来自Olivetti数据集的16个样本肖像。在右边是由前16个奇异向量重新组成的肖像。该数据集的样本数是400, 特征数是4096, 而我们仅仅需要前16个奇异向量来表示,计算时间不到1秒。

注意:在设置参数svd_solver='randomized’时,同时也需要设置低维空间大小参数n_components.

因子分析

在无监督学习里,我们只有一个数据集 X={x1,x2,…,xn}X=\{x_1, x_2, \dots, x_n\}X={x1​,x2​,…,xn​}. 数学上怎样表示这个数据集呢? XXX 的一个简单的连续隐变量模型是
xi=Whi+μ+ϵx_i=W h_i+\mu+\epsilonxi​=Whi​+μ+ϵ

向量 hih_ihi​ 称为隐藏的,因为它是观测不到的。 ϵ\epsilonϵ 是一个误差项,通常假定为正态分布,即 ϵ∼N(0,Ψ)\epsilon\sim\mathcal{N}(0, \Psi)ϵ∼N(0,Ψ). μ\muμ 是一个任意的offset向量。这样的模型称生成模型(generative model), 它描述 xix_ixi​ 怎样生成自 hih_ihi​. 如果我们使用所有的 xi′sx_i'sxi′​s 作为列向量组成矩阵 X\mathrm{X}X, 所有的 hi′sh_i'shi′​s 组成矩阵 H\mathrm{H}H, 那么可以表示为
X=WH+M+E\mathrm{X}=W\mathrm{H}+\mathrm{M}+\mathrm{E}X=WH+M+E

换句话说,我们分解了矩阵 X\mathrm{X}X.

如果给定 hi′sh_i'shi′​s, 可以得到下面的概率解释:
P(xi∣hi)=N(Whi+μ,Ψ)\mathcal{P}(x_i | h_i)=\mathcal{N}(W h_i+\mu, \Psi)P(xi​∣hi​)=N(Whi​+μ,Ψ)
对于一个完整的概率模型,我们也需要隐变量 hhh 的概率分布。最直接的假设是, h∼N(0,I)h\sim\mathcal{N}(0, \mathrm{I})h∼N(0,I), 这样, xxx 的边际分布

P(x)=N(μ,WWT+Ψ)\mathcal{P}(x)=\mathcal{N}(\mu, WW^{\mathrm{T}}+\Psi)P(x)=N(μ,WWT+Ψ)

现在,没有进一步的假设,隐变量 hhh 是多余的,xxx 能够由均值和协方差阵完全建模。为此,我们需要强加某个特定的结构在这两个参数上。关于 Ψ\PsiΨ 的简单假设是:

  • Ψ=σ2I\Psi=\sigma^2 \mathrm{I}Ψ=σ2I 这是PCA的概率模型

  • Ψ=diag(ψ1,ψ2,…,ψn)\Psi=diag(\psi_1, \psi_2, \dots, \psi_n)Ψ=diag(ψ1​,ψ2​,…,ψn​) 这是统计里经典的因子分析模型,矩阵 WWW 称因子载荷阵。

这两种模型实质上都估计了具有低秩协方差阵的正态分布。因子分析能产生类似PCA的成分,但是不能得到任何关于它们的通常的结论,例如,成分之间的正交性。因子分析较PCA的主要优势是,它能独立地建模输入空间在每一个方向上的方差。这样,当噪音存在异方差时,它是更好的模型选择。

非负矩阵分解

Frobenius范数的NMF

非负矩阵分解(Non-negative matrix factorization, NMF)应用到的数据矩阵不包括负值,它找到样本 XXX 的分解:由矩阵 WWW 和非负元素组成的矩阵 HHH. 这是通过优化 XXX 与矩阵乘积 WHWHWH 的距离实现的。使用最广泛的距离函数是Frobenius范数,它是欧氏距离到矩阵的推广。

dFro(X,Y)=12∣∣X−Y∣∣Fro2=12∑i,j(Xij−Yij)2d_{Fro}(X, Y)=\frac{1}{2}||X-Y||_{Fro}^2=\frac{1}{2}\sum\limits_{i, j}(X_{ij}-Y_{ij})^2dFro​(X,Y)=21​∣∣X−Y∣∣Fro2​=21​i,j∑​(Xij​−Yij​)2

NMF通过添加成分获得一个向量,这种加性模型适合表示图像和文本。下面的例子仍然来自Olivetti人脸数据集,由NMF找到的16个稀疏的成分,对比PCA特征面部。

init属性确定了应用的初始化方法,它在很大程度上影响NMF的表现。在NMF里,也可以加入L1 and L2先验到损失函数,正则化模型。

NMF最好使用fit_transform方法,它返回矩阵 WWW. 矩阵 HHH 存储在components_里,transform方法根据存储的成分分解一个新矩阵X_new.

import numpy as np
X = np.array([[1, 1], [2, 1], [3, 1.2], [4, 1], [5, 0.8], [6, 1]])
from sklearn.decomposition import NMF
model = NMF(n_components=2, init='random', random_state=0)
W = model.fit_transform(X)
H = model.components_
X_new = np.array([[1, 0], [1, 6.1], [1, 0], [1, 4], [3.2, 1], [0, 4]])
W_new = model.transform(X_new)

精彩内容,请关注微信公众号:统计学习与大数据

【sklearn第二十一讲】矩阵分解问题相关推荐

  1. 线性代数学习笔记——第二十一讲——矩阵秩的等式

    1. 矩阵转置后矩阵的秩不变 2. 行阶梯形矩阵的秩即其非零行的数目 3. 初等变换不改变矩阵的秩(证明留待补充) 4. 通过矩阵的初等变换将矩阵化为行阶梯形矩阵,以求解矩阵的秩 5. 求出矩阵的秩后 ...

  2. 【第二十一讲】参数解析器

    [第二十一讲]参数解析器 文章目录 [第二十一讲]参数解析器 1-常见参数解析器 2-组合模式在 Spring 中的体现 总结 常见参数解析器 组合模式在 Spring 中的体现 ${} #{} 小技 ...

  3. 织梦仿站系列教程第二十一讲——封面页制作(四)

    织梦搜索提示关键词不少于2个字节 织梦仿站系列教程第二十一讲--封面页制作(四) 看拳击在线的代码,晕,最新新闻和热门新闻竟然是JS调用,我们只好找到这个JS文件,转换成HTML,然后修改. 将如下代 ...

  4. 工具教程第二十一讲:比特儿交易平台APP的使用(一)

    这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家具体讲讲火币网交易平台APP如何使用. 点击观看视频教程:工具教程第二十一讲:比特儿交易平台APP的使用(一) 一.客户端下载: 登录比特 ...

  5. 第十九讲:爱情:如何让爱情天长地久 第二十讲:幽默 第二十一讲:爱情自尊

    (注:此为课程第十九课,更新于2017年7月16日) 大家好! 今天我们继续谈论爱情,讲之前先说一下,一位叫Nadia的同学,你的钥匙链落在这教室了,就在我这里,课后请来我这里取. 那我们来讲讲爱情吧 ...

  6. 第二十一讲 特征值和特征向量

    我个人认为麻省理工线性代数这门课,到二十一讲才真正进入有用的部分,因此从这一讲开始做笔记. 一,概念 满足条件:Ax=λx 解释:当向量x经过矩阵A变换后,效果等于向量x乘上任意常数λ 则:x是矩阵A ...

  7. 李宏毅机器学习2016 第二十一讲 隐马尔可夫模型和条件随机场

    视频链接:李宏毅机器学习(2016)_演讲•公开课_科技_bilibili_哔哩哔哩 课程资源:Hung-yi Lee 课程相关PPT已经打包命名好了:链接:https://pan.baidu.com ...

  8. 深聊全链路压测之:第二十一讲 | 如何搭建GoReplay压测平台。

    搭建GoReplay压测平台 1.引言 2.GoReplay 2.1 什么是GoReplay 2.1.1 定义 2.1.2 原理 2.2 环境安装 2.2.1 Golang安装 2.2.2 GoRep ...

  9. 线性代数学习笔记——第二十讲——矩阵秩的定义

    1. 矩阵的k阶子式 2. 若矩阵的某个低阶子式全为零,则其更高阶的子式也全为零(用反证法证明) 3. 矩阵的秩的定义(满秩矩阵.非奇异矩阵.矩阵可逆.矩阵的行列式不等于零这几个概念是等价的) 4. ...

  10. 第二十一讲 任务的删除

    任务删除主要完成的事情: 1.从就绪列表,延时列表等里面删除. 2.任务释放占用的资源. 任务删除的方式有两种: 1.其他任务强制删除他.2.其他任务请求一个标志位,然后这个这个任务判断这个标志位是否 ...

最新文章

  1. 2022-2028年中国阻尼涂料市场研究及前瞻分析报告
  2. java 命名代码检查-注解处理器
  3. input 事件_14. 教你零基础搭建小程序:小程序事件绑定(1)
  4. 郑州大学软件学院 大学生创新创业选拔赛章程
  5. LeetCode 1522. Diameter of N-Ary Tree(递归)
  6. Python+matplotlib自定义坐标轴位置、颜色、箭头
  7. 【Scala之旅】高阶函数
  8. .net的XML对象序列化VS WCF中xml序列化问题
  9. taptap APP端 产品体验的一点分析报告
  10. Flash Player教育版是什么?和普通版有何区别?
  11. 浪漫七夕—很幸运一路有你
  12. 由浅入深,全面解析ThreadLocal
  13. 计算机组装与维护考试题a卷,计算机组装与维护考试题A卷.docx
  14. java打印日志的几种方式
  15. mysql启动报没有发现index,log_bin.index not found 启动报错解决
  16. Fisher精确检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析
  17. 阿里云网盘内测申请表,阿里网盘内测资格申请
  18. 文件上载限制4gb_新get!百度网盘破除上传单个文件超4GB限制
  19. html 获取登录状态,登录后如何获取HTML代码?
  20. GIS基础(1)空间参考

热门文章

  1. java 自定义异常处理
  2. MVC入门小示例---淘宝商品的搜索和价格筛选
  3. 绑定数据源注意的地方
  4. python3.8+mysql+pymysql安装
  5. CSS详解(二)——CSS连接方式、CSS分裂与CSS分裂检测
  6. 成绩排序--清华机试真题;使用运算符重载
  7. find 命令详解 基于文件大小,名字和权限等的查找策略以及-path和-prune的详细解释
  8. NYOJ--456--邮票分你一半
  9. 中琅领跑条码打印软件如何导入CDR文件
  10. Unreal Engine 4 C++ UCLASS构造函数易出错分析