PCA降维MATLAB代码解释及应用场景
代码整体功能概述
这段代码主要实现了以下几个功能:首先读取两个 CSV 文件中的数据,对数据进行归一化处理后合并,接着绘制原始数据的散点图进行可视化展示,然后应用主成分分析(PCA)算法对合并后的数据进行降维处理,最后将降维后的数据再次通过散点图进行可视化展示,以便直观地观察数据在降维前后的分布变化情况。
代码各部分详细解释
- 环境清理与初始化(可选部分)
clear;
clc;
close all;
drawnow;
clear
命令用于清除 MATLAB 工作区中的所有变量,确保每次运行代码时都是从一个 “干净” 的环境开始,避免之前运行遗留变量对本次结果产生干扰。clc
命令会清空命令行窗口的内容,使界面更加整洁,方便查看本次运行输出的新信息。close all
命令则关闭所有已经打开的图形窗口,若之前运行代码生成了绘图窗口且没有手动关闭,此命令可全部关闭它们,同样是为了保证新的绘图展示不受之前的影响。drawnow
命令用于实时更新绘图窗口,如果代码中有涉及到动态绘图、实时显示图形变化等需求时,这个命令能确保图形及时更新显示,不过在当前这段代码里相对来说它的作用不是特别关键,更多是一种习惯性的添加(以防后续可能拓展代码功能有实时绘图需求)。
- 数据读取与预处理
data3 = readtable('yingguang_1_1.csv', 'HeaderLines', 1);
data3 = data3{:, 1};
data3 = normalize(data3);
data2 = readtable('yinguang_2.csv', 'HeaderLines', 1);
data2 = data2{:, 1};
data2 = normalize(data2);
data = [data2, data3];
- 首先使用
readtable
函数读取两个 CSV 文件(yingguang_1_1.csv
和yinguang_2.csv
)中的数据,参数HeaderLines
设置为 1 表示跳过文件的第一行(通常是表头行),将数据读取为表格形式(table
类型)。 - 接着通过
data3 = data3{:, 1}
和data2 = data2{:, 1}
操作,提取表格中的第一列数据(假设每个文件中只关注这一列数据,如果实际情况有多列,这里的提取逻辑需要相应调整),并将数据类型转换为向量形式(比如从table
类型转换为double
等数值类型的向量,具体取决于文件中数据原本的存储类型)。 - 最后使用
normalize
函数对提取出来的data2
和data3
向量数据分别进行归一化处理,常见的归一化方法比如将数据映射到 [0, 1] 区间或者使其均值为 0、方差为 1 等(具体取决于normalize
函数在该软件环境下的默认实现方式),归一化后的data2
和data3
数据再合并成一个新的数据矩阵data
,为后续的分析做准备。
- 原始数据可视化(绘制散点图)
figure; % 新建一个图形窗口用于展示原始散点图
scatter(data2, data3); % 绘制原始散点图
xlabel('Original Dimension 1');
ylabel('Original Dimension 2');
title('Original Data Visualization');
figure
命令创建一个新的图形窗口,这样后续绘制的散点图会在这个独立的窗口中展示,便于区分不同阶段的绘图结果以及进行对比查看等。scatter
函数用于绘制散点图,这里以data2
作为x
轴坐标数据,data3
作为y
轴坐标数据来绘制原始数据的散点分布情况,能够直观地看到数据在二维平面上的分布形态、疏密程度等特征。- 然后使用
xlabel
、ylabel
和title
函数分别给x
轴、y
轴添加标签说明以及给整个散点图添加标题,使图形的表意更加清晰,方便查看者理解数据所代表的维度含义等信息。
- 主成分分析(PCA)降维
[coeff, score, latent] = pca(data); % coeff是主成分系数,score是主成分得分(降维后的数据),latent是各个主成分的方差
numDimensionsToKeep = 2;
reducedData = score(:, 1:numDimensionsToKeep); % 提取前numDimensionsToKeep列作为降维后的数据
pca
函数是 MATLAB 中用于执行主成分分析的内置函数,它接受输入的数据矩阵data
,并返回三个重要的结果:coeff
变量包含了主成分系数,它描述了原始变量如何线性组合形成主成分,其每一列对应一个主成分的系数向量。score
变量存储的是主成分得分,也就是经过 PCA 变换后的数据,每一行对应一个样本在各个主成分上的得分情况,其实就是降维后的数据表示形式,维度通常会比原始数据维度低(如果保留所有主成分则维度不变)。latent
变量表示各个主成分的方差,方差越大说明对应的主成分所包含的信息量越大,通常在实际应用中可以根据方差贡献率等指标来决定保留多少个主成分进行降维。
- 接着定义了变量
numDimensionsToKeep
并赋值为 2,表示希望将数据降到二维(这里的 2 是可以根据实际需求修改的,比如根据累计方差贡献率达到一定比例来确定合适的保留维度数量),然后通过reducedData = score(:, 1:numDimensionsToKeep)
从score
中提取前numDimensionsToKeep
列数据作为最终降维后的数据,存储在reducedData
变量中。
- 降维后数据可视化(绘制散点图)
figure; % 新建一个图形窗口用于展示降维后的数据散点图
scatter(reducedData(:, 1), reducedData(:, 2)); % 以第一维作主坐标轴,第二维作次坐标轴绘制散点图
xlabel('Principal Component 1');
ylabel('Principal Component 2');
title('PCA Reduced Data Visualization');
- 同样先使用
figure
命令创建一个新的图形窗口用于展示降维后的数据散点图,使其与原始数据的散点图窗口区分开,方便对比观察降维前后数据分布的变化情况。 - 然后使用
scatter
函数以reducedData
的第一列作为x
轴坐标、第二列作为y
轴坐标绘制散点图,展示降维后数据在二维平面(这里是由前两个主成分构成的平面)上的分布特征。 - 最后使用
xlabel
、ylabel
和title
函数给这个散点图添加相应的坐标轴标签和标题,清晰地表明这是降维后的数据可视化展示,方便查看者理解图中所展示的主成分含义以及降维效果等情况。
PCA 降维代码的其他应用场景
- 图像识别领域
- 人脸识别应用:
在人脸识别系统中,通常会从人脸图像中提取大量的特征,比如五官的位置、轮廓信息、纹理特征等,这些特征往往具有很高的维度。假设有一个包含众多人脸图像的数据库,每张图像经过特征提取后得到一个高维特征向量(例如维度可能达到几百甚至上千维)。
利用 PCA 降维,可以将这些高维特征向量进行降维处理。首先将所有人脸图像对应的特征向量组成一个数据矩阵,对这个矩阵应用 PCA,通过保留一定数量的主成分(比如根据方差贡献率选取前若干个主成分,使得保留的成分能够解释大部分数据的方差,通常可能选择保留几十维),将每个人脸的特征向量降维到一个相对低维的空间。
这样做的好处是多方面的:一方面可以减少后续处理的数据量,加快识别算法的运算速度,比如在分类匹配阶段,低维数据的计算复杂度更低;另一方面,在低维空间中往往能够更好地凸显出不同人脸之间有区分性的特征模式,去除一些噪声或者冗余信息带来的干扰,有助于提高人脸识别的准确率。例如在一些门禁系统、安防监控中识别特定人员时,经过 PCA 降维后的特征可以更高效准确地进行人脸比对和身份确认。 - 物体识别应用:
在识别不同种类的物体(如不同车型、不同动物种类等)时,从图像中提取的特征(可能包括形状特征、颜色直方图特征、局部纹理特征等的组合)维度也很高。以识别不同车型为例,采集大量不同角度、不同光照条件下各种车型的图像,提取特征后形成高维数据矩阵。
通过 PCA 降维,将特征数据降到合适维度后,可以构建分类模型(如支持向量机、神经网络等),降维后的特征能够让分类器更容易学习到不同车型之间的本质差异,避免过拟合问题(因为高维数据容易导致模型过于复杂而出现过拟合),同时降低模型训练和预测的时间成本,在实际的智能交通监控(识别违规车辆类型等)、物流车辆管理等场景中提高物体识别的效率和准确性。
- 生物信息学领域
- 基因表达数据分析:
在研究生物基因表达情况时,通过基因芯片等技术可以同时测量成千上万个基因在不同样本(比如不同组织、不同疾病状态下的细胞样本等)中的表达水平,每个样本就对应一个非常高维的基因表达数据向量(维度与测量的基因数量相关,可能达到数万维)。
应用 PCA 降维,可以将这些高维的基因表达数据投影到低维空间。例如在研究癌症相关基因表达变化时,将癌症患者和健康对照人群的样本基因表达数据合并后进行 PCA,降维后的二维或三维空间(通过可视化展示)能够直观地看到癌症样本和正常样本在基因表达模式上的总体差异,不同类型癌症(如肺癌、胃癌等)的样本可能在低维空间呈现出不同的聚类分布情况。
研究人员可以根据降维后的数据发现与疾病相关的潜在主成分,进而挖掘出哪些基因集合(对应主成分的系数所涉及的基因)在疾病发生发展过程中起到关键作用,辅助疾病的诊断、分型以及治疗靶点的寻找等,比如判断某个未知样本更倾向于哪种癌症类型,或者探索哪些基因表达变化是不同癌症类型共有的,哪些是特异性的。 - 蛋白质结构分析:
对于蛋白质的三维结构描述,往往会涉及到众多原子坐标、角度等特征信息,维度很高。在比较不同家族蛋白质结构的相似性、研究蛋白质折叠过程等问题时,可以利用 PCA 降维。
将不同蛋白质结构的特征数据进行 PCA 处理,降维后的结果可以在低维空间中展示出蛋白质结构的主要变化模式,比如发现某些主成分对应的结构变化与蛋白质的功能活性变化相关,帮助理解蛋白质结构与功能之间的内在联系,在药物研发中(例如设计针对特定蛋白质靶点的药物时,了解其结构变化模式有助于合理设计药物分子结合位点等)以及基础生物学研究(探究生命活动过程中蛋白质的作用机制等)都有重要应用价值。
- 金融领域
- 股票市场分析:
在股票市场中,有大量的指标可以用来描述股票的特征和走势,比如股价、成交量、市盈率、市净率、换手率等,对于多只股票(如某个板块的所有股票或者整个市场的众多股票)在一段时间内的这些指标数据就构成了高维的数据集合。
运用 PCA 降维,可以将这些股票相关指标数据进行降维处理。例如投资者可以通过对历史数据进行 PCA,降维后的结果可能发现某些主成分与市场的整体行情(牛市、熊市等宏观趋势)密切相关,而另一些主成分可能和某个板块的特定走势(如科技板块、消费板块等的独特波动情况)有关。
在构建投资组合时,基于降维后的数据来选择股票,能够去除一些指标之间的冗余信息,更聚焦于关键影响因素,合理分配资金权重,降低投资组合的风险同时提高收益预期。并且在预测股票价格走势时,降维后的数据作为输入特征提供给预测模型(如时间序列预测模型等),可以简化模型结构,提高预测的准确性和稳定性,辅助投资者做出更科学的投资决策。 - 风险评估应用:
金融机构在对企业或个人进行风险评估时,会考虑众多的因素,像财务报表中的各项指标(资产负债率、流动比率、营业收入增长率等)、信用记录、市场行业环境等多方面的信息,这些因素整合起来形成高维的风险评估数据。
利用 PCA 降维,能够提炼出最能反映风险本质特征的几个主成分,比如将一些反映偿债能力、盈利能力、经营稳定性等方面的相关指标综合成少数几个维度,金融机构可以基于降维后的数据更直观快速地判断风险等级,决定是否给予贷款、授信额度多少等,同时也便于监管部门对整个金融市场的风险状况进行宏观把控和监测预警,及时发现潜在的系统性风险。
- 市场营销领域
- 客户细分应用:
企业在对客户群体进行分析时,收集了大量关于客户的信息,包括年龄、性别、收入水平、消费频次、购买产品种类、地域等多维度的数据,这些数据维度众多,不利于直接分析客户的行为模式和需求差异。
通过 PCA 降维,将客户数据投影到低维空间,例如在二维或三维空间中可以清晰地看到不同客户群体呈现出的聚类情况,根据降维后的主成分得分,可以把客户细分成不同的类别,如高消费高忠诚度的优质客户群体、价格敏感型的大众客户群体、偶尔消费的潜在客户群体等。
企业可以针对不同细分客户群体制定差异化的营销策略,比如对优质客户提供专属的高端服务和优惠活动以提高其粘性,对价格敏感型客户推出更多性价比高的产品和促销活动等,提高市场营销的精准性和效果,增强企业的市场竞争力。 - 市场趋势分析应用:
在分析整个市场的产品销售趋势、消费者偏好变化等情况时,涉及到众多产品属性(功能、外观、价格区间等)以及不同时间段的销售数据等多维度信息。
采用 PCA 降维,能够把复杂的市场数据简化,在低维空间中发现市场趋势的主要变化方向,比如哪些产品属性的综合变化是消费者当前更关注的(对应主成分所反映的维度),哪些趋势是正在兴起或者衰退的,企业可以依据这些分析结果及时调整产品研发方向、生产计划以及营销策略,更好地顺应市场变化,提前布局以占据市场先机。
- 环境科学领域
- 空气质量监测数据分析:
在空气质量监测中,会同时测量多种污染物的浓度指标,如二氧化硫(SO₂)、二氧化氮(NO₂)、可吸入颗粒物(PM10)、细颗粒物(PM2.5)、臭氧(O₃)等,以及气象因素如温度、湿度、风速、风向等,不同监测站点在不同时间点采集的数据构成了高维的数据集合。
利用 PCA 降维,可以找出影响空气质量的主要因素组合(体现在主成分上),比如发现某个主成分主要反映了工业排放相关污染物与特定气象条件的综合影响模式,另一个主成分体现了交通尾气排放与局部气象环境的关联情况。
通过降维后的数据可视化以及进一步分析,可以帮助环保部门更清晰地了解空气质量变化的主要驱动因素,有针对性地制定污染防控策略,比如在特定主成分所对应的高污染风险时段和区域加强对相关污染源的管控,优化空气质量监测网络的布局等,提升环境空气质量保障的科学性和有效性。 - 土壤质量评估应用:
在评估土壤质量时,需要考虑土壤的物理性质(如土壤质地、孔隙度等)、化学性质(酸碱度、各种养分含量如氮、磷、钾等、重金属含量等)以及生物性质(微生物种类和数量等)众多方面的指标,形成高维的土壤质量数据。
PCA 降维可以将这些复杂的土壤质量指标综合简化,找到关键的主成分来表征土壤质量的主要特征和变化趋势。例如在研究不同土地利用类型(农田、林地、草地等)下土壤质量差异或者土壤污染修复过程中土壤质量演变情况时,降维后的数据能够直观呈现出不同样本之间的关系,帮助科研人员和农业、环保部门确定哪些是影响土壤质量的核心因素,为合理的土地利用规划、土壤改良措施制定以及污染土壤修复方案设计提供依据。
- 工业生产领域
- 产品质量控制应用:
在制造业生产过程中,为了保证产品质量,会对产品的多个质量特性进行检测,比如机械零件的尺寸精度、表面粗糙度、硬度等物理特性,以及电子产品的各项电气性能指标等,众多质量特性指标构成了高维的质量数据。
通过 PCA 降维,将这些质量数据投影到低维空间,能够快速发现哪些质量特性之间存在关联性(通过主成分系数体现),哪些主成分反映了产品质量的关键变化模式。例如在生产线上实时监测产品质量时,利用降维后的数据可以更高效地判断产品是否合格,及时发现质量异常波动情况(当降维后的数据超出正常范围时),便于快速定位是哪些生产环节或因素导致了质量问题,从而采取相应的调整措施,提高产品质量的稳定性和一致性,降低次品率。 - 生产过程优化应用:
在工业生产流程中,涉及到多个工艺参数(如温度、压力、时间、物料流量等)以及多个生产环节的状态指标(如设备运行参数、中间产品质量指标等),整体数据维度很高。
运用 PCA 降维,可以分析出哪些工艺参数组合对最终产品质量、生产效率等关键目标影响最大(通过主成分所反映的综合因素),帮助企业优化生产工艺参数设置,合理安排生产环节顺序和资源配置,提高生产过程的整体效率,降低生产成本。例如,在化工生产中,不同的反应阶段有着各异的温度、压强、催化剂用量等诸多工艺参数要求,同时各反应装置还有诸如搅拌速率、设备内部温度分布均匀性等运行状态指标,这些数据共同构成了高维的信息集合。通过收集大量生产批次对应的相关数据并应用 PCA 降维,企业可以发现某些主成分与最终产品的纯度、收率等质量关键指标紧密相关,这些主成分对应的是特定几个工艺参数和设备运行状态指标的综合作用。
基于这样的分析结果,企业能够精准地调整那些影响较大的工艺参数,比如确定最佳的反应温度区间、精准的物料流量数值等,避免不必要的参数波动,确保生产过程稳定且高效。同时,也可以依据主成分所揭示的各环节关联性,对生产环节顺序进行优化,减少不必要的等待时间或者中间品的周转损耗。而且,通过聚焦关键参数组合进行资源配置,像合理安排能源供应、人力监控重点环节等,避免资源浪费在对生产影响不大的方面,从而实现生产成本的有效降低,增强产品在市场上的价格竞争力。
在机械制造领域同样如此,对于零部件加工过程,像切削加工时的切削速度、进给量、切削深度,还有机床的主轴转速、刀具磨损程度等众多因素影响着最终产品的尺寸精度、表面粗糙度等质量情况。借助 PCA 降维,能找出决定产品质量和加工效率的核心参数组合,企业据此可优化数控编程中的参数设定,及时更换刀具以维持最佳加工状态,合理调配操作人员对不同工序的关注度等,提升整个加工生产线的产出效率,减少因质量不合格导致的原材料浪费、返工成本以及设备过度损耗等费用支出,使得生产效益得到显著提高。
在电子制造行业,比如电路板的生产,锡膏印刷环节涉及刮刀压力、印刷速度、钢网开孔尺寸等参数,回流焊时有升温速率、峰值温度、保温时间等关键要素,并且各环节还有相应的设备精度、焊点质量检测指标等数据维度。运用 PCA 降维分析后,企业可以明晰哪些综合因素对电路板最终的电气性能、焊接可靠性起着主导作用,进而精准调控相关工艺参数,优化生产流程中各环节的衔接配合,提高良品率,减少因次品产生的物料成本、维修成本以及额外的质量检测成本,推动整个生产过程朝着更高效、更经济的方向发展。
PCA 降维在工业生产领域的生产过程优化方面发挥着重要作用,它就像是一把 “数据手术刀”,帮助企业从繁杂的高维生产数据中剖析出关键所在,为实现高质量、高效率、低成本的生产目标提供有力的数据支撑和决策依据。