Factor Analysis - 因子分析
Contents
Factor Analysis - 因子分析#
Factor Analysis
Factor Analysis tries to find latent variables1 that make sense to us. We can rotate the solution until we find latent variables that have a clear interpretation and “make sense”.
– Joos Korstanje
一、目的#
因子分析(Factor Analysis)目的在于在众多的数据特征中找出影响数据集最高的几个特征,或者理解为将多个变量压缩归集为新的特征变量,从而更好地解释、理解数据集。
上面这个从大佬JK那里照搬的架构图可以很好地说明子分析:
假设一所高中学校里有很多学生
每个学生拥有多个科目(Measured variable)的的成绩单(如生物、化学、物理,历史、政治、地理,语文、英文等)
假设这些不同的成绩是部分相关的
Tip
1、假如某一个学生的生物、化学、物理、数学成绩是特别6的,那么老师会认为这个学生的理科
特别好,那么这个学生会被分配到理科班
;
2、假如某一个学生的历史、政治、地理,语文成绩是特别6的,那么老师会认为这个学生的文科
特别好,那么这个学生会被分配到文科班
;
下面是从DataCamp找到的另外一个架构图,用于更好理解FA:
Tip
如图所展示的,“食物的味道、食物的温度、食物的新鲜度”这三个变量(特征)通过因子分析(Factor Analysis)可以压缩归集出一个新变量(所谓的隐性变量,latent variables),食物的品质
, 去概括前面所述的是三个特征。
二、原理#
因子分析(Factor Analysis)基于公共因子模型(common factor model)。原则:数据集中存在一定数量的因子,并且每个测量的变量都捕获了一个或多个这些因子的一部分。
如前所述,因子分析中的数学模型比PCA模型更具概念性。PCA模型更像是一种务实的方法,在因子分析中,我们假设存在潜在变量(latent variables)。
三、何时使用PCA or FA#
1、Principal Component Analysis - 主成分分析#
数据集中的指标(变量)数量过多,不便于数据分析
假设数据集中没有任何测量误差或噪声noise
2、Factor Analysis - 因子分析#
对数据集的变量降维(减少变量)没有兴趣
希望找出数据集中某些最具解释力度的变量
例如,在心理学中:将很长的个性测试反馈减少为只有少量的个性特质
例如,在市场营销中:将包含了各种各样问题的产品评估问卷调查归类为几个因子,用于产品改进
四、Python实现方式#
from sklearn.decomposition import FactorAnalysis
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
my_fa = FactorAnalysis(n_components=2)
# in new version of sklearn:
# my_fa = FactorAnalysis(n_components=2, rotation='varimax')
X_transformed = my_fa.fit_transform(X)
参考:
What is the difference between PCA and Factor Analysis? | by Joos Korstanje | Towards Data Science
Factor Analysis | Domino Data Science Dictionary (dominodatalab.com)
- 1
A latent variable is a variable that cannot be observed.