Fisher判别分析
首先我们得搞清楚什么是Fisher算法?选取任何一本模式识别与智能计算的书都有这方面的讲解。首先得知道Fisher线性判别函数,在处理数据的时候,我们经常遇到高维数据,这个时候往往就会遇到“维数灾难”的问题,即在低维空间可行,那么在高维空间往往却不可行,那么此时我们就可以降数据降维,将高维空间降到低维空间。
可以考虑把维空间的样本投影到一条直线上,形成一维空间,即把数据压缩到一维,这在数学中总是容易办到的。然而,即使样本在维空间里形成若干紧凑的互相分的开的集群,若把它们投影到一条任意的直线上,也可能使几类样本混在一起而变得无法识别。但在一般的情况下,总可以找到某个方向,使在这个方向的直线上,样本的投影能分开最好。
(2)计算样本类内离散度矩阵 Si 和总类内离散度矩阵 Sw 。
(3)计算样本类间离散度矩阵 Sb 。 Sb=(m1−m2)(m1−m2)T 。
(4) 求向量 w∗ 。为此定义Fisher准则函数
使得 JF(W) 取的最大值的 w∗ 为: w∗=S−1w(m1−m2) 。
(5)将训练集内所有样本进行投影。 y=(w∗)TX 。
(6)计算在投影空间上的分割阈值 y0 。阈值的选取可以有不同的方案,比较常用的一种为
另一种为
其中, mi~ 为在一维空间各样本的均值: mi~=1N1∑y∈ωiy 。
样本的内类离散度 s2i~ 和总类离散度 sw~ 为 s2i~=∑y∈ωi(y−mi~),i=1,2 ,
(7)对于给定的 X ,计算它在
w∗
y=(w∗)TX
(8)根据决策规则分类,有
y>y0⇒X∈ω1y<y0⇒X∈ω2
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208867.html原文链接:https://javaforall.net
