降维(一)----说说主成分分析(PCA)的源头

本文深入探讨了主成分分析(PCA)的基本原理与实现步骤,详细解释了如何通过协方差矩阵的特征值分解来确定数据的主要变化方向。

降维系列:

---------------------   

 

   主成分分析(PCA) 在很多教程中做了介绍,但是为何通过协方差矩阵的特征值分解能够得到数据的主成分?协方差矩阵和特征值为何如此神奇,我却一直没弄清。今天终于把整个过程整理出来,方便自己学习,也和大家交流。

  • 提出背景

       以二维特征为例,两个特征之间可能存在线性关系的(例如这两个特征分别是运动的时速和秒速度),这样就造成了第二维信息是冗余的。PCA的目标是为了发现这种特征之间的线性关系,检测出这些线性关系,并且去除这线性关系。

       还是以二维特征为例,如下图。特征之间可能不存在完全的线性关系,可能只是强的正相关。如果把x-y坐标分解成u1-u2坐标,而u1轴线上反应了特征的主要变化(intrinsic),而u2的特征变化较小,其实可以完全理解为一些噪声的扰动而不去考虑它。PCA的任务就是找到u1和u2。

 

 

  • 预处理:

        将每一维特征的均值中心化,方差归一化。

  • PCA的数学目标:

        特征的主方向,就是特征幅度变化最大的方向(“major axis of variation”)。这一点理解很重要。从反面理解,幅度变化最小的方向就是没有变化,或者非常非常小的变化(可以忽略的变化),相对来说可利用价值最小,最可以忽略。而为了找到特征变化最大的方向,假设单位方向矢量为u,则特征点x在u方向的投影点x’距离原点的距离为d=xTu(第一次错误地写成了d=x,感谢@zsfcg的留言,现已改正)。所有的样本点都在一个方向投影后,他们就都在同一条直线上了。而要比较它们之间变化的程度,只要比较d的方差就行。方差最大的u对应的方向就是我们要寻找的主方向。因此,我们的目标函数就成为了:   

                            (1)

        其中x的上标i表示数据集中的第i个样本,m表示数据集中的样本总数。(因为x已经中心化了,所以xu的均值也为0,因此xu的平方只和就是方差。)

        括号中的一项十分熟悉,就是协方差矩阵Σ!终于知道协方差矩阵是怎么来的了。再看一看上面的式子,协方差矩阵与投影的方向无关,之于数据集中的样本有关,因此协方差矩阵完全决定了数据的分布及变化情况(请和自相关矩阵区别)。

        目标函数如下:

                                                                            (2)

        用拉格朗日乘数法求解上面的最大化问题,很容易得到:

                                                                                              (3)

        看见没?!u就是Σ的特征向量,λ就是特征值。我们再把(3)代入(2),目标函数就变成了

                                                                             (4)

        可见,可以通过协方差矩阵的迹衡量方差的大小。最大的特征值λ(以及对应的特征向量u)决定了数据变化最大的方向。u就是这个单位方向。因此PCA的求解过程就是对协方差矩阵进行特征值分解,并找到最大的几个特征值的过程。

        再后面的过程就是由最大的k个特征值对应的特征向量组成一组新的基(basis),让原特征对这个新的基投影得到降维后的新特征。这个过程很多教程都介绍的很清楚了,我就不描述了。

        不过我还是想补充一下矩阵及其特征值的意义。矩阵应理解为一种空间变换(从一个空间到另一个空间的变换)。矩阵M是m×n维的,如果m=n则变换后空间维数不变,如果n<m则是降维了。我们考虑m=n的方阵。对M进行特征值分解,得到一组新的基,这组基可以理解为m维空间下的一组新的基坐标(引入它是因为这组基坐标是一种更有效的表达Rm维空间的方式),而对应的特征值,就是投影在基坐标下相应维的响应程度。如果特征值为0,代表在这一维下没有相应,不管是多少,乘过来都是0。特征值如果很接近0,那么任何数在这一维下投影后都会变小很多。所以从降维的角度考虑,可以将这一维忽略(也就是PCA中保留前k个特征值的目的)。奇异值分解也是同样的道理。

         PCA其实是最简单的降维方法之一了,很明显的劣势是它仅去除数据之间的线性相关性。对线性的改善往往通过kernel技术拓展到非线性的应用上。另外,PCA的这种降维不一定有助于分类,用于分类的降维方法之一就是LDA。从另一方面说,PCA是一种线性投影,保留了数据与数据之间的欧式距离,即原来欧式距离大的两点在降维后的空间中距离也应大(这样才好保证方差大)。而事实上数据有可能呈现某种流型结构,用PCA降维后数据将不能保持原有的流型结构。在这一方面常用的非线性降维方法是Locally linear embeddingLaplacian Eigenmaps,如下图所示:

 

        PCA的另一种推导方式是最小化投影后的损失(把降维理解为压缩,压缩后还原所得到的误差最小),在这篇文章中也有具体介绍,我也不多说了。

       写到这里,才发现我啥也没说,都是提供了各种文献的链接大笑

       另外,关于特征值和特征向量的更深理解,可以看本文

--------------------

jiang1st2010

原文地址:http://blog.youkuaiyun.com/jiang1st2010/article/details/8935219

### 主成分分析在工业质检中的应用 #### 方法介绍 主成分分析PCA)是种统计技术,用于并提取数据的主要特征。通过转换原始变量到组新的正交变量——即主成分,能够有效减少冗余信息,突出显示主要变化方向。 在工业质检场景下,PCA 可以帮助识别产品质量的关键影响因素,并辅助发现潜在的质量问题。具体来说: - **多源数据分析**:结合多种类型的生产数据,如生产设备的传感器读数、工艺参数以及产品图像等[^1]。 - **异常模式捕捉**:利用 PCA 的特性来检测偏离正常范围的数据点,从而实现早期预警和预防措施实施。 #### 应用实例 假设在个电子制造业环境中,企业希望监控 SMT(表面贴装技术)生产线上的焊接质量。为了达到这目标,可以从以下几个方面入手: 1. 收集来自多个源头的信息,包括但不限于: - 焊接机台内部各部件的工作状态指标(温度、压力、时间) - 生产线上传感器记录下的环境条件(湿度、气压) 2. 对收集到的数据执行预处理步骤,比如缺失值填补、噪声过滤等;接着采用 PCA 技术对高度的数据集进行压缩简化,保留最能反映整体趋势的部分。 3. 基于得到的新坐标系评估每批次产品的分布情况。如果某些批次明显偏离了历史平均水平,则提示可能存在质量问题,需进步调查确认原因所在。 4. 利用 Python 编程语言及其科学计算生态系统的支持来进行上述流程的操作。下面给出段简单的代码片段作为示范: ```python import pandas as pd from sklearn.decomposition import PCA import matplotlib.pyplot as plt # 加载数据 data = pd.read_csv('production_data.csv') # 初始化PCA模型, 设置n_components=0.95表示保留至少95%方差比例 pca = PCA(n_components=0.95) # 训练PCA模型并对原数据做变换 transformed_data = pca.fit_transform(data) # 绘制前两个主成分散点图查看样本间关系 plt.scatter(transformed_data[:, 0], transformed_data[:, 1]) plt.xlabel('First Principal Component') plt.ylabel('Second Principal Component') plt.title('PCA of Production Data') plt.show() ``` 这段脚本展示了如何加载实际生产的多元数据集,对其进行 PCA 处理后可视化展示结果。这有助于直观理解各个观测对象之间的相对位置差异,进而为后续深入研究提供线索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值