主因素分析
一种常用的数据分析技术,主要用于数据降维,在浩繁领域如统计学、呆板学习、信号处理等都有广泛应用。
主因素分析是一种通过正交变换将一组大概存在相关性的变量转换为一组线性不相关的变量(即主因素)的方法。这些主因素按照方差从大到小分列,方差越大,包含的原始数据信息越多。通常会选取前几个方差较大的主因素,以达到在尽量保留原始数据信息的前提降落低数据维度的目的。
它通过将多个指标转换为少数几个主因素,来实现少数几个变量可以反映出原始的大部分数据的本事(这里的多个指标一样平常都具有不低的相关性
这里的主因素是原本的变量的线性组合
比如一个衣服的尺码的设计的时候会有衣长,袖长腰围等等一系列的变量,但是我们经过主因素分析,就可以将其转化为身高,体重两个变量就可以在很大程度上去资助我们去反应衣服的大部分信息
大概的步调和对应代码:
1,得到样本的R矩阵
R = corrcoef(x);
2,计算R矩阵的相关系数矩阵的特征值和特征向量
[V,D] = eig(R); % V 特征向量矩阵 D 特征值构成的对角矩阵(从小到大)
3,根据特征值计算器的贡献率,然后计算累计贡献率,当累计贡献率达到一定的值的时候我们就得到了一个可以或许记录一定比列的一些主因素
这里要先把特征值取出来而且倒置:
lambda = diag(D); % diag函数用于得到一个矩阵的主对角线元素值(返回的是列向量)
lambda = lambda(end:-1:1); % 因为lambda向量是从小大到排序的,我们将其调个头
然后开始计算贡献度
contribution_rate = lambda / sum(lambda); % 计算贡献率
cum_contribution_rate = cumsum(lambda)/ sum(lambda); % 计算累计贡献率 cumsum是求累加值的函数
V=rot90(V)';% rot90函数可以使一个矩阵逆时针旋转90度,然后再转置,就可以实现将矩阵的列颠倒的结果
根据主因素的个数求出主因素的线性表达式
%% 计算我们所必要的主因素的值
m =input('请输入必要保存的主因素的个数: ');
F = zeros(n,m); %初始化保存主因素的矩阵(每一列是一个主因素)
for i = 1:m
ai = V(:,i)'; % 将第i个特征向量取出,并转置为行向量
Ai = repmat(ai,n,1); % 将这个行向量重复n次,构成一个n*p的矩阵
F(:, i) = sum(Ai .* X, 2); % 注意,对标准化的数据求了权重后要计算每一行的和
end
4,要根据主因素的一些线性组合做出一个符合的表明
优缺点:
优点
数据降维结果显著:能有用将高维数据转换为低维表示,同时保留大部分关键信息。在处理高维数据集(如具有大量特征的基因数据、高分辨率图像数据)时,可大幅减少数据维度,降低后续分析和计算的复杂度。例如,基因数据大概包含成千上万个基因表达量作为特征,PCA 可将其压缩到少数几个主因素,在不损失太多信息的前提下,使数据更易于处理和分析。
消除特征相关性:原始数据的特征之间每每存在相关性,这大概对某些分析和模子造成干扰。PCA 通过将数据转换到新的正交坐标系,使主因素之间相互独立,从而消除特征间的冗余信息。例如在分析经济指标时,一些经济变量之间大概存在较强的相关性,PCA 可将这些相关变量转化为相互独立的主因素,有助于更清晰地理解数据结构和进行后续建模。
易于计算和实现:PCA 的计算过程相对明确,基于矩阵运算,主要步调包括计算协方差矩阵、特征值分解等,在许多编程语言(如 Python 的 NumPy、SciPy 库)中都有现成的函数实现,便于研究者和工程师应用。
数据可视化助力:对于高维数据,直接可视化非常困难。PCA 将高维数据降维到二维或三维后,可在平面或三维空间中直观展示数据点分布,资助发现数据中的潜在模式、聚类结构或异常点。例如在客户细分研究中,将多个客户属性通过 PCA 降维后在二维图上展示,能直观地看到不同客户群体的分布情况。
缺点
主因素缺乏可表明性:固然主因素可以或许有用保留数据的大部分方差,但它们通常是原始特征的复杂线性组合,难以直接赋予实际的物理或业务含义。比如在分析用户举动数据时,得到的主因素大概无法直接对应到具体的用户举动指标,不利于领域专家基于业务知识进行解读和应用。
大概丢失告急信息:尽管 PCA 旨在保留最大方差信息,但在降维过程中不可避免地会舍弃部分信息。当舍弃的信息对于特定的分析任务(如某些对细节敏感的分类标题)至关告急时,大概会影响分析结果的准确性。例如在医学图像诊断中,假如舍弃的信息恰好与某些疾病的细微特征相关,大概导致诊断失误。
对数据分布有要求:PCA 假设数据具有高斯分布,在这种分布下能较好地发挥作用。然而,实际数据每每并不完全符合高斯分布,对于非高斯分布的数据,PCA 大概无法充分捕捉数据的内在结构,降维结果大概不理想。
依赖数据团体特征:PCA 基于数据的团体协方差结构来确定主因素,对于数据中的局部结构或离群点较为敏感。离群点大概会对协方差矩阵的计算产生较大影响,进而改变主因素的方向和表明,导致降维结果不能准确反映数据的真实特征。
应用场景
数据可视化:高维数据难以直接可视化,通过 PCA 将数据降到二维或三维,可在平面或三维空间中绘制数据点,资助观察数据的分布模式和潜在结构。例如在基因表达数据分析中,基因数量大概成千上万,使用 PCA 降维后,可在二维图上展示不同样本间的关系。
呆板学习预处理:在训练呆板学习模子时,高维数据大概导致计算量增大、过拟合等标题。PCA 用于降低数据维度,去除噪声和冗余信息,同时保留数据的主要特征,提高模子训练服从和泛化本事。如在图像识别中,将高分辨率图像的像素特征通过 PCA 降维后输入分类模子。
信号处理:在处理如音频、视频信号时,信号大概包含大量冗余信息。PCA 可去除冗余,提取主要因素,实现信号的压缩和去噪。例如在语音识别中,对语音信号进行 PCA 处理,可减少数据量,提高识别服从。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |