ICA:独立成分分析

news2024/11/15 20:05:45

1.意义
两个假设:一个是假设源信号是相互统计独立的,另一个是假设己知源信号的统计分布特征。

另一个假设是信号的非高斯性,现实世界的许多信号,诸如绝大多数的语音信号和图像信号即是服从非高斯分布的这个假设的可应用性,带来了独立成分分析的重要特征,即实际信号的统计特性仅用普通的基于二阶统计量方法是不能反映的,独立成分分析追求的是信号的高阶统计信息

2.定义
ICA与其它的方法重要的区别在于,它寻找满足统计独立非高斯成分

与因子分析区别:
在因子分析中,经常声称因子之间是统计独立的,这个说法只是部分正确,因为因子分析假设因子是服从高斯分布的,找到独立的方法相当容易(对于高斯分布的成分来说,不相关与独立是等价的)。
而在现实世界中,数据通常并不服从高斯分布,假设成分服从高斯分布的方法在这种情况下是失效的.

超高斯分布的(supergaussian).这意味着随机变量更经常的在零附近取值,与相同方差的高斯密度相比,超高斯分布在零点更尖!

问题提炼:
ICA任务:在只知道观测信号X的T个样本x(1),…,x(T),且在源信号S和混合矩阵A未知的条件下,假设源信号si(0=1,…,n)之间是相互统计独立的,来求解混合矩阵A和源信号s。

注意:
①一般的,在标准的独立成分分析中最多只允许有一个成分服从高斯分布。如果独立成分中有两个以上的高斯成分,用标准的独立成分分析来处理这样的数据是不可能的。标准的独立成分分析只挖掘数据的非高斯结构

ICA参考:
ICA全,多链接(含matlab code)
MLE原理版-好
面最广,可参考要了解的all知识点。但逻辑深入解释不清楚
FastICA 知乎原理过程
FastICA 知乎原理过程基础上理解 csdn(含matlab code)

辨析

白化 -预处理过程之一

对数据做白化处理必须满足两个条件:
使数据的不同维度去相关;
使数据每个维度的方差为1;
条件1要求数据的协方差矩阵是个对角阵;条件2要求数据的协方差矩阵是个单位矩阵。
目的:降低输入的冗余性。
ICA中:去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,比不对数据进行白化处理相比,算法的收敛性较好。
经过白化处理的输入数据具有如下性质:
(i)特征之间相关性较低;(ii)所有特征具有相同的方差。

PCA白化,ZCA白化
在这里插入图片描述

经过 PCA 白化以后,其协方差矩阵是一个单位矩阵,即各维度变得不相关,且每个维度方差都是 1。

特征值分解、奇异值分解

只是对方阵而言
在这里插入图片描述
补充:特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么
EVD SVD逻辑很清楚版

PCA、ICA
PCA:数据降维,但是只对符合高斯分布的样本点比较有效

梯度下降法意义
为什么需要梯度下降?
因为相对一个函数直接求导等于0(MLE求解过程),从而求得位置参数,计算机更适合迭代,在计算量较小时,直接求导得到解析解速度占优,而在深度学习中全部是以矩阵的方式进行求导,且数据量很大,所以计算机更适合迭代式的梯度下降从而得到数值解。不能直接求导
在这里插入图片描述
梯度下降

梯度下降法与牛顿法比较 GD-牛顿
比较 较全
牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。
如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

【鞍点】在高维非凸优化问题中,鞍点相对于局部最小值的数量非常多,而且鞍点处的损失值相对于局部最小值处也比较大。而二阶优化算法是寻找梯度为0的点,所以很容易陷入鞍点;而梯度下降法目标寻找更小f(x),更容易逃离鞍点。

=======

拓展
e.g:
信号处理领域有如下约定:峰度值为正值的随机变量称为超高斯分布的随机变量(super-gaussian);–拉普拉斯分布(Laplacian distribution)
峰度值为负值的随机变量称为亚高斯分布的随机变量(sub-gaussian);–均匀分布(Uniform distribution)
而高斯分布的随机变量的峰度值为零。
e.g:
盲源分离问题(blind source separation,BSS).盲指的是源信号未知,混合系统未知(混合系数未知)。

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

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

相关文章

N-142基于springboot,vue停车场管理系统

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plus 本项目分为普通用户和管理员…

Flutter实现轮播图功能

一、在pubspec.yaml中添加: dependencies:# 轮播图card_swiper: ^3.0.1card_swiper: ^3.0.1,要获取最新版本:https://pub-web.flutter-io.cn/packages/card_swiper/versions,这个里面有文档可以看,如下图:…

创建一个Vue项目(含npm install卡住不动的解决)

目录 1 安装Node.js 2 使用命令提示符窗口创建Vue 2.1 打开命令提示符窗口 2.2 初始Vue项目 2.2.1 npm init vuelatest 2.2.2 npm install 3 运行Vue项目 3.1 命令提示符窗口 3.2 VSCode运行项目 1 安装Node.js 可以看我的这篇文章《Node.js的安装》 2 使用命令提示…

Pytorch学习02_TensorBoard使用01

更换编辑器 找到自己的Anaconda安装路径下envs\pytorch01中的oython.exe,pytorch01是笔者自己创建的pytorch环境名 选择好后,点击确定 点击 “应用”,再点击“确定” 在pytorch环境下安装tensorboard pip install pytorch 安装结束 writer.ad…

