判别分析简介
判别分析背景介绍
为了理解什么是判别分析,看下面两个例子:
例1:
银行为了对贷款进行管理,需要预测哪些类型的客户可能不会按时归还贷款(不可靠客户)。通过历史数据收集若干客户的个人信息,如年龄、工资收入、教育程度、存款等,根据他们的贷款还款记录,将客户分成可靠客户和不可靠客户。银行希望能从以往数据中找出可靠客户和不可靠客户的模式特征,从而当有150个新的客户提交贷款请求时,能够准确发放贷款,避免遭受损失。
例2:
2000年全国数学建模竞赛题DNA序列分类问题。
给定20个已知类别的DNA序列,其中序列标号1一10为A类,11-20为B类。请从中提取特征,构造分类方法,并用这些已知类别的序列,衡量你的方法是否足够好。然后用你认为满意的方法,对另外20个未标明类别的人工序列(标号21一 40)进行分类,例如下面三个序列
atggataacggaaacaaaccagacaaacttcggtagaaatacagaagcttagatgcatatgtttt ttaaataaaatttgtattattatggtatcataaaaaaaggttgcga A类.
gtattacaggcagaccttatttaggttattattattatttggattttttttttttttttttttaagttaacc gaattattttctttaaagacgttacttaatgtcaatgc B类
ccattagggtttatttacctgtttattttttcccgagaccttaggtttaccgtactttttaacggtttac
ctttgaaatttttggactagcttaccctggatttaacggc ?
这类问题共同的特征,是希望从信息完备的对象中学习一种模式,用以指导未来的实践。
银行希望能从过去的客户行为中总结出可靠和不可靠客户的判断方法
在DNA问题中,希望从已知类别的DNA序列中,找到判别DNA类别的依据。这类问题被称之为分类问题。是当前人工智能研究的一个热点问题
判别分析是有指导的学习,从已知类别的样本中学习模式特征。聚类分析是无指导学习。
为了解决这样问题,我们需要做哪些工作?
- 特征变量的提取
用什么变量能够有效地区分不同的客户?教育水平,储蓄存款还是其他?
一个DNA序列由4个字符A,T,C,G排列、组合而成,什么样子序列来决定了序列的类别?需要提取DNA序列的结构特征参数。如1个字符的出现频率,2个字符的出现频率,3个学符的出现频率等。
特征变量的提取直接影响模式特征有效性表达。 - 确定决策变量:类别明确,可靠或不可靠,A类或B类
- 需要学习特征变量和类别之间的关系,类别模式特征,称之为分类器的设计
- 效果的好坏,需要通过评价判断效果
- 如果能满足要求就可以用来预测
判别分析的数学语言描述
给定n个样品的p元观察数据和决策变量值。第i个样本特征变量的取值
X
i
=
(
x
i
1
,
x
i
2
,
…
,
x
i
p
)
X_{i}=(x_{i1},x_{i2},\dots,x_{ip})
Xi=(xi1,xi2,…,xip)。决策变量
y
i
y_{i}
yi取离散值
{
1
,
2
,
…
,
k
}
\left\{1,2,\dots,k\right\}
{1,2,…,k},
y
i
=
k
y_{i}=k
yi=k表示
X
i
X_{i}
Xi是来自第k个类别。
给定n个观察数据点
(
X
i
,
y
i
)
,
i
=
1
,
2
,
…
,
n
(X_{i},y_{i}),\ i=1,2,\dots,n
(Xi,yi), i=1,2,…,n,从中寻找规律(判别函数),当给定的一个新样品
(
x
1
,
x
2
,
…
,
x
p
)
(x_{1},x_{2},\dots,x_{p})
(x1,x2,…,xp)时,我们需要判断其属于哪个类别,或者说决策变量
y
y
y的取值。
X i X_{i} Xi是研究对象的属性变量, y i y_{i} yi是决策变量(判别变量),取有限离散值 G 1 , G 2 , … , G k G_{1},G_{2},\dots,G_{k} G1,G2,…,Gk。部分样本决策变量的取值未知。
判别分析的经典方法
- 最大似然法:
建立在概率论中独立事件乘法定律的基础上,适用于各指标是定性的或半定量的情况 - Fisher判别分析:
用于两类或两类以上间判别,但常用于两类间判别。 - Bayes判别分析:
用于两类或两类以上间判别,要求各类内指标服从多元正态分布。 - 遂步判别分析:
建立在Bayes判别分析基础上,它象逐步回归分析一样,可以在众多指标中挑选一些有显著作用的指标来建立一个判别函数,使方程内的指标都有显著的判别作用而方程外的指标作用都不显著。 - logistic判别:
常用于两类间判别。它不要求多元正态分布的假设,故可用于各指标为二值变量的情况。
判别分析(DiscriminantAnalysis)和分类器设计(classificationMachine)研究的是相同的问题。不同专业背景的人各自采用自己习惯的称呼
分类器设计自前仍然是机器学习领域的前沿问题,其理论在不断发展完善,如支持向量机分类器,神经网络分类器,基于核理论的分类器等。
本专题在了解一般分类器设计理论之后,主要学习两种经典分类器,Fisher判别分析和Bayes判别分析
分类器设计的基本概念
什么是分类器
给定p维空间的来自k个总体
G
1
,
G
2
,
…
G
k
G_{1},G_{2},\dots G_{k}
G1,G2,…Gk的一组样本
X
i
=
(
x
i
1
,
x
i
2
,
…
,
x
i
p
)
,
i
=
1
,
2
,
…
,
n
X_{i}=(x_{i1},x_{i2},\dots,x_{ip}),\ i=1,2,\dots,n
Xi=(xi1,xi2,…,xip), i=1,2,…,n
X
i
∈
R
p
X_{i}\in R^{p}
Xi∈Rp
遵循某种原则寻找k个判别函数
g
i
(
X
)
,
i
=
1
,
2
,
…
,
k
g_{i}(X),\ i=1,2,\dots,k
gi(X), i=1,2,…,k
对任意未知类别样本,按如下判别规则确定其类别
∀
X
,
若
g
i
(
X
)
=
m
i
n
1
≤
i
≤
k
{
g
1
(
X
)
,
g
2
(
X
)
,
…
,
g
k
(
X
)
}
\forall X,若g_{i}(X)=min_{1\le i\le k}\left\{g_{1}(X),g_{2}(X),\dots,g_{k}(X)\right\}
∀X,若gi(X)=min1≤i≤k{g1(X),g2(X),…,gk(X)}
则判定
X
∈
G
i
X\in G_{i}
X∈Gi
我们看到,分类器就是一组判别函数叠加判别规则
分类器有两类,线性分类器和非线性分类器。若这些判别函数是线性函数,则分类器被称为线性分类器。否则被称为非线性分类器问题是依据什么理论去设计寻找这些函数?
给定了一组已知类别的观察样本,或许我们还需要对这些样本的分布做出一些假设。判别分析是利用已有样本的分类信息,得到体现这种分类的函数关系式(称之为判别函数,一般是与分类相关的若千个指标的线性或非线性函数关系式),然后利用该函数去判断未知样品属于哪一类。
基于距离的分类器设计
距离分类器是最简单的分类器,但它清楚地阐述了分类器的概态。
基本思想:首先根据已知类别的样本数据,分别计算各类的重心即分组(类)的均值,判别准则是对任给的一个观测样本,若它与第i类的重心距离最近,就认为它来自第i类。
距离判别法,对各类(或总体)的分布,并无特定的要求。按就近原则归类。
多个总体的距离判别
设有k个总体,
G
1
,
G
2
,
…
G
k
G_{1},G_{2},\dots G_{k}
G1,G2,…Gk,若判别某个体X属于哪个总体,则有如下方法:
判别函数:
g
i
(
X
)
=
d
2
(
X
,
G
i
)
,
i
=
1
,
2
,
.
.
.
,
k
g_{i}(X) = d^{2}(X,G_{i}),\ i = 1,2,... ,k
gi(X)=d2(X,Gi), i=1,2,...,k判别准则:
待判样本X,若
d
2
(
X
,
G
k
0
)
=
m
i
n
1
≤
i
≤
k
d
2
(
X
,
G
i
)
,
d^{2}(X,G_{k_{0}}) = min_{1\le i\le k} d^{2}(X,G_{i}),
d2(X,Gk0)=min1≤i≤kd2(X,Gi),
则判别X属于第
k
0
k_{0}
k0个类别(总体)·
一般不使用欧氏距离,而采用马氏距离,看下图
设有两个正态总体,
G
1
,
G
2
G_{1},G_{2}
G1,G2,
G
1
G_{1}
G1样本服从
N
(
μ
1
,
σ
2
)
N(\mu_{1},\sigma^{2})
N(μ1,σ2),
G
2
G_{2}
G2样本服从
N
(
μ
2
,
σ
2
)
N(\mu_{2},\sigma^{2})
N(μ2,σ2)
从概率的角度来看,总体
G
2
G_{2}
G2的样本比较分散,而总体
G
1
G_{1}
G1的样本则非常集中,因此A处的样品属于总体
G
2
G_{2}
G2的概率明显大于属于总体
G
1
G_{1}
G1的概率,也就是说,A处的样品属于总体
G
2
G_{2}
G2的“可能性”明显大于属于总体
G
1
G_{1}
G1的“可能性”!这也说明了用欧几里得距离来度量样品到总体距离的局限性。因此,在距离判别时一般使用马氏距离
马氏距离要求协方差矩阵可逆
当取协方差矩阵的逆矩阵时,得到马氏距离
Mahalanobis距离
B
=
[
c
o
v
(
X
)
]
−
1
=
∑
−
1
B=[cov(X)]^{-1}=\sum^{-1}
B=[cov(X)]−1=∑−1
d
X
Y
2
=
(
X
−
Y
)
T
∑
−
1
(
X
−
Y
)
d_{XY}^{2}=(X-Y)^{T}\sum^{-1}(X-Y)
dXY2=(X−Y)T∑−1(X−Y)
优点:
- 排除了指标间的相关性干扰
- 不受指标量纲的影响
- 对原数据进行线性变换之后,马氏距离不变
特别两个总体时的判别准则
{
X
∈
G
1
i
f
d
2
(
X
,
G
1
)
<
d
2
(
X
,
G
2
)
X
∈
G
2
i
f
d
2
(
X
,
G
2
)
<
d
2
(
X
,
G
1
)
\left\{\begin{matrix} X\in G_{1}\ if\ d^{2}(X,G_{1})<d^{2}(X,G_{2}) \\ X\in G_{2}\ if\ d^{2}(X,G_{2})<d^{2}(X,G_{1}) \end{matrix}\right.
{X∈G1 if d2(X,G1)<d2(X,G2)X∈G2 if d2(X,G2)<d2(X,G1)
可以用一个判别函数来代替
W
(
X
)
=
d
2
(
X
,
G
1
)
−
d
2
(
X
,
G
2
)
W(X)=d^{2}(X,G_{1})-d^{2}(X,G_{2})
W(X)=d2(X,G1)−d2(X,G2)
判别规则为
{
X
∈
G
1
i
f
W
(
X
)
<
0
X
∈
G
2
i
f
W
(
X
)
>
0
)
\left\{\begin{matrix} X\in G_{1}\ if\ W(X)<0 \\ X\in G_{2}\ if\ W(X)>0) \end{matrix}\right.
{X∈G1 if W(X)<0X∈G2 if W(X)>0)
W
(
X
)
=
0
W(X)=0
W(X)=0时待判
例
距离判别分类器举例,不同假设下分类结果不同
两种蠓Af和Apf已由生物学家W.L.Grogna和W.W.Wirth于1981年根据它们的触角长和翼长加以区分,下面是9只Af和6只Apf的触角长和翼长数据
Apf = [1.14, 1.78; 1.18, 1.96; 1.20; 1.86; 1.26; 2.00; 1.28; 2.00; 1.30; 1.96];
6行两列
Af = [1.24, 1.72; 1.36, 1.74; 1.38, 1.64; 1.38, 1.82; 1.38, 1.90; 1.40, 1.70; 1.48, 1.82; 1.54, 1.82; 1.56, 2.08];
9行两列
给定触角长和翼长分别为(1.24,1.80),(1.28,1.84),(1.40,2.04)三个标本判别他们的类别
不同假设下判别结果不同,采用马氏距离判别
d = mahal(x, Apf) - mahal(x, Af)
若d>0,则x属于Af
若d<0,则x属于Apf
若假设两总体协方差矩阵相等。
d=-4.3279,-2.7137,-3.9604
三个都属于Apf
若假设两总体协方差矩阵不相等,
d=1.7611,3.8812,3.6468
三个都属于Af
分类器的评价
为了客观评价分类器的效果,我们往往需要将所有已知类别的观察样本分成两部分,分别称之为训练集和测试集
训练集:以此为基础学习得到判别函数
测试集:用以检验判别函数的预测结果是否和观察结果一致。是后面评价分类器的主要依据
训练集和测试集的样本比例一般是7:3或6:4
评价方法就是评估分类器的错分率或误判率
当样本量足够大时,将样本分成训练集、测试集。对测试集样本误判的个数除以测试集总样本数,即为误判率的估计值。
若样本量不够大,用训练集做测试集,用判别方法对训练样本进行判断,统计误判的样本个数,计算误判样本占总样本的比例,并作为误
判概率的估计值。这个估计值,称为回代误判率
显然这个估计值偏乐观
回代误判率
以二分类问题为例。设
G
1
,
G
2
G_{1},G_{2}
G1,G2为两类总体,来自
G
1
,
G
2
G_{1},G_{2}
G1,G2的训练样本分别有m,n个,以全体训练样本作为m+n个待判样品,逐个代入已建立的判别准则中,判别其归属,这个过程称为回判。若属于
G
1
G_{1}
G1的样品被误判为属于
G
2
G_{2}
G2的个数为
n
1
n_{1}
n1个,属于
G
2
G_{2}
G2的样品被误判为属于
G
1
G_{1}
G1的个数为
n
2
n_{2}
n2个,则误判率估计为:
p
^
=
n
1
+
n
2
n
+
m
\hat{p}=\frac{n_{1}+n_{2}}{n+m}
p^=n+mn1+n2
一种补救的方法就是下面的舍一法。
舍一法:每次预留一个样本来检验,用剩下的n-1个样本建立判别准则,循环n次,检验完所有训练样本,记录判错的比率,以此作为误判概率的估计值。称为交叉误判率。
交叉误判率
交叉误判率估计时每次剔除一个样品,利用其余的m+n一1个训练样本建立判别准则再用所建立的准则,再对删除的样品进行判别。对训练样本中每个样品都做如上分析,以其误判的比例作为误判率,具体步骤如下:
- 从总体为 G 1 G_{1} G1的训练样本开始,剔除其中一个样品,剩余的m-1个样品与 G 2 G_{2} G2中的全部样品建立判别函数;
- 用建立的判别函数对剔除的样品进行判别;
- 重复步骤1,2,直到 G 1 G_{1} G1中的全部样品依次被删除,并进行判别,其误判的样品个数记为 n 12 n_{12} n12
- 对
G
2
G_{2}
G2的样品重复步骤1,2,3直到
G
2
G_{2}
G2中的全部样品依次被删除又进行判别,其误判的样品个数记为
n
21
n_{21}
n21
于是交叉误判率估计为
p ^ = n 12 + n 21 n + m \hat{p}=\frac{n_{12}+n_{21}}{n+m} p^=n+mn12+n21
推广:K-fold误判率
多类判别可以转化为两类判别:一类和其他类。
两类判别一般有准确推导和简洁的表达。
下图两类线性可分,有清晰的边界,判别效果好。
判别分析使用中的注意
判别分析是从样本中学习,首先对样本容量有一定的要求。一般而言,样本量n 应该是属性变量p的10~20倍,得到的判别函数性能比较稳定,至少也应该在5 倍以上。否则应该采用小样本学习方法。
决策变量(类别)的分类标准(作为判别分析的因变量)要尽可能准确和可靠,否则会影响判别函数的准确性,从而影响判别分析的效果。
属性变量(自变量)应是因变量的重要影响因素,应该挑选既有重要特性又有区别能力的变量,达到以最少变量而有高辨别能力的目标。属性变量不是越多越好。需要恰当的表述问题。
理论上,类间分得越开,判别效果越好,类间距离越近,判别效果就越差,下图非线性可分。
不同的判别方法通过误判率相互比较。
分析观察样本点分布,下图距离判别法失效。
分类器的设计是一个高度问题相关的研究课题。
无论SPSS还是MATLAB的分类函数,都只能实现简单基本的判别函数
要实现一个自己设计的分类器,需要分析问题,自己编程
MATLAB没有给出判别函数的具体表达式
可进一步去探索学习神经网络分类器、SVM分类器等先进理论工具。