数据挖掘:python实战多因子分析
公众号:尤而小屋作者:Peter编辑:Peter
大家好,我是Peter~
最近看了很多的关于因子分析的资料,整理出这篇理论+实战文章分享给大家。后续会出一篇PCA主成分分析的文章,将主成分分析和因子分析两种降维的方法进行对比。
因子分析
作为多元统计分析里的降维方法之一,因子分析可以应用于多个场景,如调研、数据建模等场景之中。
起源
因子分析的起源是这样的:1904年英国的一个心理学家发现学生的英语、法语和古典语成绩非常有相关性,他认为这三门课程背后有一个共同的因素驱动,最后将这个因素定义为“语言能力”。
基于这个想法,发现很多相关性很高的因素背后有共同的因子驱动,从而定义了**因子分析,这便是因子分析的由来。
基本思想
我们再通过一个更加实际的例子来理解因子分析的基本思想:
现在假设一个同学的数学、物理、化学、生物都考了满分,那么我们可以认为这个学生的理性思维比较强,在这里理性思维就是我们所说的一个因子。在这个因子的作用下,偏理科的成绩才会那么高。
到底什么是因子分析?就是假设现有全部自变量x的出现是因为某个潜在变量的作用,这个潜在的变量就是我们说的因子。在这个因子的作用下,x能够被观察到。
因子分析就是将存在某些相关性的变量提炼为较少的几个因子,用这几个因子去表示原本的变量,也可以根据因子对变量进行分类。
因子分子本质上也是降维的过程,和主成分分析(PCA)算法比较类似。
2种因子分析
因子分析又分为两种:
- 探索性因子分析:不确定在现有的自变量背后到底有几个因子在起作用,我们通过需要这种方法试图寻找到这几个因子
- 验证性因子分析:已经假设自变量背后有几个因子,试图通过这种方法去验证一下这种假设是否正确。
模型推导
假设有p个原始的变量xi(i=1,2,…p)x_i(i=1,2,…p)xi(i=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)aij、ci(i=1,2…p,j=1,2,…m)称之为载荷因子
4、第四点:A=(aij)A={(a_{ij})}A=(aij)称之为载荷矩阵
上面的式子可以表示为:z=AF+CUz=AF+CUz=AF+CU
同时也就满足:
转载自:https://juejin.cn/post/7027358261955264520