页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

sklearn.random_projection模块通过以更快的处理时间和更小的模型尺寸交易控制的精确度(作为附加方差)来实现简单且计算有效的方法来降低数据的维度。该模块实现两种非结构化随机矩阵: 高斯随机矩阵和 稀疏随机矩阵

控制随机投影矩阵的维数和分布,以便保留数据集的任意两个样本之间的成对距离。因此,随机投影是基于距离的方法的合适的近似技术。

参考文献:

  • Sanjoy Dasgupta。2000. 随机投影实验。 在第十六次人造智能不确定会议(UAI'00),Craig Boutilier和MoisésGoldszmidt(Eds。)的会议记录中。Morgan Kaufmann Publishers Inc.,San Francisco,CA,USA,143-151。
  • Ella Bingham和Heikki Mannila。2001. 随机投影维数降低:应用于图像和文本数据。 在第七届ACM SIGKDD国际知识发现和数据挖掘会议(KDD'01)的会议记录中。ACM,纽约,纽约州,美国,245-250。

 

约翰逊- Lindenstrauss引理

随机投影效率背后的主要理论结果是 Johnson-Lindenstrauss lemma(引用维基百科)

在数学方面,Johnson-Lindenstrauss引理是从高维度到低维度欧几里德空间的低失真嵌入点的结果。引理指出,高维度空间中的一小部分点可以嵌入到较低维度的空间中,使得点之间的距离几乎保持不变。用于嵌入的地图至少为Lipschitz,甚至可以被视为正交投影。

只知道样本数量, sklearn.random_projection.johnson_lindenstrauss_min_dim估计保守地随机子空间的最小尺寸以保证由随机投影引入的有界失真:

>>> from sklearn.random_projection import johnson_lindenstrauss_min_dim
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=0.5)
663
>>> johnson_lindenstrauss_min_dim(n_samples=1e6, eps=[0.5, 0.1, 0.01])
array([    663,   11841, 1112658])
>>> johnson_lindenstrauss_min_dim(n_samples=[1e4, 1e5, 1e6], eps=0.1)
array([ 7894,  9868, 11841])

示例:

参考文献:

 

高斯随机投影

sklearn.random_projection.GaussianRandomProjection投影在其中组分从下列分布中抽取一个随机生成的矩阵中的原始输入空间减小了维数 

这里是一个小节选,说明如何使用高斯随机投影变压器:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100, 10000)
>>> transformer = random_projection.GaussianRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)


稀疏随机投影

sklearn.random_projection.SparseRandomProjection通过投影使用稀疏随机矩阵原始输入空间减小的维数。

稀疏随机矩阵是密集高斯随机投影矩阵的替代方案,保证了类似的嵌入质量,同时具有更高的存储器效率并允许更快地计算投影数据。

如果我们定义,随机矩阵的元素是从s = 1 / density

预计子空间的大小在哪里?默认情况下,非零元素的密度设置为Ping Li等人推荐的最小密度

这里是一个小节选,它说明了如何使用稀疏随机投影变压器:

>>> import numpy as np
>>> from sklearn import random_projection
>>> X = np.random.rand(100,10000)
>>> transformer = random_projection.SparseRandomProjection()
>>> X_new = transformer.fit_transform(X)
>>> X_new.shape
(100, 3947)

 

参考文献:

 

  • 无标签