Randomized Online PCA Algorithms with Regret Bounds that are Logarithmic in the Dimension
前俩次,都用到了\(rounding()\),遗憾的是,都没有讲清楚,这次稍微具体地讲下这篇论文。但是说实话,我感觉,我还是没有领会到这篇文章的精髓。
Setup of Batch PCA and Online PCA
Batch PCA的目标,就是寻找一个子空间,能够最小化平方误差。
这篇论文,给出了一个比较新颖的表达方式:
where,
\(m\in \mathbb{R}^{n}\)
\(rank(P) =k\)
一般来讲,最优解就是,\(m = \overline{x}\), 而\(P\)所对应的子空间就是协方差矩阵的前\(k\)个特征向量组成的子空间。
论文对(1)进行了一个改写:
上面式子的一种直观解释就是,\(comp(P)\)就是一种损失,这个损失是由投影矩阵\(P\)带来的。
而在streaming PCA(论文里为Online PCA):
很自然的,
成了\(T\)次迭代所积累的损失。
我们希望,这些损失,能够接近由Batch PCA所产生的损失。
Hedge Algorithm
假设,有\(n\)个专家:expert \(i\), \(i=1,2,\ldots,n\).
有一个概率向量\(\mathsf{w}\),每个元素\(\mathsf{w}_i\)为舍弃expert \(i\)的概率。
自然而然,会有一个损失,称之为:\(\mathcal{l}\),每个元素是舍弃相应expert的损失,但是要求\(\mathcal{l}\in[0,1]\),所以我估计得有个单位化的过程。
下面就是如何选取专家,和迭代更新\(\mathsf{w}\)的算法。
这个\(\mathbf{w}\)的更新,有点类似adaboost,感觉其它地方也有看到过,至于其中的原理,估计还是得看论文吧。
同时,有下面的性质:
改进算法
这个算法的目标是,将\(\mathbf{w}\)分解为\(\mathop{\sum}\limits_{i}p_ir_i\),其中\(p_i\)为概率,\(r_i\)为\((n-k)\)-corner.\(d\)-corner,是指有且仅有\(d\)个非零项,且非零项的值为:\(\frac{1}{d}\).分解完毕只有,不同于上面的算法,这个算法将通过分布\(p_i\)选择\(r_i\),而\(r_i\)中的非零项所对应的指标就是相应的要舍弃的专家,expert。
分解算法如下:
\(\mathbf{w} \in B_d^n\)是指\(|\mathbf{w}|=\mathop{\sum}\limits_{i}\mathbf{w}_i=1\),且\(0 \leq \mathbf{w}_i \leq \frac{1}{d}\)
为了使\(\mathbf{w} \in B_d^{n}\),有下面的算法:
接下来就是结合上面的分解所得到的改进的Hedge算法:
有一个性质:
用于矩阵
定义:
矩阵\(d\)-corner是指\(A\)的特征值,有且仅有\(d\)个非零项,且均为\(\frac{1}{d}\)。
其他的类似定义。
这里的\(W\)是密度矩阵:对称正定矩阵,且迹为1。
则:
\(\mathbf{log}A=\mathop{\sum}\limits_ilog(\lambda_i)a_ia_i^{\top}\), 如果\(A=\mathop{\sum}\limits_i\lambda_ia_ia_i^{\top}\)
\(\mathbf{exp}A\)同理。
这个算法貌似是为了将\(W\)投影到\(B_d^{n}\)中的理论依据。
下面的算法五,就是关于如何利用\(W\)进行PCA:
\(rounding()\)
那么如何将上面的种种算法应用到之前提到的文章呢。之前的文章说,算法二就可以了,所以是这么理解吗?
最后得到的矩阵,根据特征值,得到概率向量\(\mathbf{w}\),然后再进行分解,通过概率\(p_i\),得到\(r_i\),接着,舍弃这些特征向量,得到最后的投影矩阵\(P\)?
但是,用特征值,总觉得和上面的不大相符,可不用特征值又能用什么呢?因为他们都是在最后一步利用这个\(rounding()\)。但是,用算法五,就和他们本身的算法不一致了,具体如何,不得而知了。
Randomized Online PCA Algorithms with Regret Bounds that are Logarithmic in the Dimension的更多相关文章
- Stochastic Optimization of PCA with Capped MSG
目录 Problem Matrix Stochastic Gradient 算法(MSG) 步骤二(单次迭代) 单步SVD \(project()\)算法 \(rounding()\) 从这里回溯到此 ...
- [转载]Maximum Flow: Augmenting Path Algorithms Comparison
https://www.topcoder.com/community/data-science/data-science-tutorials/maximum-flow-augmenting-path- ...
- 主成分分析(PCA)学习笔记
这两天学习了吴恩达老师机器学习中的主成分分析法(Principal Component Analysis, PCA),PCA是一种常用的降维方法.这里对PCA算法做一个小笔记,并利用python完成对 ...
- 近年Recsys论文
2015年~2017年SIGIR,SIGKDD,ICML三大会议的Recsys论文: [转载请注明出处:https://www.cnblogs.com/shenxiaolin/p/8321722.ht ...
- Beginners Guide To Learn Dimension Reduction Techniques
Beginners Guide To Learn Dimension Reduction Techniques Introduction Brevity is the soul of wit This ...
- 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法
原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...
- 3D点云配准算法简述
蝶恋花·槛菊愁烟兰泣露 槛菊愁烟兰泣露,罗幕轻寒,燕子双飞去. 明月不谙离恨苦,斜光到晓穿朱户. 昨夜西风凋碧树,独上高楼,望尽天涯路. 欲寄彩笺兼尺素.山长水阔知何处? --晏殊 导读: 3D点云 ...
- 【转载】VC维的来龙去脉
本文转载自 火光摇曳 原文链接:VC维的来龙去脉 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effective Number o ...
- Support Vector Machines for classification
Support Vector Machines for classification To whet your appetite for support vector machines, here’s ...
随机推荐
- 洗礼灵魂,修炼python(66)--爬虫篇—BeauitifulSoup进阶之“我让你忘记那个负心汉,有我就够了”
说明一下,这个标题可能有点突兀,结合上一篇一起看就行 前面已经对BeautifulSoup有了了解了,相信你基本已经学会怎么获取网页数据了,那么BeautifulSoup这么吊,还有没有其他的功能呢? ...
- c# 设置MdiClient窗体的背景图片
在窗体的InitializeComponent();方法后面添加下面的代码. MdiClient MC = new MdiClient(); MC.Name = "MdiClientForm ...
- rabbitMQ模式
1.hello 消息生产者p将消息放入队列 消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除(隐患,消息可能没有被消费者正确处理,已经消失了,无法恢复) 应用场景:聊天室 案 ...
- JAVA的三个版本EE,SE,ME
1998年 SUN发布三个不同版本JAVA,分别是: Java J2EE(Java Platform,Enterprise Edition) JAVA企业版,应用为开发和部署可移植.健壮.可伸缩且安全 ...
- Windows重启显卡驱动热键说明
Windows 有一个秘密的快捷键,可以重启显卡驱动程序.如果你的电脑经常“冻屏”,可以在重启电脑之前试试这个快捷键,它可以修复冻屏,否则就只能强制重启电脑了. 这个组合快捷键将重启 Win10 和 ...
- java学习(权限修饰符)
Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类. ...
- 使用 dep 配置 golang 开发环境
概要 golang 的包管理一直没有官方统一的解决方案,因此也产生了很多非官方的包管理工具. 之前我一直使用的 gb(https://getgb.io/) 能够很好的隔开各个 golang 工程,当时 ...
- 微信小程序多层嵌套循环,二级数组遍历
小程序中的遍历循环类似于angularJS的遍历. 二级数组遍历有一个坑.二级遍历wx:for循环的时候,需要注意.(代码如下) JS代码: data: { groups: [ [ { title: ...
- (转)Spring Boot 2 (九):【重磅】Spring Boot 2.1.0 权威发布
http://www.ityouknow.com/springboot/2018/11/03/spring-boot-2.1.html 如果这两天登录 https://start.spring.io/ ...
- JavaScript的基本包装类型_String类型
String类型概述 String在底层字符串是以字符数组的形式保存的 var str = "Hello"; // 在底层其实就是['H','e','l','l','o'] 字符串 ...