【机器学习】必会降维算法之:随机投影(Random Projection)

news2024/11/26 0:40:02

随机投影(Random Projection)

  • 1、引言
  • 2、随机投影(Random Projection)
    • 2.1 定义
    • 2.2 核心原理
    • 2.3 应用场景
    • 2.4 实现方式
    • 2.5 算法公式
    • 2.6 代码示例
  • 3、总结

1、引言

小屌丝:鱼哥,降维算法还没讲完呢。
小鱼:嗯… 应该是没讲完。
小屌丝:那你是不是应该继续啊
小鱼:… 继续,整。
小屌丝:今天咋这么痛快。
小鱼:嘿嘿, 不能说的秘密。
小屌丝:哦… 嘿嘿~ ~ 懂了
在这里插入图片描述

2、随机投影(Random Projection)

2.1 定义

随机投影是一种降维技术,它通过将高维数据投射到较低维度的随机子空间中来实现数据降维。

与 PCA 等传统方法不同,随机投影不需要对数据进行复杂的数学运算,而是基于随机矩阵理论,利用随机性来近似保留原始数据的距离和结构。

2.2 核心原理

随机投影的核心原理是使用一个随机生成的矩阵将原始数据投影到一个较低维度的空间。这个随机矩阵的行数是目标维度,列数是原始数据的维度。通过乘以这个矩阵,原始数据的每一行都会映射到一个较短的向量上。

随机投影的理论依据是Johnson-Lindenstrauss引理(JL引理),它指出对于任意一组点,在保持它们之间距离几乎不变的前提下,可以将它们从高维空间映射到低维空间。

2.3 应用场景

随机投影在多个领域都有广泛的应用,包括但不限于:

  • 数据可视化:将高维数据投影到二维或三维空间,便于观察和分析。
  • 数据压缩:减少数据存储和传输的开销。
  • 特征选择:通过降维去除冗余特征,提高模型性能。
  • 加速机器学习算法:降低输入数据的维度,减少计算成本。

2.4 实现方式

