判别分析

判别分析

Table of Contents

  • 1. 距离判别分析
  • 2. Fisher判别分析
  • 3. 判别分析实现(Using R)

1 距离判别分析

  1. 基本概念
    • 判别分析是用以判别个体所属群体的一种统计方法产生于20世纪30年代, 在许多现代自然 科学的各个分支和技术部门中得到了广泛的应用
    • 例-心脏病利用计算机对一个人是否有心脏病进行判断时, 可以抽取一批没有心脏病的人, 测量其 $p$个指标的数据, 然后再取一批已知患有心脏病的人, 同样也测得  p 个相同指 标数据, 利用这些数据建立一个判别函数, 并求出相应的临界值, 对新病人可以通过测得其 指标数据, 给出是否患心脏病的结论
    • 其他例子
      • 化石及文物年代的判断,
      • 地质学中, 对是否有矿的判断
      • 质量管理中, 对产品是否合格的判断
      • 植物学中, 对新发现植物种别的判断
  2. 判别分析是统计学中经典的分类预测方法。
    • 根据已有的训练样本, 确定分类型输出变量与数值型输入变量之间的数量关系, 建立 判别函数,
    • 给定新的样本数据, 通过判别函数, 实现对新数据输出变量类别的预测
    • 按照判别准则可以分为距离判别法, Fisher判别法和Bayes判别法
  3. 距离判别法简介
    • 模型 设有分别来自  K  个总体的  nk,k=1,,K  个样本, 每份样本都有若干个输入变量  X1,X2,...,Xp  ,  (p<k)  个观测值, 且均为数值型, 服从正态分布
    • 距离判别法的主要思路
      • 将  nk  个样本数据看做  p  维空间中的点, 分别计算每个类别的类中心和类协方差矩 阵
      • 分别计算新数据到各类别中心的Mahalonobis距离,
      • 根据距离最近的原则, 将新数据点判给距离最近的类别
  4. 模型-马氏距离
    • 两点间马氏距离 设  X,Y  为总体  G  中抽取的样本,  G  服从  p  维正态分布  N(μ,V)  定义  X,Y  两点之间的马氏距离为
      dM(X,Y)=(XY)TV1(XY)
    • 新数据点  X  与总体  G  的马氏距离, 设  G  的重心为  μ , 协方差阵为  V , 则
      dM(X,G)=(Xμ)TV1(Xμ)
  5. 判别分析以两个类别为例
    • 设有两个类别,  G1  和  G2  ,
    • 从第一个总体中抽取 n 个样本, 从第二个总体中抽取m 个样本,
    • 每个样本有 p 个特征, 分别计算每个总体的均值估计和协方差阵的估计
      μ1=1ni=1nX1i,μ2=1mj=1mX2j
    • 协方差矩阵的估计分别为
      Σ1Σ2=1ni=1n(X1iμ1)(X1iμ1)T=1mj=1m(X2jμ2)(X2jμ2)T
  6. 计算马氏距离
    D2(X,Gi)=(Xμi)(Σ1)1(Xμi), i=1,2

    显然, 马氏距离是点  X  到类中心向量的协方差阵逆加权后的距离。

  7. 判别规则
    • 如果  D2(X,G1)<D2(X,G2)  , 则  XG1
    • 如果  D2(X,G1)>D2(X,G2)  , 则  XG2
    • 如果  D2(X,G1)=D2(X,G2)  , 则 待判断

    进一步可以构造判别函数  W(X)=D2(X,G2)D2(X,G1)  ,则相应的判别规则为

    • 如果  W(X)>0  则  XG1
    • 如果  W(X)<0  则  XG2
    • 如果  W(X)=0  则 待判断
  8. 协方差相同时的线性判别函数–二维情形

    lineardis.png

  9. 协方差相同时的线性判别函数–二维情形

    lineardis3.png

  10. 协方差阵不同时–非线性判别函数

    判别函数  W(X)=D2(X,G2)D2(X,G1)  是一个二次判别函数, 是一个分割曲线或超曲面

    判别分析_第1张图片

  11. 协方差阵不同时, 三维情形

    判别分析_第2张图片

