基于MATLAB的判别分析的改进与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- ∧统计值,
记为
λ λ , (1)
(2)
r+1 r+1
,
…,λr(m+1-
r)
。显
然
只
需
选
择
m
in
λ [
(1) r+1
λ ,
(2) r+1
,
…,λr(m+1-
r)
]
=λr+1
与
λ r
比较
。若
λ r+1
<λr , 则
说明该变量 xr+1 引入判别函数式后 , 判别效果有了改善 ; 反
之 , xr+1 不能引入 。
-
W
( s) kk
W
( s) kk
~ F ( g - 1, n -
g-
r - 1)
(3)
— 80 —
对于给定水平 α,查 F分布表可得门坎值 Fα。如果 Fxk > Fα, 则认为变量 xk 重要 ,可以引入式 ( 1) ;否则变量 xk 不能引 入式 ( 1) 。
2) 特征变量的剔除
与特征变量的引入相类似 ,设判别函数中已引入 r个变
s = 0; im = 0; u = 1; while im ~ =m while 1 > 0
s = s + 1; vn = 10000; vx = 0; in = 0; ix = 0; disp ( [ ’- - - - step ’, num2 str( s) , ’- - - - - ’] ) ; disp ( [ ’s = ’, num2 str( s) , ’ im = ’, num2 str( im ) ] ) ;
第 24卷 第 9期 文章编号 : 1006 - 9348 ( 2007) 09 - 0079 - 03
计 算 机 仿 真
2007年 9月
基于 M ATLAB的判别分析的改进与实现
陈辉 1, 2 ,李军 1 ,李启飞 1
(1. 成都理工大学地球探测与信息技术教育部重点实验室 ,四川 成都 610059; 2. 成都理工大学信息管理学院 ,四川 成都 610059)
for i = 1: m if w ( i, i) > = 0. 0000001 | t( i, i) > = 0. 0000001 if w (m + 1, i) < 0 | t(m + 1, i) < 0 v = t( i, i) /w ( i, i) ; disp ( [ ’x’, num2 str( i) , ’( b. s. ) ’, ’ v ( ’, num2 str( i) , ’) = ’, num2 str( v) ] ) ; if v > vx % if 1 vx = v; ix = i; end else v =w ( i, i) / t( i, i) ; disp ( [ ’x’, num2 str ( i) , ’( n. s. ) ’, ’ v ( ’, num2 str ( i) , ’) = ’, num2 str( v) ] ) ; if v < vn vn = v; in = i; end
计算所有变量
x1 ,
x2 ,
…,
xm
所对应的
λ x1
,λx2
,
…,λxm
,
选取
m in [λx1 ,λx2 , …,λxm
]
=λxk 进入函数式
(
1
)
。设
λ x
k
对应的变
量为 xk。xk 能否最后进入判别函数式 , 还需与引入的门坎值
比较 。门坎值的确定可用如下统计量 :
Fx k
=
nห้องสมุดไป่ตู้
g
r -
1
g ·Tk(ks)
(4)
从式 ( 4) 可以得出 r - 1个变量的 W ilks - ∧统计值 ,记
为
λ(1) r- 1
,
如果
λ(1) r- 1
<λr,可以从判别函数中考虑剔除 x1 ,否则
不能剔除 。我们可以顺次求出 r个变量的 W ilk s - ∧统计值 ,
并和λ 相比较 r
。若有多个变量的
W
ilk s
-
∧统计值小于
量 ,方程如式 ( 1) 所示 ,其对应的 W ilks - ∧统计值可算出为
λr。在 x1 , x2 , …, xr 中使用穷举的方法 , 不妨设变量是按自然 顺序考虑剔除且从 x1 开始 ,此时判别函数记为 :
C2(k1) x2
+ C3(k1) x3
+
…
+
C
(1) rk
xr,
k
= 1, 2, …, g
2 判别分析中的变量择优
2. 1 M ATLAB中判别分析函数分析 class = classify ( samp le, training, group ) ———线性判别分
析函数 ,其中 : group是一个向量 ,包含从 1到组数的正整数 。 它指明训练集 training中的每一行属于哪一个总体 。 group
2. College of Information M anagement, Chengdu University of Technology, Chengdu Sichuan 610059, China)
ABSTRACT: This paper briefly introduces the basic idea of discrim inant analysis ofMATLAB , and stresses its supe2 riority on system simulation and statistics analysis, but also analyses the shortage of discrim inant analysis in MAT2 LAB. This paper is a great imp rovement aim ing at the shortage, and how to select the best character - variables in discrim inant analysis is given in detail, and the realization of the method in MATLAB is also studied and discussed. The algorithm step s and correspondingMATLAB p rocedure code are given. The self - p rogramme function - - W ises2 tep is compared w ith the inner function of discrim inant analysis - - Classify in MATLAB. The ideal result is obtained and it show s that the method is very effective, not only imp roves the computing efficiency, but also makes the ideal result excellent. KEYW O RD S:D iscrim inant analysis; Selection of variables; Classify function
Im provem en t and Rea liza tion of D iscr im inan t Ana lysis in M ATLAB
CHEN Hui1, 2 , L I Jun1 , L I Q i - fei1
(1. Key Lab. of Earth - Exp loration and Information Techniques of Education M inistry of China, Chengdu University of Technology, Chengdu Sichuan 610059, China;
— 79 —
和 training必须具有相同的行数 。 Samp le是一个矩阵 ,它的 每一行都是一个待判样品数据 。Classify函数是判别 samp le 中的每一行样品归属于训练集 training的哪一个总 体 中 。 samp le和 training必须具有相同的列数 。
综上分析 , classify函数并没有进行变量优化选择 ,仅仅 只是在给定判别总体及其分类的前提下 ,根据训练集中的数 据与待判样品之间的 M ahalanobis距离对所给样本进行分 类 。显然 ,该函数的判别效果是很不理想的 ,尤其是对多变 量的情况 。
λ r
,
一
般选择最大者所对应的变量 λ 作为删除对象 。为了简化计 xk
算 ,这里我们同样运用式
(2)
的
λ xK
作为剔除变量的依据
,
剔
除变量的门坎值同样使用式 ( 3) 。
3 改进判别分析的 M A TLA B程序主要代码
由于篇幅有限 ,这里只列出主要程序代码 。关于判别分 析中的其他步骤的算法 ,我们在此不再给出 ,这里仅给出变 量引入和变量剔出的主要代码 。其中变量 : m 为判别样品的 变量总数 , im 为引入的变量数 , s为执行步数 , u, ks为 W ilks 统计量 , f1 / f2分别为引入 /剔出变量的检验临界值 , w / t为 r 个变量所构成的组内离差阵和总离差阵 。 3. 1 变量的剔出与引入
的 r个变量构成 r + 1个变量的判别函数 ,此函数为 :
Fk ( x) = C1k x1 + C2k x2 + … + Crk xr, k = 1, 2, …, g ( 1) 其中 x1 , x2 , …, xr表示已进入方程中的 r个变量 ,未进入 的变量记为 xr+1 , xr+2 , …, xm 。 将 xr+1 , xr+2 , …, xm 引入式 ( 1) , 并计算出 相 应 的 W ilk s
1)特征变量的引入
在特征变量的引入和剔除过程中 , 每次只引入或剔除一
个特征变量 。设经 S次迭代判别函数式已引入 r个变量 ,据式
( 1) 计算出相应
r个变量的 W ilks -
∧统计值记为
λ r
,
此时剩
余 m - r个变量未引入判别式 ,于是我们总可以在剩下的 m -
r个变量中用穷举法 ,让 m - r个变量中一个变量与已经进入
在 MATLAB语言中具有处理判别分析的函数 ———Clas2 sify,该函数虽然能够根据样本点训练后 ,对未知样本进行判
收稿日期 : 2006 - 07 - 13 修回日期 : 2006 - 07 - 16
别分类 ,但是该函数只是简单的马氏距离对样本点进行分 类 ,并未对训练的样本特征 ———特征变量进行优化 ,而特征 变量是判别分析中的一个重要问题 ,变量选择是否恰当 ,是 判别效果优劣的关键 [1 ] 。如此以来 ,就会导致计算量增大 , 变量间可能出现相互不独立 ,方程组阶数太高 ,以及矩阵奇 异等问题 。针对以上问题 ,作者在 MATLAB 环境下 ,给出自 编带有变量择优的逐步判别分析函数 W isestep,并针对同一 实例进行分析 ,对比 W isestep和 MATLAB中的 Classify函数 , 得出了 W isestep函数较优的结论 。
2. 2 变量择优的判别分析算法实现 所谓变量择优算法则是采用有进有出的算法 ,即每一步
都要对变量的附加信息进行检验 ,使其优胜劣汰 。它的原理 是先将判别能力最强的变量引入判别方程 ,在接下来引入变 量的过程中 ,先前引入的变量 ,随着其他变量的引入 ,其显著 性可能有所降低 ,若其判别能力不强了 ,则要从所选的集合 中剔除 。总之 ,被选变量的集合总是保留最强判别能力的特 征变量 。这里对变量的判别能力用 W ilks - ∧统计量 [3, 6 ]加 以描述 。
为了优化计算 ,我们定义一个便于计算且与 λ等效的统
计量
λ xk
(即简化后的
λ)
:
λ xk
=
W
( s) kk
Tk(ks)
(2)
来衡量变量
xk
的重要性
。式中
W
( s) kk
表示通过
S次迭代后
W 阵在 k行 k列的元素 , Tk(ks) 表示通过 S次迭代后 T阵在 k行 k列的元素 。
说明 :在该算法开始时 , 首先应考虑引入变量 , 为此需要
摘要 :对 MATLAB 仿真软件中的判别分析作了简要介绍 ,突出了其系统仿真与统计分析的优势 ,但也分析了基于 MATLAB 的判别分析所具有的不足之处 。针对其不足之处作了改进 ,系统地论述了判别分析中特征变择优的算法 ,并对该算法在 MATLAB中的实现进行了研究和探讨 ,给出了实现的算法步骤以及相应的 MATLAB 程序代码 。利用实际数据资料 ,对自编 判别函数 W isestep 与 MATLAB 中自带的判别分析函数 Classify进行了比较 。实验结果表明 ,经过变量择优后的算法不仅大 大提高了计算效率 ,实验结果也较 MATLAB 自带函数更优 。 关键词 :判别分析 ;变量择优 ;分类函数 中图分类号 : TP391 文献标识码 : A
1 引言
MATLAB是一套用于科学工程计算的高效高级语言 ,是 当前国内外十分流行的工程设计软件 ,同时也是一种面向科 学与工程计算的高级语言 ,是适用于科学和工程计算的数学 软件系统 。MATLAB 针对每一类问题的求解 , 它都能给出 该类问题的各种高效算法 。
近年来 ,随着定量科学的深入发展及其在自然科学 、社 会科学及经济管理科学中的广泛应用 ,统计分析的实践价值 就显得尤为重要 [1 ] 。作为统计分析的一种重要方法 ———判 别分析 ,被用于判别个体所属群体 。