随机投影的实现方式主要包括以下几个步骤:

  • 生成随机投影矩阵:生成一个 ( d × k ) ( d \times k ) (d×k) 的随机矩阵 ( R ) ( \mathbf{R} ) (R),其中每个元素服从均值为零、方差为 ( 1 k ) ( \frac{1}{k} ) (k1) 的正态分布。
  • 投影数据:将高维数据矩阵 ( X ) ( \mathbf{X} ) (X) 与随机投影矩阵 ( R ) ( \mathbf{R} ) (R) 相乘,得到降维后的数据矩阵 ( X ′ ) ( \mathbf{X'} ) (X)

2.5 算法公式

核心公式为

[ X ′ = X R ] [ \mathbf{X'} = \mathbf{X} \mathbf{R} ] [X=XR]

其中:

  • ( X ) ( \mathbf{X} ) (X) ( n × d ) ( n \times d ) (n×d) 的高维数据矩阵。
  • ( R ) ( \mathbf{R} ) (R) ( d × k ) ( d \times k ) (d×k) 的随机投影矩阵。
  • ( X ′ ) ( \mathbf{X'} ) (X) ( n × k ) ( n \times k ) (n×k) 的降维后数据矩阵。

2.6 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-06-05
# @Author : Carl_DJ


import numpy as np
from sklearn.random_projection import GaussianRandomProjection
import matplotlib.pyplot as plt

# 生成一个高维随机数据集
np.random.seed(0)
X = np.random.randn(100, 50)

# 使用 GaussianRandomProjection 进行降维
n_components = 10  # 降维目标维数
rp = GaussianRandomProjection(n_components=n_components)
X_projected = rp.fit_transform(X)

# 显示降维前后的数据维度
print("原始数据维度:", X.shape)
print("降维后数据维度:", X_projected.shape)

# 可视化降维后的数据(投影到2D平面)
plt.figure(figsize=(8, 6))
plt.scatter(X_projected[:, 0], X_projected[:, 1], c='blue', marker='o')
plt.title('Random Projection to 2D')
plt.xlabel('Component 1')
plt.ylabel('Component 2')
plt.show()

代码解析

  • 1、生成了一个 100x50 的高维随机数据集 ( X ) ( \mathbf{X} ) (X)
  • 2、使用 Scikit-learn 的 GaussianRandomProjection 进行降维,将数据降到 10 维;
  • 3、输出数据降维前后的维度并进行可视化(将其进一步投影到2D平面);

在这里插入图片描述

3、总结

随机投影是一种高效且简单的降维技术,通过将高维数据投射到低维随机子空间中,可以近似保留数据的距离关系。

虽然其理论基础相对简单,但在处理大规模和高维数据时非常有效,具有较高的计算效率。

掌握随机投影的基本原理和实现方法,对于应对大数据和高维数据的挑战有重要意义。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)评测一等奖获得者

关注小鱼,学习【机器学习】&【深度学习】领域的知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EE trade:炒伦敦金的注意事项及交易指南

在贵金属市场中,伦敦金因其高流动性和全球认可度,成为广大投资者的首选。然而,在炒伦敦金的过程中,投资者需要注意一些关键点。南华金业小编带您一起来看看。 国际黄金报价 一般国际黄金报价会提供三个价格: 买价(B…

c++里 父类私有的虚函数,也是可以被子类重写和继承的。但父类私有的普通函数,子类无法直接使用

谢谢 。今天看课本上有这么个用法,特测试一下。这样就也可以放心的把父类的私有函数列为虚函数了,或者说把父类的虚函数作为私有函数了。 再补充一例:

ls命令的参数选项

ls命令的参数的作用 可以指定要查看的文件夹(目录)的内容,如果不指定参数,就查看当前工作目录的内容。ls 命令的选项 常用语法:ls [-a -l -h] [linux路径] -a 选项表示 all ,即列出全部内容,包括…

Linux文件编程详解

Linux文件编程详解 在Ubuntu(Linux)系统下进行文件操作涉及一系列的系统调用,这些调用是基于Unix风格的文件操作API。这些操作包括打开或创建文件、从文件中读取数据、向文件中写入数据、移动文件指针以及关闭文件。以下是这些函数的详细介绍…

WPF/C#:在DataGrid中显示选择框

前言 在使用WPF的过程中可能会经常遇到在DataGrid的最前或者最后添加一列选择框的需求,今天跟大家分享一下,在自己的项目中是如何实现的。 整体实现效果如下: 如果对此感兴趣,可以接下来看具体实现部分。 实践 假设数据库中的…

LeetCode LCP 61. 气温变化趋势

别怕麻烦&#xff0c;模拟题有时候就是要多写一些条件&#xff08;或者你思维很活跃找出规律&#xff09;&#xff0c;代码如下&#xff1a; class Solution { public:int temperatureTrend(vector<int>& temperatureA, vector<int>& temperatureB) {int …

GraphQL vs REST:API设计的现代选择

随着技术的飞速发展&#xff0c;API&#xff08;应用程序接口&#xff09;设计成为了软件开发中不可或缺的一部分。REST&#xff08;Representational State Transfer&#xff09;和GraphQL作为两种主流的API设计风格&#xff0c;各自具有独特的优势和适用场景。本文将深入探讨…

audacity音频处理

1.安装 Audacity | Free Audio editor, recorder, music making and more! 添加OpenVINO插件: https://zhuanlan.zhihu.com/p/676542556 2.使用 2.1注意事项 1.编辑音频,点击左上方打开或导入都可以;打开视频文件则需要安装ffmpeg模块,打开后只显示视频中的音频信息; 2.编辑…

手机k歌用什么麦克风最好?轻揭无线麦克风哪个品牌音质最好!

​无线领夹麦克风作为现代音频技术的重要代表&#xff0c;已广泛应用于各种场合。它不仅能提升演讲者声音质量&#xff0c;还能增加演讲互动性和生动性。然而面对众多产品如何选择适合自己的设备成难题。本文将提供选购使用无线领夹麦克风的建议与推荐款式&#xff0c;帮助你轻…

一文带你全面详细了解安全运维

一、安全运维-网络 1、IP地址相关 IP地址属于网络层地址&#xff0c;用于标识网络中的节点设备。 IP地址由32bit构成&#xff0c;每8bit一组&#xff0c;共占用4个字节。 IP地址由两部分组成&#xff0c;网络位和主机位。 IP地址分类&#xff1a; 类别网络位子网掩码私有地…

tomcat常用配置详解和优化方法

常用配置详解 1 目录结构 /bin&#xff1a;脚本文件目录。 /common/lib&#xff1a;存放所有web项目都可以访问的公共jar包&#xff08;使用Common类加载器加载&#xff09;。 /conf&#xff1a;存放配置文件&#xff0c;最重要的是server.xml。 /logs&#xff1a;存放日志文件…

vue 基于antV 实现流程图编辑器代码

最近在做流程图功能开发&#xff0c;发现阿里antV 有对应的可视化引擎&#xff0c;于是自己做了一个简单vue 基于antV 实现流程图编辑器代码 部分代码如下&#xff1a; <template><div id"flowEditorContent"><header><h3>antv X6 流程编辑…

iptables(4)规则匹配条件

简介 前面我们已经介绍了iptables的基本原理,表、链,数据包处理流程。如何查询各种表的信息。还有基本的增、删、改、保存的基础操作。 经过前文介绍,我们已经能够熟练的管理规则了,但是我们只使用过一种匹配条件,就是将”源地址”作为匹配条件。那么这篇文章中,我们就来…

搞IT需不需要考个软考中级?

如果你是在事业单位、银行、国企等体制内工作&#xff0c;建议考虑参加软考。通过软考评职称后&#xff0c;可以获得加薪和晋升的机会&#xff0c;而且晋升时也会更看重你的职称等级。我就是通过软考评定了中级职称&#xff0c;薪水涨了500元。 评职称并不仅仅是拿到证书就行&…

Talk|北京大学张嘉曌:NaVid - 视觉语言导航大模型

本期为TechBeat人工智能社区第602期线上Talk。 北京时间6月20日(周四)20:00&#xff0c;北京大学博士生—张嘉曌的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “NaVid - 视觉语言导航大模型”&#xff0c;NaVid是首个专为视觉语言导航&#xf…

在华为服务器上编译C++工程的若干错误以及排查方法和解决方法记录

目录 1 报错 2 查找错误原因 2.1 方法一&#xff1a;ldd命令 2.2 方法二&#xff1a;警告信息里面 3 解决错误 3.1 libpng16.so.16 和 libbrotlidec.so.1 问题 3.2 libdevmmap.so 和 libslog.so库问题 3.3 剩余错误 3.3.1 libacllite.so错误解决 3.3.2 libtaclstream…

方舟云康亏损收窄:三年近10亿销售成本,平均付费及月活仍大幅承压

《港湾商业观察》施子夫 三度递表后&#xff0c;终于通过聆讯&#xff0c;方舟云康控股有限公司(以下简称&#xff0c;方舟云康)有望近期内挂牌港交所。方舟云康的国内运营主体为广州方舟云康信息科技集团有限公司、广州方舟医药有限公司。 值得关注的是&#xff0c;亏损的难…

【Hadoop大数据技术】——期末复习(冲刺篇)

&#x1f4d6; 前言&#xff1a;快考试了&#xff0c;做篇期末总结&#xff0c;都是重点与必考点。 题型&#xff1a;简答题、编程题&#xff08;Java与Shell操作&#xff09;、看图分析题。题目大概率会从课后习题、实验里出。 课本&#xff1a; 目录 &#x1f552; 1. HDF…

基于YOLOv5的火焰烟雾检测系统

基于YOLOv5的火焰烟雾检测系统 通过PYQT构建UI界面&#xff0c;包含图片检测&#xff0c;视频检测&#xff0c;摄像头实时检测。 &#xff08;该系统可以根据数据训练出的yolov5的权重文件&#xff0c;运用在其他检测系统上&#xff0c;如吸烟检测&#xff0c;口罩检测等等&…

常用快捷键-快速开发-mac idea 查看侧边栏tool window project+新建文件快捷键

背景&#xff1a;来到公司后&#xff0c;换了mac系统&#xff0c;有点不习惯&#xff0c;于是自己重新设置了开发的快捷键 1、mac idea 查看侧边侧栏&#xff08;专业说法是Tool Window Project&#xff09;&#xff1a; 每次我们都要点击一下左上角的这个类似于文件夹的图标…