2025-1-10-sklearn学习(36、37) 数据集转换-无监督降维+随机投影 沙上并禽池上暝。云破月来花弄影。

embedded/2025/1/12 22:13:59/

文章目录

  • sklearn学习(36、37) 数据集转换-无监督降维+随机投影
  • sklearn学习(36) 数据集转换-无监督降维
    • 36.1 PCA: 主成份分析
    • 36.2 随机投影
    • 36.3 特征聚集
  • sklearn学习(37) 数据集转换-随机投影
    • 37.1 Johnson-Lindenstrauss 辅助定理
    • 37.2 高斯随机投影
    • 37.3 稀疏随机矩阵

sklearn3637___1">sklearn学习(36、37) 数据集转换-无监督降维+随机投影

文章参考网站:
https://sklearn.apachecn.org/

https://scikit-learn.org/stable/

sklearn36___8">sklearn学习(36) 数据集转换-无监督降维

如果你的特征数量很多, 在监督步骤之前, 可以通过无监督的步骤来减少特征. 很多的 无监督学习 方法实现了一个名为 transform 的方法, 它可以用来降低维度. 下面我们将讨论大量使用这种模式的两个具体示例.

Pipelining 非监督数据约简和监督估计器可以链接起来。 请看 Pipeline: 链式评估器.

36.1 PCA: 主成份分析

decomposition.PCA 寻找能够捕捉原始特征的差异的特征的组合. 请参阅 分解成分中的信号(矩阵分解问题).

示例 * Faces recognition example using eigenfaces and SVMs

36.2 随机投影

模块: random_projection 提供了几种用于通过随机投影减少数据的工具. 请参阅文档的相关部分: 随机投影.

示例 * The Johnson-Lindenstrauss bound for embedding with random projections

36.3 特征聚集

cluster.FeatureAgglomeration 应用 层次聚类 将行为类似的特征分组在一起.

示例 * Feature agglomeration vs. univariate selection * Feature agglomeration

特征缩放

  • 请注意,如果功能具有明显不同的缩放或统计属性,则 cluster.FeatureAgglomeration 可能无法捕获相关特征之间的关系.使用一个 preprocessing.StandardScaler 可以在这些 设置中使用.

sklearn37___46">sklearn学习(37) 数据集转换-随机投影

sklearn.random_projection 模块实现了一个简单且高效率的计算方式来减少数据维度,通过牺牲一定的精度(作为附加变量)来加速处理时间及更小的模型尺寸。 这个模型实现了两类无结构化的随机矩阵: Gaussian random matrix 和 sparse random matrix.

随机投影矩阵的维度和分布是受控制的,所以可以保存任意两个数据集的距离。因此随机投影适用于基于距离的方法。

