京公网安备 11010802034615号
经营许可证编号:京B2-20210330
为什么要进行数据降维?因为实际情况中我们的训练数据会存在特征过多或者是特征累赘的问题,比如:
一个关于汽车的样本数据,一个特征是”km/h的最大速度特征“,另一个是”英里每小时“的最大速度特征,很显然这两个特征具有很强的相关性
拿到一个样本,特征非常多,样本缺很少,这样的数据用回归去你和将非常困难,很容易导致过度拟合
PCA算法就是用来解决这种问题的,其核心思想就是将 n 维特征映射到 k 维上(k < n),这="" k="" 维是全新的正交特征。我们将这="" k="" 维成为主元,是重新构造出来的="" k="" 维特征,而不是简单地从="" n="" 维特征中取出其余="" n-k="">
PCA 的计算过程
假设我们得到 2 维数据如下:
其中行代表样例,列代表特征,这里有10个样例,每个样例有2个特征,我们假设这两个特征是具有较强的相关性,需要我们对其进行降维的。
第一步:分别求 x 和 y 的平均值,然后对所有的样例都减去对应的均值
这里求得 x 的均值为 1.81 , y 的均值为 1.91,减去均值后得到数据如下:
注意,此时我们一般应该在对特征进行方差归一化,目的是让每个特征的权重都一样,但是由于我们的数据的值都比较接近,所以归一化这步可以忽略不做
第一步的算法步骤如下:

第四步:将特征值从大到小进行排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征矩阵
这里的特征值只有两个,我们选择最大的那个,为: 1.28402771 ,其对应的特征向量为:
注意:matlab 的 eig 函数求解协方差矩阵的时候,返回的特征值是一个特征值分布在对角线的对角矩阵,第 i 个特征值对应于第 i 列的特征向量
第五步: 将样本点投影到选取的特征向量上
假设样本列数为 m ,特征数为 n ,减去均值后的样本矩阵为 DataAdjust(m*n),协方差矩阵为 n*n ,选取 k 个特征向量组成后的矩阵为 EigenVectors(n*k),则投影后的数据 FinalData 为:
FinalData (m*k) = DataAdjust(m*n) X EigenVectors(n*k)
得到的结果是:
这样,我们就将 n 维特征降成了 k 维,这 k 维就是原始特征在 k 维上的投影。
整个PCA的过程貌似很简单,就是求协方差的特征值和特征向量,然后做数据转换。但为什么协方差的特征向量就是最理想的 k 维向量?这个问题由PCA的理论基础来解释。
PCA 的理论基础
关于为什么协方差的特征向量就是 k 维理想特征,有3个理论,分别是:
最大方差理论
最小错误理论
坐标轴相关度理论
这里简单描述下最大方差理论:
最大方差理论
信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。因此我们认为,最好的 k 为特征既是将 n 维样本点转换为 k 维后,每一维上的样本方差都很大
PCA 处理图解如下:
降维转换后:
上图中的直线就是我们选取的特征向量,上面实例中PCA的过程就是将空间的2维的点投影到直线上。
那么问题来了,两幅图都是PCA的结果,哪一幅图比较好呢?
根据最大方差理论,答案是左边的图,其实也就是样本投影后间隔较大,容易区分。
其实从另一个角度看,左边的图每个点直线上的距离绝对值之和比右边的每个点到直线距离绝对值之和小,是不是有点曲线回归的感觉?其实从这个角度看,这就是最小误差理论:选择投影后误差最小的直线。
再回到上面的左图,也就是我们要求的最佳的 u ,前面说了,最佳的 u 也就是最佳的曲线,它能够使投影后的样本方差最大或者是误差最小。
另外,由于我们前面PCA算法第一步的时候已经执行对样本数据的每一维求均值,并让每个数据减去均值的预处理了,所以每个特征现在的均值都为0,投影到特征向量上后,均值也为0.因此方差为:


最佳投影直线就是特征值 λ 最大是对应的特征向量,其次是 λ 第二大对应的特征向量(求解的到的特征向量都是正交的)。其中 λ 就是我们的方差,也对应了我们前面的最大方差理论,也就是找到能够使投影后方差最大的直线。
Python实现
1.代码实现
伪代码如下(摘自机器学习实战):

