数据挖掘day4——主成分分析
来源:互联网 发布:网络伤感情歌大全100首 编辑:程序博客网 时间:2024/05/31 13:16
参考书目:《数据挖掘:概念、模型方法和算法》 第二版 清华大学出版社
主成分分析(Principal components analysis)-最大方差解释
主成分分析(Principal component analysis, PCA)是一种分析、简化数据集的技术。主成分分析常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。主成分分析由皮尔·卡尔逊(Karl Pearson)在1901年分明,用于分析数据建立数理模型。在不同领域,PCA也称为奇异值分解(SVD)、Hotelling转换和经验正交函数(EOF)方法,等。其方法是通过协方差矩阵(共变异数矩阵)进行特征分解,以得出数据的主成分(即特征向量)和他们的权值(即特征值)。就均值平方误差而言,PCA是最佳的线性维规约技术;但就特征的协方差矩阵而言,PCA是一个二流的方法。实际上,PCA的目标是找出初始特征的几个方差最大的正交线性组合,以减少数据的维度,因为方差依赖于变量的取值范围,所以习惯上先标准化每个变量。
其基本概念可正式描述如下:n维向量样本集X={x1,x2,...,xn}应转换成另一个相同维度的集Y={y1,y2,...,yn}但是y-s的一个属性把大部分信息内容存储在前几维中,以减少数集的维度,而信息损失很少。
这种转换假设,高信息等于高方差。因此,如果想把一组输入维度转换为只有一个维度的Y,应该通过矩阵计算将X转换为Y。 Y= A·X
找出A,使Y对已知数据集的方差最大。在此转换中获得一维的Y叫做第一主成分。
下面将直接给出PCA的计算步骤:(其中涉及的线性代数和统计学知识并没有给出详细证明,在文章末尾将会给出对某些证明有益的博文)
(1)将样例标准化。即将样本数据取去平均值(使每个特征的均值为0)
(2)就特征的协方差矩阵S。
其中
(3)求协方差矩阵的特征值和特征向量。
求得协方差矩阵的特征值λ1>=λ2>=λ3>=...>=λn>=0
和与之相对应的特征向量e1,e2,e3,...,en,这些特征向量叫做主轴。有线性代数的相关知识可知这些特征向量不想关的(即这些向量之间是互相正交的)。
主轴是n维空间转换后的新轴,新变量是互不相关的,第i个成分的方差等于第i个特征值(关于为什么第i个成分的方差等于第i个特征值,可以证明)。因为λi的值是经过排序的,所以数据集的大多数信息都集中在少数主成分中。
在完成以上步骤之后,接下来的问题是用多少个主成分可以很好的描述数据呢?
一个简单的方法是分析方差的比例。用前m个特征值之和除以所有方差(特征值)之和,得到一个基于前m个主成分的质量分析值。比如,如果该值超多90%就是合格的。
主成分有时难以解释。尽管它们在构建为初始特征的限行组合时是不相关的特征,且具备需要的属性,但他们不一定对有意义的物理量。在一些情况下,这个领域的科学家对这种解释能力的丧失并不满意,所以它们会选择其他的方法,通常是特征选择技术。
扩展阅读:关于主成分分析的五个问题
协方差矩阵的几何解释
样本方差为何除以n-1
主成分分析(Principal components analysis)-最大方差解释
wikipedia: https://zh.wikipedia.org/wiki/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90
https://en.wikipedia.org/wiki/Principal_component_analysis
0 0
- 数据挖掘day4——主成分分析
- 数据挖掘方法(1)主成分分析
- 数据挖掘总结之主成分分析与因子分析
- Python数据挖掘建模 chapter_6 主成分分析(简)
- HAWQ + MADlib 玩转数据挖掘之(六)——主成分分析与主成分投影
- 数据分析-主成分分析
- 数据挖掘学习------------------1-数据准备-4-主成分分析(PCA)降维和相关系数降维
- 数据挖掘——数据分析挖掘体系
- PCA——主成分分析
- 主成分分析—Principal components analysis
- 主成分分析法之测试(本例子来源于<<基于开源工具的数据挖掘>>一书)
- 数据降维技术——PCA(主成分分析)
- PYTHON机器学习实战——PCA主成分分析 数据降维
- Python数据分析与挖掘实战—挖掘建模
- 数据挖掘——亲和性分析
- 数据挖掘关联分析——基本概念
- “多变量分析”——数据挖掘、数据分析
- R语言与数据分析之五:主成分分析
- iOS汉字转成拼音
- C++ 学习(派生类到基类准还的可访问性)
- Pod 出错 xcrun: error: active developer path
- 一句话彻底明白java乱码问题
- 在字符串中找出连续最长的数字串
- 数据挖掘day4——主成分分析
- vector利用swap()函数进行内存的释放 和capacity()、size()、clear()、reserve()函数
- Android手机端将logcat过滤并保存到文件里的方法
- maven+springMVC+mybatis+junit详细搭建过程
- 三级listview的实现
- 在构造函数中抛出异常的结果
- VS2010发布、打包安装程序
- Scala Infix Type
- 用COCOS-2DX做一个RPG游戏(一)