热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

pca各个向量之间的相关度_机器学习十大经典算法之PCA主成分分析

PCA主成分分析法简介主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在

PCA主成分分析法简介

主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。

PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上,使降维后信息量损失最小。

总而言之,PCA的概念很简单:减少数据集的维数,同时保留尽可能多的主要信息。

PCA主要步骤去除平均值

计算协方差矩阵

计算协方差矩阵的特征值和特征向量

将特征值排序

保留前N个最大的特征值对应的特征向量

将原始特征转换到上面得到的N个特征向量构建的新空间中(最后两步,实现了特征压缩)

标准化

此步骤的目的是标准化输入数据集,使数据成比例缩小。

更确切地说,在使用PCA之前必须标准化数据的原因是PCA方法对初始变量的方差非常敏感。也就是说,如果初始变量的范围之间存在较大差异,那么范围较大的变量占的比重较大,和较小的变量相比(例如,范围介于0和100之间的变量较0到1之间的变量会占较大比重),这将导致主成分的偏差。通过将数据转换为同样的比例可以防止这个问题。

求每一个特征的平均值,然后对于所有的样本,每一个特征都减去自身的均值。

equation?tex=z%3D%5Cfrac%7Bvalue-mean%7D%7Bstandard+deviation%7D+%5C%5C

经过去均值处理之后,原始特征的值就变成了新的值,在这个新的norm_data的基础上,进行下面的操作。

计算协方差矩阵

此步骤的目的是了解输入数据集的变量相对于彼此平均值变化,换句话说,查看它们是否存在关系。因为有时候,变量由于高度相关,这样就会包含冗余信息。因此,为了识别变量的相关性,我们计算协方差矩阵。

下面以二维矩阵为例:

equation?tex=C%3D%5Cbegin%7Bbmatrix%7D+cov%28x_%7B1%7D%2Cx_%7B1%7D%29+%26cov%28x_%7B1%7D%2Cx_%7B1%7D%29+%5C%5C++cov%28x_%7B2%7D%2Cx_%7B1%7D%29+%26cov%28x_%7B2%7D%2Cx_%7B2%7D%29++%5Cend%7Bbmatrix%7D+%5C%5C

上述矩阵中,对角线上分别是特征x1和x2的方差,非对角线上是协方差。协方差大于0表示x1和x2。若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。

计算协方差矩阵的特征值和特征向量

求协方差矩阵

equation?tex=C的特征值

equation?tex=%CE%BB和相对应的特征向量

equation?tex=u(每一个特征值对应一个特征向量):

equation?tex=Cu%3D%5Clambda+u+%5C%5C

特征值

equation?tex=%CE%BB会有

equation?tex=N个,每一个

equation?tex=%CE%BB_%7Bi%7D对应一个特征向量

equation?tex=u_%7Bi%7D,将特征值λ按照从大到小的顺序排序,选择最大的前k个,并将其相对应的k个特征向量拿出来,我们会得到一组{(λ1,u1),(λ2,u2),...,(λk,uk)}。

将原始特征投影到选取的特征向量上,得到降维后的新K维特征

这个选取最大的前k个特征值和相对应的特征向量,并进行投影的过程,就是降维的过程。对于每一个样本

equation?tex=Xi,原来的特征是

equation?tex=%28xi_1%EF%BC%8Cxi_2%2C%E2%80%A6%2Cxi_n%29%5ET,投影之后的新特征是

equation?tex=%28y%5Ei_1%EF%BC%8Cy%5Ei_2%2C...%2Cy%5Ei_k%29%5ET ,新特征的计算公式如下:

PCA算法的主要优点仅仅需要以方差衡量信息量,不受数据集以外的因素影响。

各主成分之间正交,可消除原始数据成分间的相互影响的因素。

计算方法简单,主要运算是特征值分解,易于实现。

PCA算法的主要缺点主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。

方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

参考https://zhuanlan.zhihu.com/p/58663947

https://blog.csdn.net/lanyuelvyun/article/details/82384179



推荐阅读
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 深度学习理论解析与理解
    梯度方向指示函数值增加的方向,由各轴方向的偏导数综合而成,其模长表示函数值变化的速率。本文详细探讨了导数、偏导数、梯度等概念,并结合Softmax函数、卷积神经网络(CNN)中的卷积计算、权值共享及池化操作进行了深入分析。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 最近团队在部署DLP,作为一个技术人员对于黑盒看不到的地方还是充满了好奇心。多次咨询乙方人员DLP的算法原理是什么,他们都以商业秘密为由避而不谈,不得已只能自己查资料学习,于是有了下面的浅见。身为甲方,虽然不需要开发DLP产品,但是也有必要弄明白DLP基本的原理。俗话说工欲善其事必先利其器,只有在懂这个工具的原理之后才能更加灵活地使用这个工具,即使出现意外情况也能快速排错,越接近底层,越接近真相。根据DLP的实际用途,本文将DLP检测分为2部分,泄露关键字检测和近似重复文档检测。 ... [详细]
author-avatar
天使犯罪de快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有