机器学习笔记 - 独立成分分析(ICA)

1、概述

        独立分量分析 (ICA) 是一种机器学习方法,其中将多元信号分解为不同的非高斯信号。它侧重于独立来源。由于混频处理未知,所以常用ICA作为黑盒。与寻求最大化数据点方差的主成分分析不同。

        噪声对记录的信号有很大的影响,不能从测量中去除。很难记录干净的测量值,因为源信号总是受到噪声和其他源提供的其他独立信号的污染。 

        因此,测量结果可能被描述为几个独立来源的汇编。盲源分离是分离这些混合信号(BSS)的过程。盲这个词表示即使关于它们的信息很少,源信号也可能被分离。

        独立成分分析 (ICA) 方法尝试从单个项目中识别或提取声音,尽管周围环境中存在其他噪音。

        ICA 已用于在各种应用中提取源信号,包括医疗信号、生物测试和音频信号。当 ICA 可以删除或维护单个源时,它也称为降维算法。在此活动期间可以过滤或删除一些信号,这也称为过滤操作。

        FastICA、投影追踪和 Infomax 只是 ICA 算法中的一小部分。这些算法的主要目的是使用下面概述的方法提取独立分量。

        增加非高斯性

        减少互信息

        最大似然(ML)估计方法

2、PCA和ICA之间的区别

        ICA 查找独立分量而不是不相关分量。

独立成分分析(ICA) 主成分分析 (PCA)
ICA 优化高阶统计数据,例如峰度。 PCA 优化了表示二阶统计数据的协方差矩阵。
ICA 找到独立的组件。 PCA 发现不相关的组件
ICA 可以提取独立于高阶相关性的独立源。  当混合数据的高阶相关性较小或不显着时,PCA 可以提取独立源 
它不强调组件的相互正交性。 它侧重于主要组件的相互正交性。
它将混合信号分解为其不同源的信号。 它减少了尺寸以避免过度拟合问题。

机器学习笔记 主成分分析(PCA)_bashendixie5的博客-CSDN博客_opencv pca大型数据集在许多学科中越来越普遍。为了解释这些数据集,需要以一种可解释的方式大幅降低它们的维度,从而保留数据中的大部分信息。为此目的开发了许多技术,但主成分分析 (PCA) 是最古老且应用最广泛的技术之一。它的想法很简单——减少数据集的维度,同时尽可能多地保留“可变性”(即统计信息)。尽管它被使用并且有时被重新发明,但在许多不同的学科中,它本质上是一种统计技术,因此它的大部分开发都是由统计学家完成的。https://skydance.blog.csdn.net/article/details/110749382

3、ICA 的限制

        假设组件的统计独立性。这个假设是 ICA 的工作原理。当一个变量不能从另一个变量中提取任何信息时,就称这些变量是独立的。概率密度可用于定义独立性。令人惊讶的是,这个假设是确定模型可以近似所需的全部。这就是为什么 ICA 是一种具有众多应用程序的强大方法。

        独立分量必须具有非高斯分布,即它们不能呈正态分布。高斯分布的高阶累积量为零,但 ICA 模型估计需要这种高阶信息。如果观察到的变量具有高斯分布,则 ICA 几乎是不可能的。

4、使用 ICA 降维

        这里使用 ICA 作为高维数据的降维。当观察的数量远小于特征的数量时,数据被称为高维数据。

import pandas as pd
import numpy as np
from sklearn.decomposition import FastICA
import matplotlib.pyplot as plt 

df=pd.read_csv("twitchdsano.csv")
df[:8]

df.shape
(30, 116)

transformer=FastICA(n_components=10,whiten='unit-variance')

df_new=transformer.fit_transform(df_utils)
df_new.shape

ReducedData=pd.DataFrame(data=df_new,columns=['IC1','IC2','IC3','IC4','IC5','IC6','IC7','IC8','IC9','IC10')
plt.figure(figsize=(15,8))
plt.scatter(x=ReducedData['IC1'],y=ReducedData['IC2'],label="Component 1&2")
plt.scatter(x=ReducedData['IC3'],y=ReducedData['IC4'],label="Component 3&4")
plt.scatter(x=ReducedData['IC5'],y=ReducedData['IC6'],label="Component 5&6")
plt.scatter(x=ReducedData['IC7'],y=ReducedData['IC8'],label="Component 7&8")  
plt.scatter(x=ReducedData['IC9'],y=ReducedData['IC10'],label="Component 9&10")
plt.legend() 
plt.show()

        独立成分分析 (ICA) 通过将一组变量转换为一组具有最大独立性的新变量来识别数据中的隐藏元素。为了实现这一目标,ICA 采用了非高斯性度量。主成分分析(PCA)和独立成分分析(ICA)有不同的用途;前者压缩数据,而后者分离数据。

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/124769456