likes
comments
collection
share

数据挖掘:python实战多因子分析

作者站长头像
站长
· 阅读数 31

公众号:尤而小屋作者:Peter编辑:Peter

大家好,我是Peter~

最近看了很多的关于因子分析的资料,整理出这篇理论+实战文章分享给大家。后续会出一篇PCA主成分分析的文章,将主成分分析和因子分析两种降维的方法进行对比。

数据挖掘:python实战多因子分析

因子分析

作为多元统计分析里的降维方法之一,因子分析可以应用于多个场景,如调研、数据建模等场景之中。

起源

因子分析的起源是这样的:1904年英国的一个心理学家发现学生的英语、法语和古典语成绩非常有相关性,他认为这三门课程背后有一个共同的因素驱动,最后将这个因素定义为“语言能力”。

基于这个想法,发现很多相关性很高的因素背后有共同的因子驱动,从而定义了**因子分析,这便是因子分析的由来。

基本思想

我们再通过一个更加实际的例子来理解因子分析的基本思想:

现在假设一个同学的数学、物理、化学、生物都考了满分,那么我们可以认为这个学生的理性思维比较强,在这里理性思维就是我们所说的一个因子。在这个因子的作用下,偏理科的成绩才会那么高。

到底什么是因子分析?就是假设现有全部自变量x的出现是因为某个潜在变量的作用,这个潜在的变量就是我们说的因子。在这个因子的作用下,x能够被观察到。

因子分析就是将存在某些相关性的变量提炼为较少的几个因子,用这几个因子去表示原本的变量,也可以根据因子对变量进行分类

因子分子本质上也是降维的过程,和主成分分析(PCA)算法比较类似。

2种因子分析

因子分析又分为两种:

  • 探索性因子分析:不确定在现有的自变量背后到底有几个因子在起作用,我们通过需要这种方法试图寻找到这几个因子
  • 验证性因子分析:已经假设自变量背后有几个因子,试图通过这种方法去验证一下这种假设是否正确。

模型推导

假设有p个原始的变量xi(i=1,2,…p)x_i(i=1,2,…p)xii=1,2,p,它们之间可能独立也可能相关。将xix_ixi标准化后得到新的变量ziz_izi,我们可以建立如下的因子分析模型:

zi=ai1F1+ai2F2+⋯+aimFm+ciUi(i=1,2,⋯ ,p)z_{i}=a_{i 1} F_{1}+a_{i 2} F_{2}+\cdots+a_{i m} F_{m}+c_{i} U_{i} (i=1,2, \cdots, p)zi=ai1F1+ai2F2++aimFm+ciUi(i=1,2,,p)

其中,我们可以定义以下几个术语:公共因子、特殊因子、载荷因子、载荷矩阵

1、第一点:Fj(j=1,2,…m)F_j(j=1,2,…m)Fj(j=1,2,m)出现在每个变量的式子中且m<p,称之为公共因子

2、第二点:Ui(i=1,2,…p)U_i(i=1,2,…p)Ui(i=1,2,p)仅仅与变量ziz_izi相关,称之为特殊因子

3、第三点:系数aij、ci(i=1,2…p,j=1,2,…m)a_{ij}、c_i(i=1,2…p,j=1,2,…m)aijci(i=1,2pj=1,2,m)称之为载荷因子

4、第四点:A=(aij)A={(a_{ij})}A=(aij)称之为载荷矩阵

上面的式子可以表示为:z=AF+CUz=AF+CUz=AF+CU

同时也就满足:

转载自:https://juejin.cn/post/7027358261955264520
评论
请登录