【sklearn第二十一讲】矩阵分解问题
机器学习训练营——机器学习爱好者的自由交流空间(入群联系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=21i,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. 矩阵转置后矩阵的秩不变 2. 行阶梯形矩阵的秩即其非零行的数目 3. 初等变换不改变矩阵的秩(证明留待补充) 4. 通过矩阵的初等变换将矩阵化为行阶梯形矩阵,以求解矩阵的秩 5. 求出矩阵的秩后 ...
- 【第二十一讲】参数解析器
[第二十一讲]参数解析器 文章目录 [第二十一讲]参数解析器 1-常见参数解析器 2-组合模式在 Spring 中的体现 总结 常见参数解析器 组合模式在 Spring 中的体现 ${} #{} 小技 ...
- 织梦仿站系列教程第二十一讲——封面页制作(四)
织梦搜索提示关键词不少于2个字节 织梦仿站系列教程第二十一讲--封面页制作(四) 看拳击在线的代码,晕,最新新闻和热门新闻竟然是JS调用,我们只好找到这个JS文件,转换成HTML,然后修改. 将如下代 ...
- 工具教程第二十一讲:比特儿交易平台APP的使用(一)
这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家具体讲讲火币网交易平台APP如何使用. 点击观看视频教程:工具教程第二十一讲:比特儿交易平台APP的使用(一) 一.客户端下载: 登录比特 ...
- 第十九讲:爱情:如何让爱情天长地久 第二十讲:幽默 第二十一讲:爱情自尊
(注:此为课程第十九课,更新于2017年7月16日) 大家好! 今天我们继续谈论爱情,讲之前先说一下,一位叫Nadia的同学,你的钥匙链落在这教室了,就在我这里,课后请来我这里取. 那我们来讲讲爱情吧 ...
- 第二十一讲 特征值和特征向量
我个人认为麻省理工线性代数这门课,到二十一讲才真正进入有用的部分,因此从这一讲开始做笔记. 一,概念 满足条件:Ax=λx 解释:当向量x经过矩阵A变换后,效果等于向量x乘上任意常数λ 则:x是矩阵A ...
- 李宏毅机器学习2016 第二十一讲 隐马尔可夫模型和条件随机场
视频链接:李宏毅机器学习(2016)_演讲•公开课_科技_bilibili_哔哩哔哩 课程资源:Hung-yi Lee 课程相关PPT已经打包命名好了:链接:https://pan.baidu.com ...
- 深聊全链路压测之:第二十一讲 | 如何搭建GoReplay压测平台。
搭建GoReplay压测平台 1.引言 2.GoReplay 2.1 什么是GoReplay 2.1.1 定义 2.1.2 原理 2.2 环境安装 2.2.1 Golang安装 2.2.2 GoRep ...
- 线性代数学习笔记——第二十讲——矩阵秩的定义
1. 矩阵的k阶子式 2. 若矩阵的某个低阶子式全为零,则其更高阶的子式也全为零(用反证法证明) 3. 矩阵的秩的定义(满秩矩阵.非奇异矩阵.矩阵可逆.矩阵的行列式不等于零这几个概念是等价的) 4. ...
- 第二十一讲 任务的删除
任务删除主要完成的事情: 1.从就绪列表,延时列表等里面删除. 2.任务释放占用的资源. 任务删除的方式有两种: 1.其他任务强制删除他.2.其他任务请求一个标志位,然后这个这个任务判断这个标志位是否 ...
最新文章
- 2022-2028年中国阻尼涂料市场研究及前瞻分析报告
- java 命名代码检查-注解处理器
- input 事件_14. 教你零基础搭建小程序:小程序事件绑定(1)
- 郑州大学软件学院 大学生创新创业选拔赛章程
- LeetCode 1522. Diameter of N-Ary Tree(递归)
- Python+matplotlib自定义坐标轴位置、颜色、箭头
- 【Scala之旅】高阶函数
- .net的XML对象序列化VS WCF中xml序列化问题
- taptap APP端 产品体验的一点分析报告
- Flash Player教育版是什么?和普通版有何区别?
- 浪漫七夕—很幸运一路有你
- 由浅入深,全面解析ThreadLocal
- 计算机组装与维护考试题a卷,计算机组装与维护考试题A卷.docx
- java打印日志的几种方式
- mysql启动报没有发现index,log_bin.index not found 启动报错解决
- Fisher精确检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析
- 阿里云网盘内测申请表,阿里网盘内测资格申请
- 文件上载限制4gb_新get!百度网盘破除上传单个文件超4GB限制
- html 获取登录状态,登录后如何获取HTML代码?
- GIS基础(1)空间参考