2 Fisher判别分析

  1. Fisher判别法
    • Fisher 判别法基本思想: R. A. Fisher1932年提出 先投影再判别, 其中投影是Fisher判别的核心思想,
    • 投影的含义是进行线性变换, 之后在低维空间中寻找更好的判别方法
    • 投影法则
      • 从两个总体中抽取具有  p  个指标的样品观测数据, 记为  X1,,Xp  ,
      • 借助于方差分析的思想,构造线性判别函数
        y=b0+b1X1+...+bpXp
      • 系数  bi  称为判别系数,表示各输入变量对于判别函数的影响,
      • bi  的确定规则是两组间的组间离差最大, 而每个组的组内离差最小
  2. 寻找最理想的分类判别效果

    二维数据投影到一维空间中

    判别分析_第3张图片

  3. 高维情形

    三维数据投影到二维空间中

    判别分析_第4张图片

  4. 理论分析
    • 首先应该在输入变量的p维空间中, 找到某个线性组合, 使各类别间的差异最大(和组内差异 相比较而言), 作为第一维度, 代表输入变量组间方差中的最大部分, 得到第一判别函数
    • 然后, 按照同样规则依次找到第二判别函数、
    • 第三判别函数,
    • 且各判别函数之间尽可能独立
  5. 求解-矩阵形式表示(以两组判别为例)
    • 设原始数据为  xki, i=1,,nk,k=1,,K
    • 点 x 的以a为法方向的投影为  ax  则各组数据的投影为 axk1,axk2,...,axknk,k=1,,K  ,记  Gk  组投影的均值为 ax¯(k)=1nki=1nkax¯(k)i,k=1,,K  ,
    • 则 K 组数据投影的总均值为  ax¯=1nk=1Ki=1nmax¯(m)i
  6. 组间平方和 记为SSG
    SSG=m=1knm(ax¯(m)ax¯)2=a[m=1knm(x¯(m)x¯)(x¯(m)x¯)]a=aBa
    • 其中  B=[m=1knm(x¯(m)x¯)(x¯(m)x¯)]  代表了各组均值和总 均值的差异
    • 称为组间 SSCP(Sums of Squares and Cross-product Matrix)
  7. 组内离差平方和记为SSE
    SSE==m=1ki=1nm(ax(m)ix¯(m))2a[m=1ki=1nm(x(m)ix¯(m))(x(m)ix¯(m))]a=aEa
    • 其中  E=m=1ki=1nm(x(m)ix¯(m))(x(m)ix¯(m))  为组内SSCP
    • 注意上述的  E,B  都可以通过数据直接计算得出
  8. 寻找 a 使得SSG尽可能大 而SSE尽可能小,

    考虑SSG和SSE的比值,

    Δ(a)=aBaaEamax

    可以证明使  Δ(a)  达到最大的值为 方程  |BλE|=0  的最大 特征根  λ1  记 方程  |BλE|=0  的全部特征根为  λ1λ2λr>0  , 相应的特征变量为  ν1,ν2,,νr  则判别函数为  yi(x)=νix

  9. Fisher 线性判别函数的求法
    • 不妨记  B=SSG  代表组间离差阵,  A=SSE  代表组内离差阵
    • 求  a  使得
      aBaaAa=defΔ(a)

      达到最大。

    • 显然这样的  a  只与方向有关, 因此假设附加条件为  aAa=1
    • 此时问题转化为求  a  ,使得  Δ(a)=aBa  在条件  aAa=1  的条件下达到最大
    • 构造拉格朗日目标函数为
      φ(a)=aBaλ(aAa1)
  10. 拉格朗日乘子法
    • 关于 a 和  λ  求导得
      φa=2(BλA)a=0,φλ=1aAa=0
      • 由上述方程组的第一个方程知,  λ  是  A1B  的特征根,  a  是相应的特征 向量, 且可以证明  λ=Δ(a)  , 实际上  Δ(a)=aBa=λaAa=λ
      • 因此上述条件极值问题转化为求  A1B  的最大特征根和相应特征向量问题
      • 设  A1B  的非零特征值为  λ1λ2λr>0  ,相应的满足约束条件的特征向量为  l1,,lr  .
      • 取  a=l1  时  Δ(a)  可以达到最大, 最大值为  λ1
      • Δ(a)  的大小可以衡量判别函数  u(X)=aX  的判别效果
      • 定义  λ1/i=1rλi  称为线性判别函数  u1(X)=l11X  的判别能力
  11. 判别能力的定义
    • pi  为第i个判别函数的判别能力
    pi=λih=1rλh
    1. 前m个判别函数的判别能力为
      i=1mpi=i=1mλih=1rλh

      可依据两个标准决定最终取几个判别函数

      • 指定取特征值大于 1 的特征根
      • 前m个判别函数的判别能力达到指定的百分比,一般采用 85\%
  12. Fisher 判别法的进行步骤
    • 首先计算Y空间中样本所属类别的中心
    • 对于新样本, 计算其Fisher 判别函数值, 以及Y空间中与各类别中心的距离
    • 然后利用距离判别法, 判别其归属的类别
      W(Y)=(YY¯)Σ1(Y¯iY¯(j))Y¯=12(Y¯i+Y¯(j))

      当  W(y)>0  时, 新样本 X属于第  i  类

