PCA主成分分析

(系列笔记)26.主成分分析——PCA(上) PCA——利用数学工具提取主要特征 泛滥成灾的特征维度 降低数据维度 主成分分析(PCA)的原则 PCA 的优化目标 阅读详情
1. 背景

在研究多变量的数据时,变量太多不仅导致数据的复杂性,而且不同的变量之间可能存在一定的相关关系,即两个变量之间的信息有一定的重叠,这无疑为分析问题增加了难度。为了提取数据中的主要信息成分,提出了一个新的降维方法PCA。主成分分析(Principal Component Analysis,简称PCA)是最常用的一种降维方法。它是将原先提出的所有变量中关系紧密的变量删除,建立尽可能少的新变量,使得这些新变量两两不相关,而且这些新变量尽可能的包含原有的信息。

2. 基础知识
协方差与散度矩阵

样本均值 x ˉ = 1 n ∑ i = 1 N x i \bar x=\frac{1}{n}\sum_{i=1}^Nx_i xˉ=n1​i=1∑N​xi​样本方差 S 2 = 1 n − 1 ∑ i = 1 N ( x i − x ˉ ) 2 S^2=\frac{1}{n-1}\sum_{i=1}^N(x_i-\bar x)^2 S2=n−11​i=1∑N​(xi​−xˉ)2样本X和样本Y的协方差 c o v ( X , Y ) = E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) \begin {aligned}cov(X,Y)&=E[(X-E(X))(Y-E(Y))] \\ & = \frac{1}{n-1}\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y)\end {aligned} cov(X,Y)​=E[(X−E(X))(Y−E(Y))]=n−11​i=1∑n​(xi​−xˉ)(yi​−yˉ​)​假如样本X和Y的维度为2维。那么它们之间的协方差为: c o v ( X , Y ) = [ c o v ( x , x ) c o v ( x , y ) c o v ( y , x ) c o v ( y , y ) ] cov(X,Y)=\begin{bmatrix} cov(x,x)& cov(x,y) \\ cov(y,x) & cov(y,y) \end{bmatrix} cov(X,Y)=[cov(x,x)cov(y,x)​cov(x,y)cov(y,y)​]如果协方差为正,说明X和Y是正相关关系;协方差为负,说明X和Y是负相关关系;协方差为0,说明X与Y不相关。

散度矩阵 S = ∑ i = 1 n ( x i − m ) ( x i − m ) T S=\sum_{i=1}^n(\boldsymbol {x_i}-\boldsymbol{m})(\boldsymbol{x_i}-\boldsymbol{m})^T S=i=1∑n​(xi​−m)(xi​−m)T m = 1 n ∑ i = 1 n x i \boldsymbol{m}=\frac{1}{n}\sum_{i=1}^n\boldsymbol{x_i} m=n1​i=1∑n​xi​数据X的散度矩阵为 X X T XX^T XXT。散度矩阵等于协方差矩阵乘以(总数据量-1)。因此,它们的特征值与特征向量是相同的。

3. PCA

假设数据集中有m个数据{ x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1​,x2​,...,xm​},每一个数据是d维数据。目标是在尽可能保证原有数据的信息条件下,将数据的维度从 d d d维降到 d ′ d^{'} d′维。虽然对数据降维会导致原有数据信息的损失,但是希望是使得损失尽可能的小。那么,如何将 d d d维数据降到 d ′ d^{'} d′维度呢?

举一个例子,如下图是将二维数据降到一维。希望是找到一个维度方向,可以代表这两个维度的数据。图中,有两个维度方向, u 1 u_1 u1​和 u 2 u_2 u2​。那么,哪一个向量可以更好的代表原有数据呢?
在这里插入图片描述
直观来讲, u 1 u_1 u1​比 u 2 u_2 u2​更适合作为一维方向。原因可从以下两个方面来解释:

  1. 最近重构性:样本点到这个直线的距离都足够近;
  2. 最大可分性:样本点在这个直线上的投影尽可能分开;
3.1 PCA的推导方法:最近重构性

