数据降维

PCA主成分分析应用

醉酒当歌 提交于 2020-03-08 18:28:03
主成分分析 PCA降维 Notes: KNN(K-NearstNeighor)有监督算法(近邻个数); KMeans无监督算法(最终聚类的个数/分成K类) 决策边界: datasets: 数据集载入 :load_digits() .data / .target / .target_names .images:张数1792 X 每张尺寸(8X8) PCA降维: fit_transform()返回降维后的数据 fit()仅 返回模型参数 可视化: 灰度图:plt.imshow(image,cmap=plt.cm.gray_r) 手写数字识别聚类: #手写数字数据集 1797张 8X8 from sklearn import decomposition from sklearn . cluster import KMeans digits_data = datasets . load_digits ( ) #载入数据集 X = digits_data . data #X.shape=>(1797,64) y = digits_data . target #降维 estimator = decomposition . PCA ( n_components = 2 ) reduce_data = estimator . fit_transform ( X ) #训练 model =

【算法原理】主成分分析(PCA)

十年热恋 提交于 2020-03-07 19:33:20
目标: 降低特征维度 如何降维: 基变换(将原始特征所依赖的基组变换为新的基组,基组改变,原始特征也会按照基组的变换而变)。 如何确定新基组: 变换后方差越大越好(保留的原始信息越多),同时基组中的基协方差要为0(协方差衡量变量间的相关程度,协方差为0则两个变量不相关,即基组中的基两两正交,几何表示为垂直)。 有了新基组的确定标准,该如何计算新基组: 利用协方差矩阵(对角线上是方差,其余位置是协方差,该矩阵为对称矩阵),因为实对称矩阵一定能找到单位正交的特征向量,所以利用协方差矩阵的对角化(考研数学知识)找到特征值及对应的特征向量。 特征向量与降维的关系: 选择出的特征向量乘以原始数据就可以实现对原始数据的降维。例如将150个具有4个特征的数据(150 4)乘以两个特征向量(加入为4 2),则原始数据降维成150*2,特征维度降为2维。 那么该如何选择特征向量个数及具体哪些特征向量呢: 以特征值为标准,特征值越大,代表该特征值所对应的特征向量越重要。对特征值大小排序,按照预先指定的降维后的特征数(如2),选择特征值排名前2的所对应的特征向量。 来源: CSDN 作者: 不停下脚步的乌龟 链接: https://blog.csdn.net/weixin_44680262/article/details/104718311

主成分分析详解以及python实现

China☆狼群 提交于 2020-02-22 22:33:41
主成分分析的基本概念 主成分分析(Principal Component Analysis,PCA)是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 主成分分析的意义 对于一组数据X,存在以下特征{x1,x2,x3},这些特征之间可能存在一些关联性,主成分分析就是利用代表数据之间关联性的协方差矩阵来去除数据的关联性,找到一组数据中最关键的要素。 举一个简单的例子,比如对于一组深海鱼的数据,有身长,体重,游速,体温等等。但是如果我们用这些数据来描述一条深海鱼,那就过于复杂了。显然,即使凭借我们从先验的感官中,就可以看出鱼的身长和体重这两组数据是有高度重合性的,身长长的鱼类体重必然沉。那么我们可不可以把这两种鱼类特征合并到一起呢。因为对于数据的分析而言,少了一个数据,就让整数据的空间下降了一个维度,这是十分必要的。 主成分分析用到的数学工具 协方差矩阵 协方差矩阵是利用标准化过后特征矩阵的转置乘以它本身来得到的,它是一个对角矩阵,用来表示特征与特征之间的关联性。 特征值与特征向量 一个矩阵的特征向量表示在乘以这个矩阵后只发生长度变化而不发生方向变化的向量,而特征值是这些向量乘以矩阵后的变化的程度。因此,求矩阵的特征向量,本质上是将矩阵分解为相互独立正交的向量,而特征值是这些向量对于矩阵本身影响的重要程度

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k

数据降维PCA