css1文本属性

一.颜色(color)(一般用16进制) 二.对齐(text-align) 三.装饰(text-decoration) 四.缩进(text-indent)(一般用2em)(有单位)…

Android开发--实时监测系统+部署故障诊断算法

0.项目整体思路介绍: 搭建无人装备模拟实验平台,使用采集器对数据进行采集,通过网络通信Udp协议发送到安卓端,安卓端作界面显示,算法使用matlab仿真后,用C语言实现。将采集器采集到的数据经过处理后训练&a…

docker入门教程之将应用程序容器化

将应用程序容器化 在本指南的其余部分中,您将使用在 Node.js 上运行的简单待办事项列表管理器。如果您不熟悉 Node.js,请不要担心。本指南不需要任何 JavaScript 经验。 先决条件 您已安装最新版本的 Docker Desktop。您已经安装了 Git 客户端。您可以…

树莓派与Win11通信【一对一】(四)

树莓派与Win11通信【一对一】(四) 树莓派与Win11通信【一对一】(四)的代码优化版, 最近给代码添加了打开摄像头与否的验证,以及文件的保存,定时拍摄 1.Server端 import socket import time …

解决浏览器端 globalThis is not defined 报错

解决浏览器端 globalThis is not defined 报错 前言解决办法&#xff1a; 前言 在使用低版本火狐浏览器出现报错globalThis is not defined 解决办法&#xff1a; 在vue的index.html 中添加 this.globalThis || (this.globalThis this) <head><script>this.g…

vue3-自定义指令

自定义指令 vue 除了内置的制指令&#xff08;v-model v-show 等&#xff09;之外&#xff0c;还允许我们注册自定义的指令。 vue 复用代码的方式&#xff1a; 组件&#xff1a;主要是构建模块。 组合式函数&#xff1a;侧重有状态的逻辑。 自定义指令&#xff1a;主要是为…

day10笔记

API 显示->索引->搜索框输入->回车查看信息 字符串 直接赋值进串池(会先找,有复用) new出来的在堆里面 字符串比较 ""引用数据类型比较的是地址值 一模一样的比较 忽略大小写的比较 Scanner输入的数据是new出来的 遍历字符串 public class StringDe…

【ELK】logstash快速入门

1.概述 1.1.什么是logstash&#xff1f; 之前我们聊了es&#xff0c;并且用docker搭建了一个eskibana的环境。es目前最普遍的用法是用来存储日志的&#xff0c;然后结合kibana对日志做一些可视化的工作。既然要收集日志&#xff0c;就面临着一个问题&#xff1a; 各个系统的…

微信小程序(三十三)promise异步写法

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.promise异步与普通异步的写法区别 2.promise异步的优势 源码&#xff1a; index.wxml <view class"preview" bind:tap"onChoose"><image src"{{avatar}}" mode"…

Python—数据可视化Seaborn大全:参数详解与实战案例全解析【第52篇—python:Seaborn大全】

文章目录 Seaborn库常用绘图详解与实战引言安装与导入一、散点图参数说明实战案例 二、直方图参数说明实战案例 三、线性关系图参数说明实战案例 四、热力图参数说明实战案例 五、分布图参数说明实战案例 六、箱线图参数说明实战案例 七、联合分布图参数说明实战案例 八、小提琴…

计算机设计大赛 深度学习 机器视觉 人脸识别系统 - opencv python

文章目录 0 前言1 机器学习-人脸识别过程人脸检测人脸对其人脸特征向量化人脸识别 2 深度学习-人脸识别过程人脸检测人脸识别Metric Larning 3 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 人脸识别系统 该项目…

Elasticsearch(ES) 创建带有分词器规则的索引

上文 Elasticsearch(ES) 下载添加IK分词器 带大家 下载 并使用了 IK 分词器 我们先启动 ES 服务 然后 我们来说 IK分词器 怎么用 设置分词器 我们还是要发put请求 创建索引时 通过参数设置 这里 我们put请求 类型要换成 json的 我们先加一个这样的模板 {"mappings&quo…

如何把vue项目打包成桌面程序 electron-builder

引入 我们想要把我们写的vue项目,打包成桌面程序&#xff0c;我们需要使用electron-builder这个库 如何使用 首先添加打包工具 vue add electron-builder 选择最新版本 下载完毕 我们可以看到我们的package.json中多了几行 electron:build&#xff1a;打包我们的可执行程序 e…

【开源】基于JAVA+Vue+SpringBoot的教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

#从零开始# 在深度学习环境中,如何用 pycharm配置使用 pipenv 虚拟环境

为Python项目创建虚拟环境 在深度学习环境和一般python环境中安装pipenv基本一致&#xff0c;只需要确认好pipenv指定的python版本即可,安装pipenv前&#xff0c;可以通过python --version来确认安装版本 快捷键&#xff1a;crtl alt S 查看interpreter&#xff0c;查看所有…

C++棋类小游戏2

今天给大家带来我花了1周时间自创的小游戏的升级版&#xff0c;博主还是一名小学生&#xff0c;希望大家提提意见。这是我写的最长的C代码&#xff0c;希望大家喜欢&#xff0c;不要抄袭&#xff0c;任何编译器都可以。 以前版本——C自创棋类小游戏-CSDN博客 C内容提示&…