假设m个d维数据{ x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1​,x2​,...,xm​},首先进行数据中心化,即 ∑ i = 1 m x i = 0 \sum_{i=1}^mx_i=0 ∑i=1m​xi​=0,坐标系为{ w 1 , w 2 , . . . , w d w_1,w_2,...,w_d w1​,w2​,...,wd​},其中w是标准正交基,即满足 ∣ ∣ w ∣ ∣ 2 = 1 , w i T w j = 0 ||w||_2=1,w_i^Tw_j=0 ∣∣w∣∣2​=1,wiT​wj​=0。如果将数据从 d d d维降到 d ′ d^{'} d′维,那么在新坐标系中的投影为 z i = ( z i 1 , z i 2 , . . . , z i d ′ ) z_i=(z_{i1},z_{i2},...,z_{id^{'}}) zi​=(zi1​,zi2​,...,zid′​),其中 z i j = w j T x i z_{ij}=\mathbf w_j^Tx_i zij​=wjT​xi​是 x i x_i xi​在低维坐标系下第j维的坐标。如果用 z i z_i zi​来重构数据 x i x_i xi​,那么恢复数据为 x ^ i = ∑ j = 1 d ′ z i j w j = W z i \hat {x}_i=\sum_{j=1}^{d^{'}}z_{ij}\mathbf w_j=Wz_i x^i​=∑j=1d′​zij​wj​=Wzi​,其中W为标准正交基组成的矩阵。
考虑到整个数据集,希望所有样本到这个超平面的距离尽可能的小,即 ∑ i = 1 m ∥ ∑ j = 1 d ′ z i j w j − x i ∥ 2 2 = ∑ i = 1 m ∣ ∣ W z i − x i ∣ ∣ 2 2 = ∑ i = 1 m z i T W T W z i − 2 ∑ i = 1 m ( W z i ) T x i + ∑ i = 1 m x i T x i = ∑ i = 1 z i T z i − 2 ∑ i = 1 m z i T z i + ∑ i = 1 m x i T x i = − ∑ i = 1 m z i T z i + ∑ i = 1 m x i T x i = − t r ( Z T Z ) + ∑ i = 1 m x i T x i = − t r ( W T X X T W ) + ∑ i = 1 m x i T x i \begin {aligned}\sum_{i=1}^m\left \| \sum_{j=1}^{d^{'}}z_{ij}w_j-x_i \right \|_2^2 &=\sum_{i=1}^m||Wz_i-x_i||^2_2 \\ &=\sum_{i=1}^mz_i^TW^TWz_i-2\sum_{i=1}^m(Wz_i)^Tx_i + \sum_{i=1}^mx_i^Tx_i \\ &=\sum_{i=1}z_i^Tz_i-2\sum_{i=1}^mz_i^Tz_i+\sum_{i=1}^mx_i^Tx_i \\ &=-\sum_{i=1}^mz_i^Tz_i+\sum_{i=1}^mx_i^Tx_i \\ &=-tr(Z^TZ)+\sum_{i=1}^mx_i^Tx_i \\ &=-tr(W^TXX^TW)+\sum_{i=1}^mx_i^Tx_i\end {aligned} i=1∑m​∥∥∥∥∥∥​j=1∑d′​zij​wj​−xi​∥∥∥∥∥∥​22​​=i=1∑m​∣∣Wzi​−xi​∣∣22​=i=1∑m​ziT​WTWzi​−2i=1∑m​(Wzi​)Txi​+i=1∑m​xiT​xi​=i=1∑​ziT​zi​−2i=1∑m​ziT​zi​+i=1∑m​xiT​xi​=−i=1∑m​ziT​zi​+i=1∑m​xiT​xi​=−tr(ZTZ)+i=1∑m​xiT​xi​=−tr(WTXXTW)+i=1∑m​xiT​xi​​其中,用到的公式有 ( A B ) T = B T A T , W T W = I , z i = W T x i (AB)^T=B^TA^T,W^TW=I,z_i=W^Tx_i (AB)T=BTAT,WTW=I,zi​=WTxi​。由于 ∑ i = 1 m x i T x i \sum_{i=1}^mx_i^Tx_i ∑i=1m​xiT​xi​是数据集的协方差矩阵,为常数。W的每一个向量 w j \mathbf w_j wj​是标准正交基,因此上式可转化为: a r g min ⁡ W − t r ( W T X X T W ) s . t . W T W = I arg\min_{W} \quad -tr(W^TXX^TW) \quad s.t. \quad W^TW=I argWmin​−tr(WTXXTW)s.t.WTW=I通过拉格朗日函数推导得到: J ( W ) = − t r ( W T X X T W + λ ( W T W − I ) ) J(W)=-tr(W^TXX^TW+\lambda(W^TW-I)) J(W)=−tr(WTXXTW+λ(WTW−I))对W求导得到: X X T W = λ W XX^TW=\lambda W XXTW=λW此时可以看出,W为 X T X X^TX XTX的 d ′ d^{'} d′个特征向量组成的矩阵, λ \lambda λ为 X T X X^TX XTX矩阵的特征值组成的矩阵,特征值在主对角线上,非对角线上的元素为0。当数据集从 d d d维降到 d ′ d^{'} d′时,只需按照特征值的由大到小顺序找到前 d ′ d^{'} d′个特征值及对应的特征向量,这些特征向量组成的矩阵就是我们要求得矩阵。再通过矩阵变换 z i = W T x i z_i=W^Tx_i zi​=WTxi​将原始数据映射到 d ′ d^{'} d′维空间中。

3.2 PCA的另一推导方法:最大可分性

假设m个d维数据{ x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1​,x2​,...,xm​},首先进行数据中心化,即 ∑ i = 1 m x i = 0 \sum_{i=1}^mx_i=0 ∑i=1m​xi​=0,坐标系为{ w 1 , w 2 , . . . , w d w_1,w_2,...,w_d w1​,w2​,...,wd​},其中w是标准正交基,即满足 ∣ ∣ w ∣ ∣ 2 = 1 , w i T w j = 0 ||w||_2=1,w_i^Tw_j=0 ∣∣w∣∣2​=1,wiT​wj​=0。如果将数据从 d d d维降到 d ′ d^{'} d′维,那么在新坐标系中的投影为 z i = ( z i 1 , z i 2 , . . . , z i d ′ ) z_i=(z_{i1},z_{i2},...,z_{id^{'}}) zi​=(zi1​,zi2​,...,zid′​),其中 z i j = w j T x i z_{ij}=\mathbf w_j^Tx_i zij​=wjT​xi​是 x i x_i xi​在低维坐标系下第j维的坐标。

从最大可分性出发,对于任意一个样本 x i x_i xi​,在新空间超平面上的投影为 W T x i W^Tx_i WTxi​,在新坐标系中的投影方差为 W T x i x i T W W^Tx_ix_i^TW WTxi​xiT​W。若所有样本的投影尽可能分开,则应该使得投影后的样本方差最大化。即最大化 ∑ i = 1 m W T x i x i T W \sum_{i=1}^mW^Tx_ix_i^TW ∑i=1m​WTxi​xiT​W a r g max ⁡ W t r ( W T X X T W ) s . t . W T W = I arg\max_W \quad tr(W^TXX^TW) \quad s.t. \quad W^TW=I argWmax​tr(WTXXTW)s.t.WTW=I和上一个方法相同,用拉格朗日函数得到: J ( W ) = t r ( W T X X T W + λ ( W T W − I ) ) J(W)=tr(W^TXX^TW+\lambda(W^TW-I)) J(W)=tr(WTXXTW+λ(WTW−I))对W求导得到: X X T W = − λ W XX^TW=-\lambda W XXTW=−λW类似,W为 X T X X^TX XTX的 d ′ d^{'} d′个特征向量组成的矩阵, λ \lambda λ为 X T X X^TX XTX矩阵的特征值组成的矩阵,特征值在主对角线上,非对角线上的元素为0。当数据集从 d d d维降到 d ′ d^{'} d′时,只需按照特征值的由大到小顺序找到前 d ′ d^{'} d′个特征值及对应的特征向量,这些特征向量组成的矩阵就是我们要求得矩阵。再通过矩阵变换 z i = W T x i z_i=W^Tx_i zi​=WTxi​将原始数据映射到 d ′ d^{'} d′维空间中。

4. PCA算法

输入: d d d维样本集 D = { x 1 , x 2 , . . . , x m } D=\left\{x_1,x_2,...,x_m\right\} D={x1​,x2​,...,xm​}
输出:降维后的样本集 D ′ D^{'} D′

  1. 对所有样本进行中心化: x i = x i − 1 m ∑ i = 1 m x i x_i=x_i-\frac{1}{m}\sum_{i=1}^mx_i xi​=xi​−m1​∑i=1m​xi​
  2. 计算样本的协方差矩阵 X X T XX^T XXT
  3. 对协方差矩阵 X X T XX^T XXT进行特征值分解
  4. 取最大的 d ′ d^{'} d′个特征值所对应的特征向量 { w 1 , w 2 , . . . , w d ′ } \left\{w_1,w_2,...,w_{d^{'}}\right\} {w1​,w2​,...,wd′​},对所有特征向量进行标准化后,组成特征向量矩阵W
  5. 对每一个样本 x i x_i xi​,投影得到新的样本 z i = W T x i z_i=W^Tx_i zi​=WTxi​
  6. 得到输出样本集 D ′ = { z 1 , z 2 , . . . , z m } D^{'}=\left\{z_1,z_2,...,z_m\right\} D′={z1​,z2​,...,zm​}

对于降维后的维数 d ′ d^{'} d′可由用户事先指定,也可通过设置一个主成分比重阈值 t ∈ ( 0 , 1 ] t\in (0,1] t∈(0,1]。假设特征值为 λ 1 ≥ λ 2 ≥ . . . ≥ λ n \lambda_1\ge \lambda_2\ge ...\ge \lambda_n λ1​≥λ2​≥...≥λn​则选取使下式成立的最小 d ′ d^{'} d′值: ∑ i = 1 d ′ λ i ∑ i = 1 d λ i ≥ t \frac{\sum_{i=1}^{d^{'}}\lambda_i}{\sum_{i=1}^d \lambda_i}\ge t ∑i=1d​λi​∑i=1d′​λi​​≥t

5. 核化线性降维

如果数据是线性的,线性降维方法可将数据从高维空间映射到低维空间。然而,一般情况下,数据是非线性的,不能使用PCA线性降维。因此,可先将n维数据映射到更高维N的空间,然后再从N维空间降维到低维空间n’。
非线性降维是一种常用的方法,核函数的主成分分析称为核主成分分析KPCA。假设n维空间到高维空间的映射函数为 ϕ \phi ϕ,n维空间的特征分解为: ∑ i = 1 m x i x i T W = λ W \sum_{i=1}^mx_ix_i^TW=\lambda W i=1∑m​xi​xiT​W=λW高维空间的特征分解为: ∑ i = 1 m ϕ ( x i ) ϕ ( x i ) T W = ∑ i = 1 m k ( x i , x i ) W = λ W \sum_{i=1}^m\phi(x_i)\phi(x_i)^TW=\sum_{i=1}^m\boldsymbol k(x_i,x_i)W=\lambda W i=1∑m​ϕ(xi​)ϕ(xi​)TW=i=1∑m​k(xi​,xi​)W=λW

参考文献
PCA:详细解释主成分分析 1 PCA目的/作用 主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。 PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到... 阅读详情

相关推荐

主成分分析(PCA)

基本概念 主成分分析(Principal Component Analysis, PCA)是研究如何将多指标问题转化为较少的综合指标的一种重要的统计方法,它能将高维空间的问题转化到低维空间去处理,使问题变得比较简单、直观,而且这些较少的综合指标之间互不相关,又能提供原有指标的绝大部分信息。 PCA是一个无监督问题,不是基于标签,而是基于方差。我们可以认为原始的数据在某一个维度上是非常密集的,P...

愿万事胜意 2272

PCA主成分分析原理理解学习(源于b站某视频)

pca视频学习

qq_52331099的博客 1905

主成分分析PCA

PCA原理及MATLAB实现

沉心修炼 3292

【归纳总结】如何为数据样本绘制PCA图及其置信椭圆? 附Python代码

在机器学习特征可视化过程中,经常将数据样本通过PCA降维进行展示,并绘制其置信椭圆描述分布特点。本文通过随机生成三类数据样本进行PCA降维分析,并计算每个类别的协方差矩阵和椭圆参数,最后绘制样本分布和置信椭圆,附Python代码。

坊间小木匠的博客 5116

pca-code.json_studentume_pca-code_pca-code.json_省市区json数据_pca.js

中国行政区域查询省市区JSON 带code

Proxmox VE安装卡顿深度解析:显卡驱动与BIOS设置的黄金法则

本文深度解析Proxmox VE安装卡顿的根本原因,指出显卡驱动与BIOS设置是两大关键因素。文章详细阐述了如何通过添加`nomodeset`内核参数解决显卡兼容性问题,并提供了针对不同主板品牌的BIOS显卡优先级设置黄金法则。同时,还分享了从预处理到高级调试的完整实战排查流程,帮助用户从源头杜绝安装卡顿,确保PVE系统顺利部署。

weixin_29278805的博客 472

PCA分析(主成分分析)--结果解读

补充:主成分的个数都是自己预先色设定好的,比如三种鲜花中的数据分别包含其花瓣长度、宽度、叶片长度、宽度等数十个指标,但其主成分为3个,即为其鲜花种类。贡献率:是指某个组成份方差除以所有主成分的方差之和,其具有最大贡献率的为PC1依次类推。得分图是最常用的主成分分析的图,对于一些较好的结果能够将不同的散点进行聚集并将同类型的散点看为一个整体,如上图所示一共三个整体,粉色整体与其余两个整体相距较远,因此分别与二则差异显著,而绿色和紫色整体间部分重叠即相聚较近因此样本点9的相似度较高,差异不显著。

qq_72899974的博客 5万+

akshare 布林通道策略

import datetime import pandas as pd import backtrader as bt import matplotlib.pyplot as plt from datetime import datetime import matplotlib import akshare as ak %matplotlib inline class Boll_strategy(bt.Strategy): #自定义参数,每次买入1800手 params=(('size'.

qq_26742269的博客 5337

PCA的数学原理

PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。 当然我并不打算把文章写成纯数

wxing2008666的专栏 6803

ESP32 开发实战:VS Code 头文件波浪线及编译错误的终极解决方案

本文针对ESP32开发者在VS Code中常见的头文件红色波浪线和fatal error编译错误,提供了终极解决方案。通过详细讲解如何配置c_cpp_properties.json文件来修复编辑器智能提示,以及如何修改CMakeLists.txt来修正编译器路径,帮助开发者彻底解决环境配置问题,提升开发效率。

prometheus9mon的博客 294

电气:蒙特卡洛1000个风光场景并通过削减法|聚类法得到几个典型场景(matlab\python实现)

    个人电气目录传送门:学好电气全靠它,个人电气博文目录(持续更新中…)     本文内容包括22页(代码和一些自己对风光的观点) 提示:专栏解锁后,可以查看该专栏所有文章,划算。 文章目录一、理论依据1.风电DG出力概率模型1.2光伏DG出力概率模型1.3对风光的认识二、蒙特卡洛模拟1000个风光场景、并通过削减法得到5个典型风电场景 (Matlab 版程序)三、蒙特卡洛模拟1000个风光场景、并通过聚类法得到5个典型

总裁余(余登武)博客 7681

主成分分析(PCA)详解

主成分分析(PCA)原理与应用

weixin_60737527的博客 9万+

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度!

YOLO系列算法改进 | 主干改进篇 | 替换LSKNet主干特征提取网络 | 通过动态调整感受野自适应融合长程上下文,显著提升小目标与复杂背景下的检测精度! (以YOLO26最新目标检测模型为基础,利用LSKNet替代Backbone)

2502_91881744的博客 211

pca主成分分析_干货 | 如何通俗易懂地理解PCA主成分分析

看点01主成分分析(PCA)主成分分析(Principal Component Analysis,PCA)是一种无监督学习的多元统计分析方法。PCA分析的主要原理是将高维数据投影到较低维空间,提取多元事物的主要因素,揭示其本质特征。它可以高效地找出数据中的主要部分,将原有的复杂数据降维处理。PCA分析被广泛应用于很多领域,比如理论物理学、气象学、心理学、生物学、化学、工程学等。看点02P...

weixin_39614874的博客 4万+

实测!Gemini+ChatGPT赋能学术写作:我的论文写作SOP(附提示词)

各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。为什么ChatGPT逻辑清晰却写不长?为什么Gemini能深入分析但废话连篇?这其实是两种模型架构的本质差异,GPT系列擅长指令跟随和语言精炼,而Gemini原生支持超长上下文,适合深度文本生成。两者在深度生成与精炼表达上形成了天然互补。我们可以将它们组合起来使用发挥他们各自的特长。

智能AI让学术科研更容易 521

凝聚态物理新引擎:AI 驱动材料预测与相变识别大突破

摘要:本文深入探讨 AI 在凝聚态物理中的创新应用。在材料性质预测方面,AI 借助数据收集、特征提取和模型训练,能依据材料微观信息准确预估其宏观性质,以石墨烯为例验证了高效性。对于拓扑相变识别,AI 通过分析量子力学数据,利用机器学习算法判别相变节点,助力拓扑绝缘体研究。尽管面临数据质量、模型可解释性等挑战,但未来多模态数据融合、可解释 AI 等发展方向,将推动 AI 与凝聚态物理深度融合,助力探索物质奥秘与新材料研发。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1826

PCA:详解主成分分析

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

wfengzi5的博客 1万+

SAP ABAP 获取采购订单未清数量/在途库存的 6 种方式

这篇文章我总结了获取采购订单未清数量/在途库存的 6 种方式,每种方式的优劣势和适用场景有所不同。读者请结合自身需要选择。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 2656

pca 主成分分析_超越普通PCA:非线性主成分分析

主成分分析pcaTL;DR: PCA cannot handle categorical variables because it makes linear assumptions about them. Nonlinear PCA addresses this issue by warping the feature space to optimize explained variance. (...

weixin_26752765的博客 2741

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

基于SPSS的主成分分析(PCA)

主成分分析(Principal Component Analysis,PCA)是一种统计方法。PCA以降维方式,在损失很少信息的前提下通过正交变换将一组可能存在相关性的变量(多个指标)转换为一组线性不相关的变量(少数几个综合指标)。转换生成的综合指标称之为主成分,其中每个主成分都是原始变量的线性组合,且各个主成分之间互不相关,这就使得主成分比原始变量具有某些更优越的代表性。在环境学领域,PCA分析能够从总体上反映各组样本之间的总体差异和组内样本之间的变异度大小。通常我们可以使用SPSS、SIMCA-P、PA

HUANWEIFENXI的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python主成分分析PCA

主成分PCA分析的基本步骤: · 对数据进行归一化处理(代码中并非这么做的,而是直接减去均值) · 计算归一化后的数据集的协方差矩阵 · 计算协方差矩阵的特征值和特征向量 · 保留最重要的k个特征(通常k要小于n),也可以自己制定,也可以选择一个阈值,然后通过前k个特征值之 和减去后面n-k个特征值之和大于这个阈值,则选择这个k · 找出k个特征值对应的特征向量 · 将m...

fanc的博客 3706

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pca主成分分析结果解释_主成分分析(PCA)原理及SPSS实操

主成分分析(principal components analysis,简称PCA)是一种降维分析,将多个指标转换为少数几个综合指标,由霍特林于1933年首先提出。主成分分析方法之所以能够降维,本质是因为原始变量之间存在着较强的相关性,如果原始变量之间的相关性较弱,则主成分分析不能起到很好的降维效果,所以进行主成分分析前最好先进行相关性分析。一个例子中心城市的综合发展是带动周边地区经济发展的重要动...

weixin_39759155的博客 1万+

主成分分析-PCA

PCA(主成分分析,Principal Component Analysis)是一种常用的数据降维技术。它的主要目的是通过线性变换将原始数据转换到新的坐标系统中,这个新坐标系统的各个坐标轴(即主成分)是原始数据的主要特征方向,这些方向上的数据方差最大,且各坐标轴之间相互正交。通过这种方式,PCA可以在保留数据重要特征的同时,减少数据的维度,简化数据,便于后续的数据处理和分析。

2301_77698138的博客 1681

PCA——主成分分析

PCA(主成分分析,Principal Component Analysis)是一种用于降维和特征提取的统计方法。其基本思想是将原始数据投影到一个新的坐标系上,使得数据在新坐标系中的前几个坐标轴上具有最大的方差。广泛用于信号处理、图像识别、机器学习和数据分析等领域。其主要目标是通过减少数据的维度来简化问题,同时尽可能保留原始数据中的重要信息。

qq_56683019的博客 2602
上一篇: 矩阵分解SVD原理
下一篇: 因子分解机FM算法原理
code__online
博客等级 码龄9年 142粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值