别说谁变了你拦得住时间么 提交于 2020-02-08 03:47:24
简介 @ 维基百科 在多元统计分析中,主成分分析(英语:Principal components analysis,PCA)是一种统计分析、简化数据集的方法。它利用正交变换来对一系列可能相关的变量的观测值进行线性变换,从而投影为一系列线性不相关变量的值,这些不相关变量称为主成分(Principal Components)。具体地,主成分可以看做一个线性方程,其包含一系列线性系数来指示投影方向。PCA对原始数据的正则化或预处理敏感(相对缩放)。 本文内容皆源自 Andrew Ng 目的 1.实现数据压缩 2.实现数据在2D或3D中可视化 算法 PCA(主成分分析) 步骤 1.数据预处理 采用归一化方法,是的均值为0,方差为1。 步骤,1.均值为0 2.方差为1 \(x_j^{(i)}={x_j-\mu}\frac{s_j} s_j为标准差即为样本中第j维数据的标准差\) 2.协方差矩阵 @ 维基百科 z即使PCA特征缩放后的结果。 3.选择适当的参数K \(其中x_apporx^{(i)}为x^{(i)}在压缩向量上的投影。\) S:对角矩阵,对角元素是Sigma的奇异值,非负且按降序排列。 建议 一般在机器学习中,先判断PCA处理可以给你的学习带来什么,做决定。 一般先在原数据上做学习处理,若学习速度太慢,再考虑使用PCA。 一般防止过拟合不采用PCA,而是加上正则化项。 来源:

建模随手记4 --- 主成分分析

五迷三道 提交于 2020-01-30 03:49:19
在进行数据处理时,有可能会遇到数据属性的数量要比每种数据的数据量还要多,甚至相当,而且对于这些不同属的数据所描述的信息有重合的时候,这时候需要对数据进行降维处理,来减少数据处理的维度。一句话来说就是当我们对一个对象进行数据分析时,所获得的数据的属性很多,为了减少数据处理的维度,我们可以通过计算出几个主要因素来代表这些数据,主成分分析可以做到这点。 比如说衡量一个人的智商,我们要综合其个方面因素来评价,数学成绩,语文成绩,英语成绩,各种成绩,但是我们可以选出数学成绩,理科成绩来衡量他的智商,虽然不能代表全部,但是可以代表大部分。 概述 主要参考《机器学习实战》,书中的介绍十分详细清楚,这里只记录代码实现以及分析数据的过程。 主成分分析实现要解决两个问题,降维度降到多少可以很好的表达原始数据,如何获得降维后的数据。 将多少维度 在确定降多少维度之前我们需要对数据进行标准化: X ∗ = X ‾ − μ σ X^{*}=\frac{\overline{X}-\mu}{\sigma} X ∗ = σ X − μ ​ 加载数据,同时进行数据预处理: import numpy as np from matplotlib import pyplot as plt import os from sklearn import preprocessing from pprint import

模式识别系列之特征降维(1)主成分分析