参考资料:

  • Sanjoy Dasgupta. 2000. Experiments with random projection. In Proceedings of the Sixteenth conference on Uncertainty in artificial intelligence (UAI‘00), Craig Boutilier and Moisés Goldszmidt (Eds.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 143-151.
  • Ella Bingham and Heikki Mannila. 2001. Random projection in dimensionality reduction: applications to image and text data. In Proceedings of the seventh ACM SIGKDD international conference on Knowledge discovery and data mining (KDD ‘01). ACM, New York, NY, USA, 245-250.

37.1 Johnson-Lindenstrauss 辅助定理

支撑随机投影效率的主要理论成果是Johnson-Lindenstrauss lemma (quoting Wikipedia):

在数学中,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])`

http://<a class=sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_johnson_lindenstrauss_bound_0011.png" />http://<a class=sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_johnson_lindenstrauss_bound_0021.png" />

示例:

  • 查看 The Johnson-Lindenstrauss bound for embedding with random projections 里面有Johnson-Lindenstrauss引理的理论说明和使用稀疏随机矩阵的经验验证。

参考资料:

  • Sanjoy Dasgupta and Anupam Gupta, 1999. An elementary proof of the Johnson-Lindenstrauss Lemma.

37.2 高斯随机投影

The sklearn.random_projection.GaussianRandomProjection 通过将原始输入空间投影到随机生成的矩阵(该矩阵的组件由以下分布中抽取): N ( 0 , 1 n c o m p o n e n t s ) N(0, \frac{1}{n_{components}}) N(0,ncomponents1) 降低维度。

以下小片段演示了任何使用高斯随机投影转换器:

>>> 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)

37.3 稀疏随机矩阵

sklearn.random_projection.SparseRandomProjection 使用稀疏随机矩阵,通过投影原始输入空间来降低维度。

稀疏矩阵可以替换高斯随机投影矩阵来保证相似的嵌入质量,且内存利用率更高、投影数据的计算更快。

如果我们定义 s = 1 / density, 随机矩阵的元素由下式抽取。
{ − s n components 1 / 2 s 0 with probability 1 − 1 / s + s n components 1 / 2 s \begin{split}\left\{ \begin{array}{c c l} -\sqrt{\frac{s}{n_{\text{components}}}} & & 1 / 2s\\ 0 &\text{with probability} & 1 - 1 / s \\ +\sqrt{\frac{s}{n_{\text{components}}}} & & 1 / 2s\\ \end{array} \right.\end{split} ncomponentss 0+ncomponentss with probability1/2s11/s1/2s
其中 n components n_{\text{components}} ncomponents 是投影后的子空间大小。 默认非零元素的浓密度设置为最小浓密度,该值由Ping Li et al.:推荐,根据公式: 1 / n features 1 / \sqrt{n_{\text{features}}} 1/nfeatures 计算。

以下小片段演示了如何使用稀疏随机投影转换器:

>>> 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)

参考资料:

  • D. Achlioptas. 2003. Database-friendly random projections: Johnson-Lindenstrauss with binary coins. Journal of Computer and System Sciences 66 (2003) 671–687
  • Ping Li, Trevor J. Hastie, and Kenneth W. Church. 2006. Very sparse random projections. In Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining (KDD ‘06). ACM, New York, NY, USA, 287-296.

http://www.ppmy.cn/embedded/153394.html

相关文章

HarmonyOS鸿蒙-@State@Prop装饰器限制条件

一、组件Components级别的状态管理&#xff1a; State组件内状态限制条件 1.State装饰的变量必须初始化&#xff0c;否则编译期会报错。 // 错误写法&#xff0c;编译报错 State count: number;// 正确写法 State count: number 10; 2.嵌套属性的赋值观察不到。 // 嵌套的…

Oracle Dataguard(主库为双节点集群)配置详解(3):配置主库

Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置主库 目录 Oracle Dataguard&#xff08;主库为双节点集群&#xff09;配置详解&#xff08;3&#xff09;&#xff1a;配置主库一、开启归档二、开启强制日志三、…

【HarmonyOS】纯血鸿蒙真实项目开发---经验总结贴

项目场景&#xff1a; 将已有的Web网页接入到原生App。 涉及到一些网页回退、webviewController执行时机报错1710000001、位置定位数据获取、拉起呼叫页面、系统分享能力使用等。 问题描述 我们在选项卡组件中&#xff0c;在每个TabContent内容页中使用web组件加载网页。 在…

【灵码助力安全2】——利用通义灵码辅助复现未公开漏洞的实践

前言 暨上一篇【灵码助力安全1】——利用通义灵码辅助快速代码审计的最佳实践之后&#xff0c;这第二篇主要是想分享一下通义灵码在复现未公开漏洞方面的应用&#xff0c;当然&#xff0c;前提也是必须得有相应的源码。 有的时候&#xff0c;由于安全人员水平的限制和时间、…

前端如何处理后端传入的复杂数据格式

在前后端联调过程中不难发现&#xff0c;有时候从后端获取到的数据格式并不是我们所想要的格式&#xff0c;这时候就需要我们自己动手去处理了。最近在开发项目过程中也是遇到了很多传入的数据格式和自己所想要展示的有所区别&#xff0c;这里就先记录一下吧&#xff0c;总结总…

moviepy 将mp4视频文件提取音频mp3 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…

linux删除用户

1、查看账号 cat /etc/passwd 查看所有用户账号信息&#xff1a;该文件记录了系统中的所有用户账号信息&#xff0c;包括用户名、用户ID、用户所属组等。 2、删除账号 基本删除&#xff1a;使用userdel命令删除用户账号&#xff0c;格式为userdel [选项] 用户名。如果不加任…

2024年总结与2025年计划

2024年总结与2025年计划 ​ 今天是2024年12月29日, 星期日, 今年的第364天, 这一年99.18%的时间已流逝. 今天我才开动笔准备写的年终的总结。 时间流逝 一年&#xff0c;一方面觉得自己没有什么大的突破&#xff0c;并且感觉自己的时间也越来越少&#xff0c;今年下半年和上半…