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 ...
随机推荐
- Oracle数据库忘记用户名密码的解决方案
1.windows+r输入sqlplus 2.依次输入: sys/manager as sysdba #创建新用户 SQL> create user c##username(自己的用户名) id ...
- 自动化测试基础篇--Selenium简介
摘自https://www.cnblogs.com/sanzangTst/p/7452636.html 一.软件开发的一般流程 二.什么叫软件测试? 软件测试(英语:Software Testing) ...
- 用好lua+unity,让性能飞起来——关于《Unity项目常见Lua解决方案性能比较》的一些补充
<Unity项目常见Lua解决方案性能比较>,这篇文章对比了现在主流几个lua+unity的方案 http://blog.uwa4d.com/archives/lua_perf.html ...
- 第九章 通过 SMB 共享虚拟机
自 Windows Server 2012 起,微软引入了 SMB 3.0 的概念,通过 SMB 3.0,可以实现很多新的功能,包括我们介绍过的"SMB 多通道",以及将虚拟机 ...
- 【Git学习一】Git 初始化
在开始Git之旅之前,我们需要设置一下Git的配置变量. 1.告诉Git当前用户的姓名和邮件地址,配置用户名和邮件地址将在版本库提交时用到. 例子: ------------------------- ...
- java操作elasticsearch实现query String
1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...
- 转:Java中的String,StringBuilder,StringBuffer三者的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下, ...
- Linux:自动删除n天前日志
linux是一个很能自动产生文件的系统,日志.邮件.备份等.虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情.不用你去每天惦记着是否需要清理日志 ...
- 关于IDE的选择
以往忘了看到谁说的,说开发.NET就用VS,开发JS就用webStorm,开发java没钱用Eclipse,有钱用IDEA
- 基于vue-cli的vue项目移动端样式适配,lib-flexible和postcss-px2rem
安装 flexible和 postcss-px2rem(命令行安装) npm install lib-flexible --save npm install postcss-px2rem --save ...