半城伤御伤魂 提交于 2020-01-19 11:54:20
目录 1-PCA概述 2-理论推导 2.1-向量的内积与投影: 2.2-基的表示与变换: 2.3-协方差矩阵: 2.4-PCA推导 3-几何理解 4-计算过程 4.1-样本数小于特征数时的计算 4.2-matlab代码 5-实例 参考 1-PCA概述 主成分分析是一种常用的降维方法,它不使用标签信息,通过将原始坐标空间的数据( d × 1 d\times 1 d × 1 )投影到新的正交空间( k × 1 k\times 1 k × 1 )中实现数据降维,所谓的主成分就是指数据在新空间的基的方向。PCA以方差作为信息损失衡量的标准,使得数据降维过程中信息损失最小,即降维后数据的方差要尽量大。PCA首先找到所有数据方差最大的方向,并将其作为新的坐标空间的第一个轴的方向,然后在这个方向的垂直超平面上寻找第二个方差最大的方向,并作为新坐标空间第二个轴的方向,以此类推,直到找到需要的k个方向,也就是K个主成分,显然这k个新的基方向是两两垂直的。PCA的主要过程可以用“扭动坐标轴,保留K个轴”来形容。 为什么要以方差最大为依据呢?降维是为了数据更好地表示与计算,显然我们不希望降维后的数据成了一坨,使得原本分界明显的数据掺和在一起。例如,将数据投影到一维坐标系中,显然绿色的投影更好一些,因为其分散程度大,也就是方差更大。 对n个d维数据构成的数据集 X X X ( d × n d\times

用scikit-learn学习主成分分析(PCA)

本秂侑毒 提交于 2020-01-15 07:44:00
    在 主成分分析(PCA)原理总结 中,我们对主成分分析(以下简称PCA)的原理做了总结,下面我们就总结下如何使用scikit-learn工具来进行PCA降维。 1. scikit-learn PCA类介绍     在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中。最常用的PCA类就是sklearn.decomposition.PCA,我们下面主要也会讲解基于这个类的使用的方法。     除了PCA类以外,最常用的PCA相关类还有KernelPCA类,在原理篇我们也讲到了,它主要用于非线性数据的降维,需要用到核技巧。因此在使用的时候需要选择合适的核函数并对核函数的参数进行调参。     另外一个常用的PCA相关类是IncrementalPCA类,它主要是为了解决单机内存限制的。有时候我们的样本量可能是上百万+,维度可能也是上千,直接去拟合数据可能会让内存爆掉, 此时我们可以用IncrementalPCA类来解决这个问题。IncrementalPCA先将数据分成多个batch,然后对每个batch依次递增调用partial_fit函数,这样一步步的得到最终的样本最优降维。     此外还有SparsePCA和MiniBatchSparsePCA。他们和上面讲到的PCA类的区别主要是使用了L1的正则化

数据降维(PCA、KPCA、PPCA)及C++实现

流过昼夜 提交于 2020-01-10 22:13:31
1、何为数据降维 1.1维数灾难:往往满足采样条件所需的样本数目巨大、样本稀疏、距离计算困难。 1.2降维:利用数学变换将原始高维属性空间转变为低维“子空间”,即在高维采样数据中提取能够表达原始数据的特征。 1.3 降维优点:数据集更易懂、使用和显示;降低算法计算开销;去除噪声。 2、一些降维算法 Principal Component Analysis (PCA) Linear Discriminant Analysis(LDA) Locally linear embedding(LLE) Laplacian Eigenmaps 本文主要针对以下三种算法: 2.1 PCA:PCA算法是一种线性投影技术,利用降维后使数据的方差最大原则保留尽可能多的信息; 2.2 KPCA:PCA仅考虑了数据的二阶统计信息,而没有利用高阶统计信息,忽略了数据的非线性相关性,而KPCA,通过非线性变换将数据映射到了高维,在高维空间中进行特征提取,获得了更好的特征提取性能; 2.3 PPCA:PCA没有将数据的概率分布考虑,PPCA对PCA做了概率上的解释,延伸了PCA算法。 总之:PPCA和KPCA都是针对PCA算法的缺陷,做出了不同方向上的改进。 3 PCA、KPCA、PPCA算法步骤 3.1 PCA: 数据在低维线性空间上的正交投影,这个线性空间被称为主子空间,使得投影数据的方差被最大化。

机器学习降维算法一:PCA (Principal Component Analysis)

六月ゝ 毕业季﹏ 提交于 2019-12-25 00:29:01
引言: 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x->y ,其中 x 是原始数据点的表达,目前最多使用向量表达形式。 y 是数据点映射后的低维向量表达,通常 y 的维度小于 x 的维度(当然提高维度也是可以的)。 f 可能是显式的或隐式的、线性的或非线性的。 当然还有一大类方法本质上也是做了降维,叫做feature selection,目的是从原始的数据feature集合中挑选一部分作为数据的表达。 目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据。 之所以使用降维后的数据表示是因为: (1)在原始的高维空间中,包含有冗余信息以及噪音信息,在实际应用例如图像识别中造成了误差,降低了准确率;而通过降维 , 我们希望减少 冗余信息 所造成的误差 , 提高识别(或其他应用)的精度。 (2)或者希望通过降维算法来寻找数据内部的本质结构特征。 (3)通过降维来加速后续计算的速度 (4)还有其他很多目的,如解决数据的sparse问题 在很多算法中,降维算法成为了数据预处理的一部分,如 PCA 。事实上,有一些算法如果没有降维预处理,其实是很难得到很好的效果的。 如果你需要处理数据,但是数据原来的属性又不一定需要全部保留,那么PCA也许是一个选择。 主成分分析算法( PCA )