Random Projection在k-means的应用

 

1. 随机投影 (Random Projection)

首先,这是一种降维方法。之前已经介绍过相对普遍的PCA的降维方法,这里介绍另一种降维方法Random Project。相比于PCA,他的优势可以这样说:

Random Projection与PCA不一样,其操作简单,只要构建一个投影矩阵即可,而PCA降维还要做SVD,计算开销比较大

1.1 Brief Introduction

随机投影的理论依据是J-L Lemma,公式的核心思想总结一句话就是:在高维欧氏空间里的点集映射到低维空间里相对距离得到某误差范围内的保持。至于为什么要保持,主要是很多机器学习算法都是在以利用点与点之间的距离信息展开计算分析的(如k-means)。

1.2 Johnson–Lindenstrauss lemma

其实并不想这么数学,但是这么重要的定理不说不行。

定理表示:对于任意一个样本大小为m的集合,如果我们通过随机投影将其维度降到一个合适的范围 n>8ln(m)/ϵ2n>8ln(m)/ϵ2 内,那么我们将以较高的概率保证投影后的数据点之间的距离信息变化不大。这样我们在做K-mean之类的算法时,就可以先将高维度的数据利用随机投影进行降维处理,然后在执行算法。

上式中,ff为投影到n维空间的正交投影。显然,这样的正交投影操作通常会减少样本点之间的平均距离。该定理Lemma可以看成这样操作:首先,你通过算法获得随机投影,这可能减少平均距离,然后你scale up这个距离,以便平均距离返回到其先前的值。 这个操作将不再是一个NP-hard问题,时间复杂度降为多项式复杂度。

1.3 Method

介绍完JL Lemma,接下来就简单了。如果Xd×NXd×N 是d维的原始样本矩阵,那么XRPk×N=Rk×dXd×NXk×NRP=Rk×dXd×N是降维后的k维样本矩阵。这个计算过程十分简单,生成随机矩阵RR且将XX映射从dd为到kk维空间中的时间复杂度为O(nkd)O(nkd)。

1.4 高斯随机投影 Gaussian random projection

可以使用高斯分布生成随机矩阵 RR。随机矩阵的第一行是从Sd−1Sd−1均匀选择的随机单位向量,第二行是来自与第一行正交的空间的随机单位向量,第三行是来自与前两行正交的空间的随机单位矢量,依此类推。 在这种选择 RR 的方式中,RR 是正交矩阵(其转置的倒数),并且满足以下属性:

  • 球对称(Spherical symmetry):对于任何正交矩阵A∈O(d)A∈O(d),RARA 和 RR 具有相同的分布。
  • 正交性:R的行彼此正交。
  • R的行是单位长度向量。

要讨论高斯随机投影为什么有效,我们需要先来讨论下一个核心问题,高斯投影是否可以从理论上保证投影降维前后,数据点的空间分布距离基本保持不变呢?这个问题其实可以等价于证明另一个问题,即高斯投影能否做到将高维空间的点均匀的投影到低维空间中,如果能做到这一点,那么我们也可以证明其具备“投影降维前后,数据点的空间分布距离基本保持不变”的能力。

我们来考虑一个采样问题,就是怎样在高维单位球体的表面上均匀的采样。首先,考虑二维的情况,就是在球形的周长上采样。我们考虑如下方法:第一,先在一个包含该圆形的外接正方形内均匀的采样;第二,将采样到的点投影到圆形上。具体地说就是,第一,先独立均匀的从区间[−1,1](我们假设圆形跟正方形的中心点都在原点)内产生两个值组成一个二维的点(x1,x2);第二,将该二维点投影到圆形上。例如,如下图所示,如果我们产生点是图中的A,B两点,那么投影到圆形上就是C点,如果产生的是点D,那么投影到圆形上就是E点。但是,用这样的方法得到点在圆形上并不是均匀分布的,比如产生C点的概率将大于产生E点概率,因为可以投影到C点对应的那条直线比E点对应的那条直线要长。解决的办法是去掉圆形外面的点,也就是如果我们首先产生的点在圆形外的话(比如点B),那么我们就丢弃该点,重新在产生,这样的话产生的点在圆形上是均匀分布的。

那么,我们能否将此方法扩展到高维的情况下呢?答案是不行的。因为在高维的情况下球与正方体的体积比将非常非常小,几乎接近于零。也就是我们在正方体内产生的点几乎不可能落到球体内部,那么也就无法产生有效的点。那么,在高维的球体上,我们应该怎样才能产生一个均匀分布与球体表面的点呢?答案是利用高斯分布。即将上述第一步改成:以均值为零方差为1的高斯分布独立地产生d个值,形成一个d维的点x=(x1,x2,⋯,xd);然后第二步:将点x归一化x̃ =x/‖x‖。用这种方法产生点必定均匀分布在高维球体表面。

2. Random Projection在k-means中的应用

对于k-means来说,将样本划分为距离最近的一个聚簇,这个过程可以使用下面的式子来表示:

