【机器学习】主成分分析(PCA)算法及Matlab实现

这篇具有很好参考价值的文章主要介绍了【机器学习】主成分分析(PCA)算法及Matlab实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【问题引入】

在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。

【PCA原理】PCA即主成分分析,是用一个超平面对所有样本进行恰当表达的方法,思想是将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主成分,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n-k维特征。由于它具有降维去噪的强大作用,通常在数据挖掘中起到很重要的作用。

【PCA算法步骤】

  1. 去平均值(即去中心化),即每一位特征减去各自的平均值。
  2. 计算协方差矩阵C = (X' * X) / (N-1)
    注:这里除或不除样本数量N或N-1,其实对求出的特征向量没有影响。
  3. 求协方差矩阵的特征值与特征向量
  4. 对特征值从大到小排序选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。
  5. 将数据转换到k个特征向量构建的新空间中,即Y=PX

【性质】

  1. 缓解维度灾难:PCA 算法通过舍去一部分信息之后能使得样本的采样密度增大(因为维数降低了),这是缓解维度灾难的重要手段;
  2. 降噪:当数据受到噪声影响时,最小特征值对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到降噪的效果;
  3. 过拟合:PCA 保留了主要信息,但这个主要信息只是针对训练集的,而且这个主要信息未必是重要信息。有可能舍弃了一些看似无用的信息,但是这些看似无用的信息恰好是重要信息,只是在训练集上没有很大的表现,所以 PCA 也可能加剧了过拟合;
  4. 特征独立:PCA 不仅将数据压缩到低维,它也使得降维之后的数据各特征相互独立;

【主程序代码】

%%
clear all;
close all;

% 生成一些样本数据
N = 100; % 样本数量
D = 2; % 数据维度
X = randn(N,D)*0.5 + repmat([2, 3], N, 1); % 生成高斯分布的数据

% 中心化数据
mu = mean(X);
X = X - repmat(mu, size(X,1), 1);

% 计算协方差矩阵
C = (X' * X) / (N-1);

% 计算特征向量和特征值
[V, D] = eig(C);

% 将特征向量按特征值从大到小排序
[~, I] = sort(diag(D), 'descend');
V = V(:,I);

% 选取前k个特征向量
k = 1;
W = V(:,1:k);

% 将数据投影到新的空间中
Y = X*W;

% 可视化结果
figure;
scatter(X(:,1), X(:,2), 'filled', 'MarkerFaceColor', 'b');
hold on;
quiver(mu(1), mu(2), W(1), W(2), 'r', 'LineWidth', 2);
xlabel('X1');
ylabel('X2');
title('Principal Component Analysis (PCA)');

【程序分析】

  1. 生成样本数据:通过使用 randn 函数生成 N 个二维高斯分布的样本数据,然后加上一个偏置项 [2, 3],并存储在名为 X 的矩阵中。
  2. 中心化数据:计算数据的均值 mu,然后使用 repmat 函数将其复制成与 X 大小相同的矩阵,并将其从 X 中减去,实现数据的中心化。
  3. 计算协方差矩阵:使用公式 C = (X’ * X) / (N-1) 计算数据的协方差矩阵 C,其中 X’ 表示 X 的转置。
  4. 计算特征向量和特征值:使用 eig 函数计算协方差矩阵 C 的特征向量 V 和特征值 D。
  5. 特征向量排序:使用 sort 函数和 diag 函数将特征向量 V 按照特征值 D 的从大到小的顺序进行排序,并存储在 V 中。
  6. 选择主成分:在这个例子中,我们选择第一个主成分,即特征值最大的特征向量,将其存储在名为 W 的矩阵中。
  7. 将数据投影到新的空间中:将中心化的数据 X 与选定的主成分 W 相乘,得到投影后的数据 Y。
  8. 可视化结果:使用 scatter 函数绘制原始数据的散点图,并使用 quiver 函数绘制原始数据的均值 mu 和选定的主成分 W 的方向。

这个程序演示了如何使用主成分分析PCA)对二维数据进行降维,并将数据投影到新的一维空间中。

【运行结果】

matlabpca分析,机器学习,机器学习,算法,人工智能

喜欢我就关注我吧!!!!
matlabpca分析,机器学习,机器学习,算法,人工智能文章来源地址https://www.toymoban.com/news/detail-764363.html

到了这里,关于【机器学习】主成分分析(PCA)算法及Matlab实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器学习】独立成分分析(ICA)及Matlab实现

    独立成分分析(ICA)最初由Aapo Hyvärinen等人于1980年代提出,其起源可以追溯到对神经科学和信号处理领域的研究需求。ICA的提出主要是为了解决混合信号中盲源分离、非高斯性信号处理和自适应性估计等问题,为实际应用提供了一种有效的信号处理方法。随着研究的深入和应

    2024年02月05日
    浏览(40)
  • 【数学建模】常用算法-主成分分析PCA的Python实现

    本文主要讲解主成分分析析法(PCA)的python实现,后续会跟进实例分析 主成分分析PCA是一种应用广泛的和降维方法,对其实现做以下归纳 导入包 定义计算协方差矩阵函数 X为输入的数据,m为样本数据的条数,也就是X的行数。 对X进行标准化,方法为:减去均值除以方差,这

    2023年04月08日
    浏览(103)
  • 【语音识别】基于主成分分析PCA结合最近邻KNN实现声音自动分类附matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信       无

    2024年04月27日
    浏览(68)
  • 主成分分析法(PCA)解析与MATLAB实践

    PCA(Principal Components Analysis)即主成分分析,也称主分量分析或主成分回归分析法,是一种无监督的数据降维方法,在机器学习中常用于特征降维提取主要特征以减少计算量。PCA主要原理是将高维原数据通过一个转换矩阵,映射到另一组低维坐标系下,从而实现数据降维。举个简

    2023年04月08日
    浏览(40)
  • 机器学习强基计划8-3:详细推导核化主成分分析KPCA算法(附Python实现)

    机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器学习模型:决策树、支持向量机、贝叶斯与马尔科夫决策、强化学习等。强基计划实现从理论到实践的全面覆盖,由本人亲自从底层编

    2023年04月09日
    浏览(42)
  • 多元回归预测 | Matlab主成分分析PCA降维,BP神经网络回归预测。PCA-BP回归预测模型

    效果一览 文章概述 多元回归预测 | Matlab主成分分析PCA降维,BP神经网络回归预测。PCA-BP回归预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(48)
  • PCA(主成分分析)的理解与应用(学习笔记)

    PCA         主成分分析(Principal Component Analysis, PCA)是一种线性降维算法,也是一种常用的数据预处理(Pre-Processing)方法。它的目标是是用方差(Variance)来衡量数据的差异性,并将差异性较大的高维数据投影到低维空间中进行表示。绝大多数情况下,我们希望获得两个

    2024年02月05日
    浏览(49)
  • 【数据挖掘】PCA/LDA/ICA:A成分分析算法比较

            在深入研究和比较算法之前,让我们独立回顾一下它们。请注意,本文的目的不是深入解释每种算法,而是比较它们的目标和结果。 如果您想了解更多关于

    2024年02月15日
    浏览(43)
  • 主成分分析(PCA)及python原理实现

    该定义来自于秒懂百科:          PCA(principal components analysis)即主成分分析技术,又称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。         在统计学中,主成分分析PCA是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换

    2024年02月07日
    浏览(44)
  • 主成分分析法(PCA)及其python实现

    主成分分析法(Principal Component Analysis,PCA)是一种用于把高维数据降成低维,使分析变得更加简便的分析方法。比如我们的一个样本可以由 n n n 维随机变量 ( X 1 , X 2 , . . . , X n ) (X_1,X_2,...,X_n) ( X 1 ​ , X 2 ​ , ... , X n ​ ) 来刻画,运用主成分分析法,我们可以把这些分量用更

    2024年01月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包