3 判别分析实现(Using R)

  1. Iris数据简介
    • 数据150条,包含三类鸢尾花数据, 每样50个
      • Iris Setosa
      • Iris Versicolour
      • Iris Virginica
    • 四个变量分别为
      • 花萼(sepal) 的长度(length)
      • 宽度 (width)
      • 花瓣(petal) 的长度(length)
      • 宽度 (width)
  2. 数据展示
    head(iris)
    
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species
    1          5.1         3.5          1.4         0.2  setosa
    2          4.9         3.0          1.4         0.2  setosa
    3          4.7         3.2          1.3         0.2  setosa
    4          4.6         3.1          1.5         0.2  setosa
    5          5.0         3.6          1.4         0.2  setosa
    6          5.4         3.9          1.7         0.4  setosa
    
  3. 数据图形展示
    plot(iris[,1:4],col=as.numeric(iris[,5]))
    

    判别分析_第5张图片

  4. Fisher 线性判别分析实现(Using R)
    • 在R中实现线性判别分析的命令是 MASS 包中的LDA函数(linear discriminant Analysis)
    • 下面以 Iris 数据为例进行判别分析, 首先从150条数据中抽取75条数据建立判别函数
    require("MASS")
    set.seed(1314)
     train <- sample(1:150, 90)
    table(iris$Species[train])
    
    setosa versicolor  virginica
        30         31         29
    
  5. 进行线性判别分析,并预测剩余60个样品的类别号
    z <- lda(Species ~ ., iris, prior = c(1,1,1)/3, subset = train)
    test.sp<-predict(z, iris[-train, ])$class
    test.true<-iris[-train,5]
    table(test.true,test.sp)
    
                test.sp
    test.true    setosa versicolor virginica
      setosa         20          0         0
      versicolor      0         18         1
      virginica       0          1        20
    
  6. 线性判别分析的结果
    Call:
    lda(Species ~ ., data = iris, prior = c(1, 1, 1)/3, subset = train)
    Group means:
               Sepal.Length Sepal.Width Petal.Length Petal.Width
    setosa         5.013333    3.456667     1.440000   0.2366667
    versicolor     5.967742    2.832258     4.287097   1.3451613
    virginica      6.582759    2.986207     5.582759   1.9827586
    Coefficients of linear discriminants:
                        LD1        LD2
    Sepal.Length  0.8095703  0.2655179
    Sepal.Width   1.4207588 -2.4118265
    Petal.Length -2.0779530  0.5599844
    Petal.Width  -2.9318010 -2.3536921
    
    Proportion of trace:
       LD1    LD2
    0.9943 0.0057
    
  7. 线性判别分析的投影效果
    plot(z,col=as.numeric(iris[train,5]))
    

    判别分析_第6张图片

Validate

你可能感兴趣的:(判别分析)