每个数据点样本都要和聚簇中心做一次上述操作,所以一次迭代过程中计算复杂度为  ,  是 指 样本 维度。观察上面的式子,  的计算是可以预先完成的,  可以在每次迭代时预先计算好,而不必对每个样本都计算一次。所以更新的关键操作就是 的计算,即计算数据样本矩阵  和 聚簇 中心  的内积  。所以我们可以想办法在样本矩阵上做操作来减小计算的复杂度。

这时候,随机投影的降维操作就派上了用场,下图是随机投影在随机投影在k-means上操作的流程:

Reference:

  1. http://www.cnblogs.com/LittleHann/p/6558575.html#undefined
  2. https://blog.csdn.net/ljj583905183/article/details/47980169
  3. https://en.wikipedia.org/wiki/Random_projection
  4. https://zhuanlan.zhihu.com/p/45408671

Random Projection的更多相关文章

  1. Machine Learning/Random Projection

    这次突然打算写点dimension reduction的东西, 虽然可以从PCA, manifold learning之类的东西开始, 但很难用那些东西说出好玩的东西. 这次选择的是一个不太出名但很有 ...

  2. Random Projection在k-means的应用

    1. 随机投影 (Random Projection) 首先,这是一种降维方法.之前已经介绍过相对普遍的PCA的降维方法,这里介绍另一种降维方法Random Project.相比于PCA,他的优势可以 ...

  3. scikit-learn:4.5. Random Projection

    參考:http://scikit-learn.org/stable/modules/random_projection.html The sklearn.random_projection modul ...

  4. [机器学习] 在茫茫人海中发现相似的你:实现局部敏感哈希(LSH)并应用于文档检索

    简介 局部敏感哈希(Locality Sensitive Hasing)是一种近邻搜索模型,由斯坦福大学的Mose Charikar提出.我们用一种随机投影(Random Projection)的方式 ...

  5. [Z] 北大一牛人生物转申CS的经历

    http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...

  6. PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)

    主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...

  7. Advice for applying Machine Learning

    https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...

  8. 局部敏感哈希Locality Sensitive Hashing(LSH)之随机投影法

    1. 概述 LSH是由文献[1]提出的一种用于高效求解最近邻搜索问题的Hash算法.LSH算法的基本思想是利用一个hash函数把集合中的元素映射成hash值,使得相似度越高的元素hash值相等的概率也 ...

  9. Computer Science Theory for the Information Age-3: 高维空间中的高斯分布和随机投影

    高维空间中的高斯分布和随机投影 (一)在高维球体表面产生均匀分布点的方法 我们来考虑一个采样问题,就是怎样在高维单位球体的表面上均匀的采样.首先,考虑二维的情况,就是在球形的周长上采样.我们考虑如下方 ...

随机推荐

  1. Linux 知识

    linux下如何查看某软件是否已安装 因为linux安装软件的方式比较多,所以没有一个通用的办法能查到某些软件是否安装了.总结起来就是这样几类: 1.rpm包安装的,可以用rpm -qa看到,如果要查 ...

  2. 前端HTML基础和head部分

    一.SOCKET服务器与浏览器交互 CS模式 -->  BS模式 CS模式逐渐向BS模式转移,底层都是socket客户端 浏览器给服务器发送请求 --> 服务器收到请求 --> 服务 ...

  3. Sqlserver2008[索引]

    SQL索引有两种:聚集索引.非聚集索引 目的:提高sqlserver 系统的性能,加快数据的查询速度与减少系统的响应时间 注意点:一个表只能有一个聚集索引,但可以有多个非聚集索引 索引的存储机制: 聚 ...

  4. 基于Java8的日期时间工具类DateTimeFormatter

    原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...

  5. centos 下 sphinx安装和配置

    一.安装前提必备先安装工具 yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml ...

  6. pandas 数据类型研究(一)数据转换

    当利用pandas进行数据处理的时候,经常会遇到数据类型的问题,当拿到数据的时候,首先需要确定拿到的是正确类型的数据,一般通过数据类型的转化,这篇文章就介绍pandas里面的数据类型(data typ ...

  7. jquery 使用off移除事件 使用one绑定一次事件,on绑定事件后触发多次相同的事件的异常

    <!-- jquery 移除事件,绑定一次事件,搜狗 one --> <!DOCTYPE html> <html lang="en"> < ...

  8. Linux文件权限符号说明

    为了控制权限,Linux首先对于将操作的用户分为:用户.用户组和其他,这三个概念. 每个文件都会属于某个用户,而一个用户可以属于多个用户组,而不属于该用户组的用户,则属于其他.因此,每个文件的操作权限 ...

  9. Elasticsearch 调优之 搜索速度优化

    本章讨论搜索速度优化:搜索速度与系统资源.数据索引方式.查询方式等多方面 1.为文件系统cache预留足够的内存 1)应用程序一般情况下,读写都会被操作系统“cache” 2)cache保存在物理内存 ...

  10. ckeditor复制粘贴word

    从word文档中直接粘贴到ckeditor编辑区,查看的时候格式会显示混乱,非常难看.解决方法:   CKEDITOR.cleanWord = function(h, i) { return h; i ...