首页IT科技主成分分析pca求解步骤(主成分分析法(PCA)的理解(附python代码案例))

主成分分析pca求解步骤(主成分分析法(PCA)的理解(附python代码案例))

时间2025-06-20 18:32:40分类IT科技浏览3730
导读:最近在文献调研,发现PCA基本都有用到,回忆起了机器学习和数学建模,总之还是要好好学学捏。...

最近在文献调研            ,发现PCA基本都有用到                 ,回忆起了机器学习和数学建模      ,总之还是要好好学学捏            。

一           、PCA简介

定义:主成分分析(Principal Component Analysis, PCA)是一种统计方法                 。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量      ,转换后的这组变量叫主成分      。

换一种说法:PCA去除噪声和不重要的特征                 ,将多个指标转换为少数几个主成分            ,这些主成分是原始变量的线性组合      ,且彼此之间互不相关                 ,其能反映出原始数据的大部分信息            ,而且可以提升数据处理的速度      。

为什么会出现PCA呢?因为每个变量都在不同程度上反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性                 ,因而所得的统计数据反映的信息在一定程度上有重叠                 。在用统计方法研究多变量问题时                 ,变量太多会增加计算量和分析问题的复杂性            。

核心思想降维,这个过程中可能会损失精度            ,但是能获取更高更关键的因素      。

二                  、举个例子

例子1:评选三好学生                 ,每个学生都有很多特征      ,比如学习成绩      、社会实践           、思想道德                  、体育成绩等                 。在评比中            ,有一些特征属于“ 无用特征             ”                 ,比如身高      、体重     、头发长短等      ,这些特征在评比中是不会考虑的;而有一些特征属于“ 冗余特征                  ”      ,比如各科成绩                  、总成绩            、GPA                 ,实际上这些有一个即可            。

例子2:见下图。原本黑色坐标系中需要记录每个点的横纵坐标(xi, yi)            ,也就是 2 个纬度的数据                 。

但如果转换坐标系      ,如绿色坐标系所示                 ,让每个点都位于同一条轴上            ,这样每个点坐标为(xi’, 0),此时仅用x’坐标表示即可                 ,即 1 个维度                 。

在这个过程中                 ,原先需要保存的 2 维数据变成了 1 维数据,叫做数据降维 / 数据提炼。而PCA的任务形象理解也就是坐标系的转换            。

PCA其实目的就是寻找这个转换后的坐标系            ,使数据能尽可能分布在一个或几个坐标轴上                 ,同时尽可能保留原先数据分布的主要信息      ,使原先高维度的信息            ,在转换后能用低维度的信息来保存                 。而新坐标系的坐标轴                 ,称为主成分(Principal components, PC)      ,这也就是PCA的名称来源      。

三     、计算过程(公式)

3.0 题干假设

首先假设有 n 个样本      ,p 个特征                 ,

x

i

j

x_{ij}

xij

表示第i个样本的第 j 个特征            ,这些样本构成的 n × p 特征矩阵 X 为:

X

=

[

x

11

x

12

x

1

p

x

21

x

22

x

2

p

x

n

1

x

n

2

x

n

p

]

=

[

x

1

,

x

2

,

,

x

p

]

X=\begin{bmatrix} x_{11} & x_{12} & \cdots & x_{1p} \\ x_{21} & x_{22} & \cdots & x_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \cdots & x_{np} \\ \end{bmatrix} = [x_1,x_2,\cdots,x_p]

X=x11x21xn1x12x22xn2x1px2pxnp=[x1,x2,,xp]

我们的目的是找到一个转换矩阵      ,将 p 个特征转化为 m 个特征(m < p)                 ,从而实现特征降维            。即找到一组新的特征 / 变量

z

1

z_1

z1,

z

2

z_2

z2
, …,

z

m

z_m

zm

(m ≤ p)            ,满足以下式子:

{

z

1

=

l

11

x

1

+

l

12

x

2

+

+

l

1

p

x

p

z

2

=

l

21

x

1

+

l

22

x

2

+

+

l

2

p

x

p

z

m

=

l

m

1

x

1

+

l

m

2

x

2

+

+

l

m

p

x

p

\begin{cases} \begin{aligned} z_1&=l_{11}x_1+l_{12}x_2+\dots+l_{1p}x_p \\ z_2&=l_{21}x_1+l_{22}x_2+\dots+l_{2p}x_p \\ \vdots \\ z_m&=l_{m1}x_1+l_{m2}x_2+\dots+l_{mp}x_p \end{aligned} \end{cases}

z1z2zm=l11x1+l12x2++l1pxp=l21x1+l22x2++l2pxp=lm1x1+lm2x2++lmpxp

3.1 标准化

有的博客写的是去中心化而不是标准化,在计算过程中也仅体现出步骤的不同                 ,实际两种方法都可以用的                 ,大家也可以看看这篇博客看看这几种“化      ”的区别:数据归一化                 、标准化和去中心化                 。本篇只研究标准化,第四部分的参考链接中介绍了标准化和去中心化的步骤            ,写得很详细                 ,欢迎大家学习~

标准化过程如下:

计算每个特征(共p个特征)的均值

x

j

\overline{x_j}

xj 和标准差

S

j

S_j

Sj

     ,公式如下:

x

j

=

1

n

i

=

1

n

x

i

j

\overline{x_j}=\frac{1}{n}\sum_{i=1}^nx_{ij}

xj=n1i=1nxij

S

j

=

i

=

1

n

(

x

i

j

x

j

)

2

n

1

S_j=\sqrt{\frac{\sum_{i=1}^n(x_{ij}-\overline{x_j})^2}{n-1}}

Sj=n1i=1n(xijxj)2

将每个样本的每个特征进行标准化处理            ,得到标准化特征矩阵

X

s

t

a

n

d

X_{stand}

Xstand

X

i

j

=

x

i

j

x

j

S

j

X_{ij}=\frac{x_{ij}-\overline{x_j}}{S_j}

Xij=Sjxijxj

X

s

t

a

n

d

=

[

X

11

X

12

X

1

p

X

21

X

22

X

2

p

X

n

1

X

n

2

X

n

p

]

=

[

X

1

,

X

2

,

,

X

p

]

X_{stand}=\begin{bmatrix} X_{11} & X_{12} & \cdots & X_{1p} \\ X_{21} & X_{22} & \cdots & X_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ X_{n1} & X_{n2} & \cdots & X_{np} \\ \end{bmatrix} = [X_1,X_2,\cdots,X_p]

Xstand=X11X21Xn1X12X22Xn2X1pX2pXnp=[X1,X2,,Xp]

3.2 计算协方差矩阵

协方差矩阵是汇总了所有可能配对的变量间相关性的一个表      。

协方差矩阵 R 为:

R

=

[

r

11

r

12

r

1

p

r

21

r

22

r

2

p

r

p

1

r

p

2

r

p

p

]

R=\begin{bmatrix} r_{11} & r_{12} & \cdots & r_{1p} \\ r_{21} & r_{22} & \cdots & r_{2p} \\ \vdots & \vdots & \ddots & \vdots \\ r_{p1} & r_{p2} & \cdots & r_{pp} \\ \end{bmatrix}

R=r11r21rp1r12r22rp2r1pr2prpp

r

i

j

=

1

n

1

k

=

1

n

(

X

k

i

X

i

)

(

X

k

j

X

j

)

=

1

n

1

k

=

1

n

X

k

i

X

k

j

\begin{aligned} r_{ij}&=\frac{1}{n-1}\sum_{k=1}^n(X_{ki}-\overline{X_i})(X_{kj}-\overline{X_j})\\ &=\frac{1}{n-1}\sum_{k=1}^nX_{ki}X_{kj} \end{aligned}

rij=n11k=1n(XkiXi)(XkjXj)=n11k=1nXkiXkj

3.3 计算特征值和特征值向量

计算矩阵R的特征值                 ,并按照大小顺序排列      ,计算对应的特征向量      ,并进行标准化                 ,使其长度为1      。R是半正定矩阵            ,且

t

r

(

R

)

=

k

=

1

p

λ

k

=

p

tr(R) = \sum_{k=1}^p\lambda_k = p

tr(R)=k=1pλk%3

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
phpcms建站教程(phpcms模板文件在哪)