2.代码下载
下载地址: https://github.com/jimenbian/PCA
loadDataSet函数是导入数据集。
PCA输入参数:参数一是输入的数据集,参数二是提取的维度。比如参数二设为1,那么就是返回了降到一维的矩阵。
PCA返回参数:参数一指的是返回的低维矩阵,对应于输入参数二。参数二对应的是移动坐标轴后的矩阵。
上一张图,绿色为原始数据,红色是提取的2维特征。
Matlab 实现
function [lowData,reconMat] = PCA(data,K)[row , col] = size(data);meanValue = mean(data);%varData = var(data,1,1);normData = data - repmat(meanValue,[row,1]);covMat = cov(normData(:,1),normData(:,2));%求取协方差矩阵[eigVect,eigVal] = eig(covMat);%求取特征值和特征向量[sortMat, sortIX] = sort(eigVal,'descend');[B,IX] = sort(sortMat(1,:),'descend');len = min(K,length(IX));eigVect(:,IX(1:1:len));lowData = normData * eigVect(:,IX(1:1:len));reconMat = (lowData * eigVect(:,IX(1:1:len))') + repmat(meanValue,[row,1]); % 将降维后的数据转换到新空间end
调用方式
function testPCA%%clcclearclose all%%filename = 'testSet.txt';K = 1;data = load(filename);[lowData,reconMat] = PCA(data,K);figurescatter(data(:,1),data(:,2),5,'r')hold onscatter(reconMat(:,1),reconMat(:,2),5)hold offend
效果图

数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
【核心关键词】大数据、可视化、存储、架构、客户、离线、产品、同步、实时、数据仓库、数据分析、数据可视化、存储数据、离线 ...
2026-05-21在电商流量红利消退、公域获客成本持续走高的当下,存量用户深度挖掘已成为店铺增收增效的核心抓手。相较于付费投放获取的陌生新 ...
2026-05-21 很多数据分析师每天盯着几十个指标,但当被问到“这套指标要支撑什么业务目标”“指标之间是什么逻辑关系”“业务变化时如何 ...
2026-05-21在数据驱动决策的时代,数据质量直接决定分析结果的可靠性与准确性,而异常值作为数据清洗中的核心痛点,往往会扭曲分析结论、误 ...
2026-05-20 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“哪些指标在所有行业都适用”“哪些指标只对电商有意义”“二者如何搭 ...
2026-05-20Agent的能力边界,很大程度上取决于其掌握的Skill质量和数量。传统做法是靠人工编写和维护Skill,但这条路很快会遇到瓶颈。业务 ...
2026-05-20在统计分析中,方差分析(ANOVA)是一种常用的假设检验方法,核心用于分析“一个或多个自变量对单个因变量的影响”,广泛应用于 ...
2026-05-19 很多数据分析师每天盯着GMV、DAU、转化率,但当被问到“什么是指标”“指标和维度有什么区别”“如何定义指标值的计算规则和 ...
2026-05-19想高效备考 CDA 一级,拒绝盲目刷题、冗余学习?《CDA 一级教材知识手册》重磅来袭!以官方教材为核心,浓缩 13 章 103 个核心考 ...
2026-05-19在数据统计分析中,卡方检验是一种常用的非参数检验方法,核心用于判断两个或多个分类变量之间是否存在显著关联,广泛应用于市场 ...
2026-05-18在企业数字化转型的浪潮中,很多企业陷入了“技术堆砌”的误区——上线了ERP、CRM、BI等各类系统,积累了海量数据,却依然面临“ ...
2026-05-18小陈是某电商平台的数据分析师。老板交给他一个任务:“我们平台的注册用户已经突破1000万了,想了解一下用户的平均月消费金额。 ...
2026-05-18【专访摘要】本次CDA持证专访邀请到拥有丰富物流供应链数据分析经验的赖尧,他结合自身在京东、华莱士、兰格赛等企业的从业经历 ...
2026-05-15在数字化时代,企业的每一次业务优化、每一项技术迭代,都需要回答一个核心问题:这个动作到底能带来多少价值?是提升了用户转化 ...
2026-05-15在数据仓库建设中,事实表与维度表是两大核心组件,二者相互关联、缺一不可,共同构成数据仓库的基础架构。事实表聚焦“发生了什 ...
2026-05-15 很多数据分析师沉迷于复杂的机器学习算法,却忽略了数据分析最基础也最核心的能力——描述性统计。事实上,80%的商业分析问 ...
2026-05-15【核心关键词】互联网、机会、运营、关键词、账户、数字化、后台、客户、成本、网络、数据分析、底层逻辑、市场推广、数据反馈 ...
2026-05-14在Python数据分析中,Pandas作为核心工具库,凭借简洁高效的数据处理能力,成为数据分析从业者的必备技能。其中,基于两列(或多 ...
2026-05-14 很多人把统计学理解为“一堆公式和计算”,却忽略了它的本质——一门让数据“开口说话”的科学。真正的数据分析高手,不是会 ...
2026-05-14在零售行业存量竞争日趋激烈的当下,客户流失已成为侵蚀企业利润的“隐形杀手”——据行业数据显示,零售企业平均客户流失率高达 ...
2026-05-13