zoukankan      html  css  js  c++  java
  • 【数据分析师 Level 1 】15.因子分析

    【数据分析师 Level 1 】15.因子分析

    基本概念

    什么是因子分析?

    主成分分析时一般情况下不能对主成分所代表含义进行业务上的解读,因为主成分方向上一般不会恰好某些变量权重大,而另外一些变量权重都小,这也表现在主成分权重的形成的散点图会偏离坐标轴。如果可以将主成分的坐标轴进行旋转,使一些变量的权重的绝对值在一个主成分上达到最大,而在其他主成分上绝对值最小,这样就达到了变量分类的目的。对应地,这种维度分析方法称为因子分析。

    因子分析是一类常用的连续变量降维并进行维度分析的方法,其经常采用主成分法作为其因子载荷矩阵的估计方法,在特征向量上,使用特征值得平方根进行加权,最后通过因子旋转,使得变量的权重在不同因子上更加两极分化。常用最大方差法进行因子旋转,这种方法是一种正交旋转。

    正交因子模型

    [X = egin{pmatrix} X_1 \ X_2 \ ... \ X_p end{pmatrix} ]

    是可观测的随机变量,其期望值

    [E(F) = mu ]

    协方差矩阵

    [D(X) = sum ]

    且设

    [F = egin{pmatrix} F_1 \ F_2 \ ... \ F_mend{pmatrix} ]

    其中

    [m<p ]

    是不可观测的随机变量

    且期望值

    [E(F) = 0 ]

    协方差为

    [D(F) = I_m ]

    其中

    [I_m ]

    为主对角线全为1,其它位置为0的单位阵(意味着F的各分量方差为1,且不互相关)。

    又设

    [epsilon = egin{bmatrix} epsilon_1 \ epsilon_2 \ ...\epsilon_p end{bmatrix} ]

    与F互不相关,且

    [E(epsilon) = 0,D(epsilon) = diag(sigma_1^2,...,sigma_1^2), ]

    即主对角线为

    [sigma_1^2,...,sigma_p^2 ]

    的对角阵。于是因子分析认为,每个随机变量是由下式产生的

    [egin{cases} X_1-mu_1 = l_{11}F_1 + l_{12}F_2 +...+ l_{1m}F_m + epsilon_1 \ X_2-mu_2 = l_{21}F_1 + l_{22}F_2 +...+ l_{2m}F_m + epsilon_2 \ ... \ X_p-mu_p = l_{p1}F_1 + l_{p2}F_2 +...+ l_{pm}F_m + epsilon_p end{cases} ]

    用矩阵可表示为

    [X - mu = LF + epsilon ]

    该模型被称为正交因子模型,X预先经过标准化后则

    [mu = 0 ]

    F包含m和p维的公共因子,会对X的每个分量

    [X_i ]

    起作用

    [epsilon ]

    称为特殊因子,每个

    [epsilon_i ]

    只对

    [X_i ]

    起作用。

    各个特殊因子间互不相干,特殊因子与公共因子间互不相关,这两个条件是因子分析区别于其他矩阵分解的要点。

    因子载荷矩阵

    因子载荷矩阵的估计是因子分析的主要问题之一。模型中L称为因子载荷矩阵,因子分析是从对L的估计入手的,可以从两方面来理解L的含义:

    (1)将其看做是对因子进行线性组合时的系数。假设相亲对象评分的因子载荷矩阵如下:

    魅力F1 财务F2 责任心F3
    父母评价X1 0.4 0.5 0.2
    同事评价X2 0.2 0.3 0.6
    ..... ..... ..... .....

    可以得到,父母评价X1 = 0.4X魅力F1+0.5X财务F2+0.2X责任心F3

    同事评价与此类似,是通过对三个因子进行线性组合获得的,组合的系数就是因子载荷矩阵L。

    (2)因子载荷矩阵L还可以看作是p维空间的一组单位正交向量,把这组向量当做坐标轴,隐含的因子F投影到这些向量上的值即LF,LF与X-μ之间仅相差一个干扰项。因此如果X是标准化过的(μ=0),在排除干扰项,可以认为在L这个参考系中表示的F与在标准坐标系(单位阵)中的表示的X是等价的。

    算法解析

    因子分析的计算过程大致可分为三步
    • 估计因子载荷矩阵
    • 进行因子旋转
    • 估计公共因子(因子得分)
    因子载荷矩阵的估计

    在正交因子模型中,假定公共因子彼此不相关且具有单位方差,这种情况下,因子载荷矩阵及特殊因子的方差需要满足下式:

    [sum = D(X) \ = E[(LF+epsilon)(LF+epsilon)^T] \ = LD(F)L^T+D(epsilon) \ = LL^T+D ]

    使用观测数据计算样本协方差矩阵S,作为协方差阵

    [sum ]

    的估计。为了建立因子模型,首先要估计因子载荷L的特殊因子方差D,常用的方法包括主成分法,主因子解和极大似然估计,其中主成分法用途广泛,本节介绍主成分法估计因子载荷矩阵的方法。

    设样本协方差阵S的特征值

    [lambda_1 geq lambda_2 geq lambda_3 geq...geq lambda_p geq 0 ]

    对应的单位正交特征向量为

    [u_1,u_2,...u_p ]

    则S可分解为

    [S = sum^p_{i=1} lambda_{i}u_{i}u_{i}^T ]

    假设最后p-m个特征值较小,则

    [S approx lambda_1u_1u_1^T+...+lambda_mu_mu_m^T+D \ = (sqrt{lambda_iu_1},...,sqrt{lambda_mu_m})egin{pmatrix} sqrt{lambda_iu_1^T} \ ...\ sqrt{lambda_mu_m^T} \ end{pmatrix}+egin{pmatrix} sigma_1 & & 0 \ &... & \ 0 & & sigma_p end{pmatrix} ]

    符合因子模型的方差条件式,因此

    [L = (sqrt{lambda1u1},...,sqrt{lambda_mu_m}) ]

    为因子模型的一个解,其中的分量

    [sqrt{lambda_ju_j} ]

    [X ]

    的第

    [j ]

    个主成分相差一个倍数

    [sqrt{lambda a_j} ]

    因此这个解被称为因子模型的主成分解。有了因子载荷矩阵的估计,特殊因子的方差可以计算得

    [sigma_i^2 = s_{ii}-sum^m_{t=1}l^2_{it} \ (i=1,2,...,p) ]

    其中

    [l_{it} ]

    [sqrt{lambda_t u_t} ]

    的分量。

    当我们选择要保留的因子个数m时,可以参考保留主成分个数的方法,即当能解释的方差累计

    [frac{lambda_1+lambda_2+...+lambda_m}{sum^p_{i=l}lambda_i} ]

    超过某个阈值(如80%)时,就选择对应的m。

    有了因子载荷矩阵,可以根据其元素值得大小来判断变量在公共因子中的负荷量大小,并以此对公共因子代表的可能含义进行解释。假如对本章引例的评价数据进行因子分析,得到因子载荷矩阵如下,那怎么使用载荷矩阵的值来对公共因子的业务含义做出解释呢

    F1 F2 F3
    父母评价 X1 -0.71560 0.56452 0.04559
    上司评价 X2 0.41277 -0.13191 0.89278
    同事评价 X3 0.90960 -0.06429 -0.17215
    朋友评价 X4 0.94490 0.04843 -0.17493
    亲戚评价 X5 -0.83458 0.46939 0.04773
    邻居评价 X6 0.82555 0.49675 -0.13428
    前任评价 X7 -0.68122 -0.66459 -0.20123

    注:因子载荷矩阵L,代表了变量X在公共因F上的“载荷”

    根据载荷矩阵,以父母评价X1为例,可以得到其因子进行综合的模型为

    [父母评价X1 = 0.897*F1-0.0395*F2-0.163*F3 ]

    因子载荷矩阵的旋转变换

    因子分析的目的不仅是要找出公共因子,更重要的是要能解释每个公共因子的业务意义。通过上面的分析我们可以看到,如果载荷矩阵的每列中,各元素的绝对值向0或1“两极分化”,那么因子负载的代表变量就会比较突出,便于我们进行解释。相反,如果各元素间差别不大的话,则不易进行解释,例如上例第2列中有不少载荷在0.5附近的中等载荷,进行解释时容易导致公共因子的意义含糊不清。因此,为了使载荷矩阵每列元素更加向两级转化,需要对因子载荷矩阵施行旋转变换。

    根据因子载荷的选择方式不同,可以分为正交旋转与斜交旋转。设因子模型为

    [X = LF+ epsilon ]

    [Gamma ]

    为任一正交矩阵,则:

    [X = L(Gamma Gamma^T)F + epsilon \ +(LGamma)(Gamma^TF)+epsilon ]

    可以证明

    [Gamma^TF ]

    也是因子模型的公共因子,

    [LGamma ]

    是其因子载荷矩阵。因此在求得初始的因子载荷矩阵

    [L ]

    后,反复右乘正交矩阵

    [Gamma ]

    使得

    [LGamma ]

    具有更简化的结构(因素更加两级分化)。这种变换载荷矩阵的方法,称为因子轴的正交旋转。

    根据正交矩阵的性质,正交旋转后的因子轴能保持原有的夹角不变,如下所示:

    设因子载荷矩阵为

    [L = egin{bmatrix} l_{11} & l_{12} \ l_{21} & l_{22} \ ...&...\l_{p1} & l_{p2} end{bmatrix} ]

    令正交阵

    [Gamma = egin{bmatrix} cos{psi} & -sin{alpha} \ sin{psi} & cos{psi} \ end{bmatrix} ]

    使用该正交阵对载荷矩阵进行变换,则公共因子也相当于进行了旋转变换

    [Gamma^TF ]

    从几何角度理解,即是将

    [F_1,F_2 ]

    确定的因子平面旋转一个角度

    [psi ]

    可以证明,选定合适的

    [psi ]

    可以令载荷矩阵

    [L ]

    的列向量的方差之和达到最大,这种旋转方式被称为“最大方差旋转”。

    当载荷矩阵的列

    [m>2 ]

    时,我们可以逐次对每两个因子进行上述旋转,直至m个因子全部配对旋转,即需要旋转

    [C^2_m ]

    次,全部旋转完毕算作一轮循环,一般来说,一轮循环是不够的,需要经过多轮旋转,直至方差无法再增大为止。

    我们获得了因子载荷矩阵L后,可以对因子F代表的含义进行解释,但因子F仍然是未知的,因此需要使用样本对其进行估计,这个估计值就是所谓因子得分。

    如果我们使用主成分法估计因子载荷矩阵,那么计算因子得分时,通常使用最小二乘法,即最小化

    [psi(F) = sum_{i=1^p} epsilon^2_{i} = epsilon^Tepsilon = (X-LF)^T(X-LF) ]

    来估计F

    [求psi(F)关于F的偏导,并令偏导为0,可解得 ]

    [hat F = (L^TL)^{-1}L^TX ]

    作为F的估计值

    德尔菲打分法(Delphi method)是一种通过多位专家的独立的反复主观判断,获得相对客观的信息、意见和见解的打分方法。相比较于因子分析,德尔菲打分法较为主观。

    例题精讲

    1.下列关于因子分析说法正确的是?

    A.主成分法是常用的因子载荷矩阵的估计方法

    B.最大方差旋转是应用最广泛的因子旋转方法,这是一种斜交旋转

    C.在选择合适的因子数量时,可以适当放宽对于特征根大小的选择要求,大于0.7时就可以考虑保留

    D.因子分析作为维度分析的手段,是构造合理的聚类模型和文件的分类模型的必然步骤

    答案:ACD

    解析:主成分法的得分系数矩阵中,每个分量于相应特征值得平凡根进行乘积,组成的新矩阵可以作为因子载荷矩阵的估计,这种方法称为主成分法,因此A正确;因子旋转时采用最大方差旋转是一种正交旋转,也是最常用的因子旋转方法,因此B错误;C结论为经验结论,因此分析中一般可以放宽对特征根大小的旋转要求,因此正确;聚类模型往往要保证每个聚类变量权重的平衡,因此事先经常在用因子分析对变量进行降维,分类模型中解释变量的共线性会导致模型不稳定,因此也经常事先对解释变量进行因子分析。因此D正确。

    2.关于主成分于因子分析阐述正确的是?

    A.因子分析中是把因子表示成各个变量的线性组合

    B.主成分分析中是把主成分表示成各个变量的线性组合

    C.因子分析需要构造因子模型:用潜在的假想变量和随机影响变量的线性组合表示原始变量

    D.因子分析和主成分分析只有在线性表示上是一致的

    答案:BC

    3.下列关于主成分分析与因子分析的异同点描述正确的是?

    A.两种分析方法都是一种降维、简化数据的技术

    B.主成分分析是从显在变量去提炼潜在主成分的过程

    C.主成分分析需要构造分析模型而因子分析不需要构造因子模型

    D.因子分析从本质上是将原指标进行了综合和归纳


    答案:A

    解析:主成分分析的本质上是一种线性变换,是将原指标综合、归纳。而因子分析是从显在变量去提炼潜在因子的过程,是将原指标进行分解、演绎。所以BD错误。C项中正确的描述是主成分分析不需要构造分析模型而因子分析要构造因子模型。

  • 相关阅读:
    Zabbix 单位换算
    Confluence6.9配置邮件服务器
    Linux内核基础优化
    Nginx跨域问题
    ssh远程登录过程中卡住
    postfix无法启动问题
    mysql-配置文件详解
    Mongodb-副本集部署
    Mongodb-安全配置优化
    Mongodb-简单部署
  • 原文地址:https://www.cnblogs.com/pandaboy1123/p/14296440.html
Copyright © 2011-2022 走看看