主成分分析与因子分析-原理及python实现

本文详细介绍了主成分分析(PCA)和因子分析(FA)这两种常用的数据降维方法。PCA旨在通过保留原始数据的主要特征来降低数据的维度,而FA则用于发现隐藏在多个变量背后的影响因子。在PCA中,通过最大化保留原始数据信息的特征向量来实现降维,而FA则通过对相关变量的因子分解来寻找潜在的结构。两者在实际应用中,如计量经济学等领域,都有广泛的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面两种算法一般都需标准化消除量纲影响

主成分分析(PCA)

目的

数据降维,将n维数据降为n’维数据。原数据 X : n × m , s a m p l e   p o i n t : ( x 1 , . . . , x n ) T , b a s e : { w 1 , . . . , w n } X:n\times m,sample\,point:(x_1,...,x_n)^T,base:\lbrace w_1,...,w_n\rbrace X:n×m,samplepoint:(x1,...,xn)T,base:{ w1,...,wn}

转换到n‘维空间中, x ( i ) → z ( i ) = ( z i ( i ) , . . . , z n ′ ( i ) ) T x^{(i)}\rightarrow z^{(i)}=(z_i^{(i)},...,z_{n'}^{(i)})^T x(i)z(i)=(zi(i),...,zn(i))T对应n’维空间标准正交基: w ′ = { w ^ 1 ′ , . . . , w ^ n ′ ′ } = W : n × n ′ w'=\lbrace \hat w'_1,...,\hat w'_{n'}\rbrace=W:n\times n' w={ w^1,...,w^n}=W:n×n

有: W T x ( i ) = z ( i ) W^Tx^{(i)}=z^{(i)} WTx(i)=z(i),n’维空间中数据还原到n维空间中有 W z ( i ) = x ˉ ( i ) Wz^{(i)}=\bar x^{(i)} Wz(i)=xˉ(i)

caution: W T W = E , W W T ≠ E , W T X = Z W^TW=E,WW^T\neq E,W^TX=Z WTW=E,WWT=E,WTX=Z

优化函数

使得降维后的数据与原数据距离和最小(尽可能维持原来位置,保持尽可能多的数据)
∑ i = 1 m ∣ ∣ x ˉ ( i ) − x ( i ) ∣ ∣ 2 2 = ∑ i = 1 m ∣ ∣ W z ( i ) − x ( i ) ∣ ∣ 2 2 = ∑ i = 1 m ( W z ( i ) ) T ( W z ( i ) ) − 2 ∑ i = 1 m ( W z ( i ) ) T x ( i ) + ∑ i = 1 m x ( i ) T x ( i ) = − ∑ i = 1 m z ( i ) T z ( i ) + ∑ i = 1 , x ( i ) T x ( i ) = − t r ( X T W W T X + X T X ) m i n ∑ i = 1 m ∣ ∣ x ˉ ( i ) − x ( i ) ∣ ∣ 2 2 ⇔ a r g m a x   t r ( X T W W T X ) , s . t . W T W = E \sum_{i=1}^m ||\bar x^{(i)}-x^{(i)}||_2^2\\ =\sum_{i=1}^m ||Wz^{(i)}-x^{(i)}||_2^2\\ =\sum_{i=1}^m (Wz^{(i)})^T(Wz^{(i)})-2\sum_{i=1}^m (Wz^{(i)})^Tx^{(i)}+\sum_{i=1}^m x^{(i)T}x^{(i)}\\ =-\sum_{i=1}^m z^{(i)T}z^{(i)}+\sum_{i=1}^,x^{(i)T}x^{(i)} =-tr(X^TWW^TX+X^TX)\\ min \sum_{i=1}^m ||\bar x^{(i)}-x^{(i)}||_2^2 \Leftrightarrow argmax\,tr(X^TWW^TX),s.t. W^TW=E i=1mxˉ(i)x(i)22=i=1mWz(i)x(i)22=i=1m(Wz(i))T(Wz(i))2i=1m(Wz(i))

因子分析是一种多变量统计方法,旨在找到多个观测变量之间的共同因素。它的基本思想是将多个观测变量表示为少数几个潜在因素的线性组合,通过这种方式来简化数据集并揭示变量之间的关系。 在因子分析中,我们假设每个观测变量都若干个潜在因素有关,每个潜在因素又对应着一组权重,这些权重用来表示潜在因素对观测变量的影响。因子分析的目标是找到这些潜在因素和权重,使得它们能够最好地解释观测变量之间的关系。 下面是因子分析算法的一般步骤: 1. 收集数据并确定需要进行因子分析的变量。 2. 确定因子数量,即要分析的潜在因素的数量。 3. 选择合适的因子提取方法,如主成分分析法或最大似然估计法。 4. 计算因子载荷,即每个变量每个因子之间的关系强度。 5. 旋转因子载荷,以更好地解释变量之间的关系。 6. 解释因子,确定每个因子代表的含义。 7. 计算因子得分,以便将数据转换为因子空间中的坐标。 下面是使用Python实现因子分析的示例代码: ```python import pandas as pd from factor_analyzer import FactorAnalyzer # 读取数据 data = pd.read_csv('data.csv') # 创建因子分析对象,并指定因子数量 fa = FactorAnalyzer(n_factors=3, rotation='varimax') # 使用最大似然估计方法进行因子提取 fa.fit(data) # 显示因子载荷 print(fa.loadings_) # 显示因子方差贡献率 print(fa.get_factor_variance()) # 显示因子得分 print(fa.transform(data)) ``` 在上面的代码中,我们使用了`pandas`库来读取数据,然后使用`factor_analyzer`库中的`FactorAnalyzer`类来进行因子分析。我们指定了要分析的因子数量为3,并使用了最大似然估计方法进行因子提取。最后,我们显示了因子载荷、因子方差贡献率和因子得分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值