ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

主成分分析与因子分析实例:一套PPT教案讲透降维与结构探索

主成分分析与因子分析实例:一套PPT教案讲透降维与结构探索 简介一份面向统计学与数据分析初学者、高校师生及职场数据分析人员的教学型PPT教案系统讲解主成分分析与因子分析两种降维方法的原理、步骤和SPSS实操。内容以100名学生六科成绩为实例围绕如何将6个变量压缩为一两个综合变量展开详细演示了数据标准化、协方差矩阵计算、特征值与特征向量求解、主成分选取及累计方差贡献率判断等环节同时介绍了因子分析中潜在共同因子的提取、旋转、载荷解释和因子得分计算。配套讲解配有SPSS输出结果解读帮助读者理解Component Matrix、Total Variance Explained等关键表格掌握根据特征值大小和累积贡献率确定主成分个数的常用标准真正理解‘降维’背后的数学逻辑与落地操作。完整课件共33页从二维椭圆几何直观逐步上升到高维椭球主成分一般模型图文并茂适合教师课堂展示与自学者按页研读。资源为单个pptx文件大小222KB便于下载后直接使用或二次修改。目前已有84人学习浏览是一份贴合应用场景的专业课程资料。1. 让主成分分析和因子分析实例在一套PPT教案里讲明白一份包含十几个指标的评估表填表人填到第8题就开始乱勾这是数据分析和培训场景里最常见的一幕。与其硬着头皮把所有指标都拿去做加权不如先问一句这些指标背后到底有几个综合维度主成分分析(PCA)和因子分析(FA)就是回答这个问题的两个标准工具前者把高维数据压缩成不相关的综合变量后者把观测变量拆成少数公因子与独特因子。这个标题里的「实例PPT学习教案」本质上是一份备课时可以直接改用的课件骨架既要有数学直觉也要有能照跑的代码输出还要有放在PPT上让人看得懂的图。这篇博文把它拆成能落地的主线先弄清楚两个方法各自做什么再动手跑真实的实例最后落到课件怎么组织。「PPT学习教案」这个词容易让人误以为它只讲幻灯片排版。真正值钱的部分是教案里的数据实例和解读逻辑。新手照着课件能复制出分析结果有经验的读者能从参数选择里看出边界什么时候该用PCA做降维什么时候该用因子分析做结构探索旋转方法为什么不是随便选的。下面按这条主线展开。2. 主成分分析实例从标准化到载荷表的完整链路PCA是这套教案的第一条主线。它的数学目标很简洁找一组相互正交的方向使数据在这些方向上的投影方差依次最大。第k个主成分的方差等于协方差矩阵的第k大特征值特征值占全体特征值之和的比例就是该主成分的方差贡献率。课件里只要把这句话解释清楚后面的代码和图表都只是它的展开。2.1 用最小代码在Python里跑通PCA实例我一般会用Python的scikit-learn先跑通一遍再决定课件里放哪些输出。下面这段代码能在Jupyter里直接复制运行数据用sklearn自带的wine数据集13个化学指标对应178个样本正好适合演示「指标多、样本中等」的真实情况。import pandas as pd from sklearn.datasets import load_wine from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA wine load_wine() X pd.DataFrame(wine.data, columnswine.feature_names) # 标准化让13个指标处于同一量纲否则量纲大的变量会主导主成分方向 scaler StandardScaler() X_scaled scaler.fit_transform(X) pca PCA(n_components6) scores pca.fit_transform(X_scaled) # 各主成分的方差贡献率与累计贡献率 ratio pca.explained_variance_ratio_ print(单个方差贡献率:, ratio.round(4)) print(累计方差贡献率:, ratio.cumsum().round(4))代码里最容易被忽略的是StandardScaler这一步。wine数据集里proline的数值在几百而酒精含量在十几如果不标准化第一主成分会被量纲大的变量几乎完全控制讲课时很容易得到「第一个主成分就是proline」这种没意义的结论。fit_transform先根据训练数据拟合均值和标准差再做标准化对PCA这类依赖协方差矩阵的方法这是必选动作。n_components6表示事先保留6个主成分实际保留几个要结合后面的累计贡献率再定这里先给一个宽松的上限。2.2 碎石图、方差贡献率与载荷表课件必须放的三组输出跑完代码不是终点教案里要让学生学会看三样东西碎石图、累计方差贡献率和载荷表。碎石图把每个主成分的方差贡献率按从大到小连成折线曲线上能找到明显的「肘部」肘部之前的主成分通常值得保留。import matplotlib.pyplot as plt # 碎石图横轴是主成分序号纵轴是方差贡献率 plt.plot(range(1, len(ratio) 1), ratio, o-) plt.xlabel(Principal Component) plt.ylabel(Explained Variance Ratio) plt.title(Scree Plot of Wine Dataset) plt.show() # 载荷表每列是一个主成分每行是原始变量 loadings pd.DataFrame( pca.components_.T, indexX.columns, columns[fPC{i1} for i in range(pca.n_components_)], ) print(loadings.round(3))载荷表的每一格表示原始变量与对应主成分之间的相关程度绝对值越大说明该变量对这个主成分的贡献越直接。课件里放载荷表时不需要放全部6列通常只放被保留的前两个或前三个主成分否则信息密度太高学生看不出结构。wine数据集跑出来的结果里PC1的方差贡献率大约在0.36左右PC2在0.19上下前两个主成分累计勉强过半这正是「压缩却不失真」需要权衡的地方。2.3 PCA的尺度问题与参数边界的补充说明PPT教案里容易被跳过的还有两个参数svd_solver和whiten。svd_solver默认是autoscikit-learn会根据数据形状自动在full、covariance_eigh等求解方式之间选择教学场景直接用默认值即可不用纠结底层用的是SVD还是特征值分解。whiten的作用是把主成分的方差归一化让各主成分在数值上可比如果之后要把主成分得分作为聚类或回归的特征可以打开如果目的是解读载荷建议保持默认的False否则载荷含义会变得不直观。提示PCA假定变量之间存在线性关系且各主成分之间不相关。如果数据里有明显缺失值需要先做填补或用均值替代如果变量之间呈现明显的非线性关系PCA的结果会出现伪主成分这时要先做非线性映射或改用其他方法。这一章在教案中的定位是「先让方法跑通」。学生看到实际输出后对累计贡献率、载荷这两个概念有了直观印象下一章的因子分析才有参照物。3. 因子分析实例旋转、KMO与因子载荷的教案级拆解因子分析与PCA在代码上很像但在模型思想上完全不同。PCA是在找线性组合后的综合变量目标是方差最大因子分析则在假设观测变量背后存在少数不可直接观测的公因子观测变量的相关性正是由这些公因子引起的。课件里如果只展示两种方法的代码和图表不解释这个模型差异学生很快就会把二者混为一谈。3.1 因子分析实例先用Bartlett检验和KMO把数据门槛立住做因子分析之前先要判断数据是否适合做因子分析。这里要看两个指标Bartlett球形检验的p值要小于0.05说明相关矩阵不是单位矩阵变量之间存在可被提取的公共信息KMO值一般要求大于0.6越接近1表示样本充足性越好。wine数据的变量之间相关性明显跑出来通常是显著且KMO在0.7左右正好适合演示。from factor_analyzer import FactorAnalyzer from factor_analyzer.factor_analyzer import calculate_kmo, calculate_bartlett_sphericity # Bartlett球形检验p值小于0.05才认为适合做因子分析 chi2, p_value calculate_bartlett_sphericity(X_scaled) kmo_all, kmo_model calculate_kmo(X_scaled) print(Bartlett p , round(p_value, 6)) print(KMO , round(kmo_model, 3))calculate_kmo内部要先计算相关矩阵并求逆所以变量之间如果存在近似完全共线这一步会报奇异矩阵错误。这种情况在真实问卷数据里经常发生——第5题和第6题几乎问的是同一件事。处理办法是先把两两相关系数超过0.9的变量删掉一组再重新做检验。3.2 设定因子个数与旋转方式varimax不是唯一答案因子个数常用的判断标准有三个特征值大于1Kaiser准则、碎石图的拐点、以及累计方差贡献率达到某个阈值比如60%。课件教案里讲Kaiser准则最易于执行但经验上问卷类数据按「特征值大于1」选出来的因子数经常比理论预期多这时要回到碎石图看拐点并兼顾每个因子至少要有两到三个载荷显著的指标。# 固定抽取3个公因子旋转方式用varimax正交旋转 fa FactorAnalyzer(n_factors3, rotationvarimax, methodprincipal) fa.fit(X_scaled) # 旋转后的因子载荷矩阵 loadings_fa pd.DataFrame( fa.loadings_, indexX.columns, columns[F1, F2, F3], ) print(loadings_fa.round(3)) # 因子方差贡献率与累计贡献率 print(fa.get_factor_variance())methodprincipal指用主成分法提取公因子它是入门教案最稳妥的提取方法因为它直接复用PCA里的特征值分解学生理解起来没有额外负担。rotationvarimax是方差最大正交旋转它让每个因子上的载荷向0和1两极分化原始变量更容易被归类到某个因子下这种「分类清晰」的输出最适合放进PPT的表格里。斜交旋转比如promax允许因子之间存在相关性适合教育学、心理学里因子天然相关的量表数据但课件讲解时还要额外解释因子相关系数矩阵信息量偏大。3.3 从旋转后载荷表读取因子含义旋转前变量往往在多个因子上都有中等载荷看不出结构旋转后每个变量应该尽量只在一个因子上有明显载荷。读载荷表时我习惯先按载荷绝对值0.4以上筛出每个因子承载的指标再给每个因子命名。比如wine数据旋转后F1可能主要承载与酚类、类黄酮相关的化学指标F2承载与酒精度、灰分相关的变量F3则与颜色等指标相关。命名时要注意因子不是数学计算出来的名字而是人根据载荷表内容归纳出来的。提示如果旋转后某个因子只对应一个指标或所有指标的载荷都不到0.4说明因子个数设多了或该变量不应参与本次分析。教学演示时可以直接删掉这类变量重跑会得到更好的演示效果。接下来学生应该已经能分辨PCA的输出是综合得分因子分析的输出是结构。但具体选哪种还要看使用场景这就是下一章要解决的问题。4. 主成分分析和因子分析在课件里的选择边界前两章把两种方法各自的流程讲完后教案真正体现水平的地方在于对比。很多培训课件把两种方法并列讲却没有给出「什么时候用哪个」的判断框架导致学生学会操作却不会选方法。4.1 PCA与因子分析的模型目标差异方差最大与共同因子从数学模型上看PCA是对原始变量做线性变换得到的新变量是原始变量的精确线性组合不存在误差项因子分析则把每个观测变量分解成公共因子部分和独特因子部分也就是X ΛF ε这里的ε是因子模型特有的误差。这就带来一个实际后果PCA的因子得分是精确计算的因子分析的因子得分需要通过回归或加权方法估计二者落在PPT教案里的写法也不一样后者要注明「估计值」。PCA与因子分析在目标上的关键差别值得单独列一页PPTPCA回答「哪些综合变量能最大限度保留方差」因子分析回答「哪些潜在的维度能解释变量之间的相关」。前者适合数据压缩后者适合结构探索和问卷效度检验。4.2 四种应用场景下先选谁一张表讲清套路实操中判断用哪一方法并不复杂看目的是压缩、可视化还是建结构。下表列四种最常见的场景可以在教案的对比页直接沿用。场景推荐方法理由20个指标压缩成5个再送进回归模型主成分分析主成分得分互不相关便于消除共线性问卷量表的维度结构验证因子分析因子模型自带误差项能体现测量视角高维数据降维后在二维平面展示主成分分析前两主成分直接可画散点图解释成本最低构建综合评价指标体系给每个维度赋予含义因子分析旋转后载荷表能给出每个因子的实际含义这张表的逻辑不能反过来理解。因子分析并非不能用于降维只是它降维后的得分带有估计误差交给后续建模会把误差传导给下游模型PCA也不是不能用于结构探索只是它对每个变量一视同仁与「背后存在公因子」的理论假设不匹配。教案里建议让学生先说出自己的分析目标再对照表选方法而不是先看数据形态。4.3 判断结果的三个参考值共同度、旋转载荷门槛与稳定性选完方法后教案里还需要留一页讲怎么评价结果好坏。因子分析要看共同度公因子方差它表示每个原始变量的方差里有多少能被当前因子解释低于0.4的变量说明它和整体结构基本无关考虑删除旋转后载荷的门槛值通常取0.4或0.5但经验上应该把和载荷表一起汇报而不是只报保留值。PCA则要关注累计贡献率与主成分得分在不同样本子集上的稳定性——如果删掉10%的样本后前两个主成分的方向发生明显变化说明数据的稳健性不够不适合做后续建模。提示评价稳定性时可以把样本随机分成两份分别做PCA后比较载荷表的符号和量级。注意因子或主成分的符号本身没有方向含义正负纯属旋转与特征向量符号选择的结果比较时看绝对值。5. 把实例图表做成PPT讲授稿的三个落点代码和结果都齐了之后剩下的是怎么呈现在PPT上。标题里的「PPT学习教案」决定了这套课件还得有讲授设计不能只是代码截图堆叠。5.1 教案页序串起一套完整的课堂讲解我一般会把整套课件按四段组织第一段用一份「13个指标评估表」的截图引入问学生靠人眼能看出几个维度第二段讲PCA用碎石图和载荷表回答刚才的问题第三段讲因子分析用旋转前后的载荷对比展示「结构变清晰」的过程第四段回到对比表布置一个小作业给一组新数据让学生先写分析目标再决定方法。这个顺序的好处是每一页都在回答问题学生不会迷失在数学公式里。5.2 图表放在PPT里的分辨率与导出处理关于图表输出有几个实操细节值得提醒matplotlib保存图片时使用dpi300以上保存为SVG或EMF矢量格式再放进PPT避免导出PDF时图片变糊PPT里的png导出为pdf时如果出现模糊多半是原图分辨率不足重新以矢量格式插入比在PPT里放大更有效。热力图展示载荷时注意颜色映射的对称性深色表示高载荷浅色表示低载荷色阶两端都要标注数值。5.3 讲课时最容易翻车的三句表述最后整理讲课时容易出错的表述第一句是「主成分就是因子」正确说法是主成分是原始变量的线性组合因子是解释变量相关的潜在结构第二句是「旋转后主成分解释的方差变大了」实际上旋转不会改变累计方差贡献率只会重构载荷分布第三句是「特征值大于1就一定保留」这只是经验准则要看碎石图和业务指标数量综合判断。讲师把这三种表述变成正反对照放在课件备注页里按顺序讲两类方法基本不会讲混。本文还有配套的精品资源点击获取
返回列表