Fisher线性判别
分类是我们经常会遇到是问题,下面主要介绍Fisher线性判别,利用Fisher算法来分类UCI数据集中的Iris数据集和Sonar数据集。
一、数据集说明
UCI数据库是加州大学欧文分校(University of CaliforniaIrvine)提出的用于机器学习的数据库,这个数据库目前共有488个数据集,其数目还在不断增加,UCI数据集是一个常用的标准测试数据集。我们主要使用iris和sonar两个数据集,其中Iris数据集有三类,四维,150条数据;Sonar数据集为两类,60维,208条数据。下表为部分Iris数据展示:
二、Fisher原理分析
判别分析是一种经典的现行分析方法,其利用已知类别的样本建立判别模型,对未知类别的样本进行分类。在这里我们主要讨论fisher判别分析的方法。
2.1 Fisher思想
数据一般具有高维特征,而在使用统计方法处理模式识别问题时,通常是在低维空间展开研究的,因此降维是解决问题的重要方式。假设数据存在于n维空间,在数学中,通过投影可以将数据映射为一条直线,找到使数据可分的投影直线就是Fisher判别要解决的问题。
Fisher判别思想是投影,使多维问题简化为一维问题来处理。选择一个适当的投影轴,使所有的样品点都投影到这个轴上得到一个投影值。对这个投影轴的方向的要求是:使每一类内的投影值所形成的类内离差尽可能小,而不同类间的投影值所形成的类间离差尽可能大。
2.2 公式推导
两类的线性判别问题可以看作是把所有的样本都投影到一个方向上,然后在这个一维空间中确定一个分类的阈值。过这个阈值点且与投影方向垂直的超平面就是两类的分类面。Fisher线性判别的思想就是选择投影方向,使得投影后 相隔尽可能远,而同时每一类内部的样本又尽可能聚类。
这里只讨论二分类问题,设训练集为X={x1,x2…xn},每个样本都是一个向量,最终我们要寻找一个投影方向W,则投影后的样本为:
y
i
=
W
T
∗
X
i
y_i=W^T*X_i
yi=WT∗Xi
在原样本空间中,类均值向量为:
m
i
=
1
/
N
i
∗
s
u
m
(
x
j
)
,
i
=
1
,
2
,
.
.
.
N
m_i=1/N_i*sum(x_j),i=1,2,...N
mi=1/Ni∗sum(xj),i=1,2,...N
定义各类的类内离散度矩阵为:
S
i
=
s
u
m
[
(
x
j
−
m
i
)
∗
(
x
j
−
m
i
)
T
]
,
i
=
1
,
2
S_i=sum[(x_j-m_i)*(x_j-m_i)^T],i=1,2
Si=sum[(xj−mi)∗(xj−mi)T],i=1,2
总类内离散度矩阵为:
S
w
=
S
1
+
S
2
S_w=S_1+S_2
Sw=S1+S2
类间离散度为:
S
b
=
(
m
1
−
m
2
)
(
m
1
−
m
2
)
T
S_b=(m_1-m_2)(m_1-m_2)^T
Sb=(m1−m2)(m1−m2)T
将Fisher判别准则变换为Rayleigh商,将求解最佳投影方向的问题转化为求解下列式子最大值的问题:
m
a
x
J
F
(
w
)
=
W
T
S
b
W
/
W
T
S
w
W
max J_F(w)=W^TS_bW/W^TS_wW
maxJF(w)=WTSbW/WTSwW
上式分子为类间离散度,分母为总类内离散度,求其最大值就是使得分母最小,分子最大,即使得总类内离散度最小,类间离散度最大。
求解得到最佳投影方向为:
w
∗
=
(
m
1
−
m
2
)
/
S
w
w^*=(m_1-m_2)/S_w
w∗=(m1−m2)/Sw
根据求得到投影方向我们可以确定判别函数如下:
g
(
x
)
=
w
T
∗
x
+
b
g(x)=w^T*x+b
g(x)=wT∗x+b
将x的样本值带入上述,若是g(x)>0样本为一类,g(x)<0样本为另一类,由此可将线性可分的两类数据分开。
三、问题求解
根据python代码求解得:
1,Iris数据集
选择三十个数据作为训练集,得到其三分类准确率为:86.36363636363636 %
2,Sonar数据集
选择总数据的60%作为训练集,得到其二分类准确率为:73.80952380952381 %
四、结果分析
4.1 分析采用不同特征对数据分类
4.1.1 Iris数据集
由于Iris数据集只含有四维特征,所以我们首先选择其作为我们分析特征对数据分类效果的影响的原始数据。其包含四个特征,分别作出第一二类,一三类,二三类iris分别在1-2,1-3,1-4,2-3,2-4,3-4等不同的两维特征下的散点图:
由图像可知,选择任何两维不同的特征都可以很好的将第一,二类,第一三类数据分类,但是我们发现,在分类第二三类数据时,特征的选择则会影响其分类效果,如果选择第一二维特征,则数据上会有很多的重叠,那么分类的准确率肯定会有所下降。
4.1.2 Sonar数据集
我们随机选择第一维特征和第2,10,20,30,40,50维特征做出散点图,发现选择任意两维特征一定不能分类Sonar数据集,而且如1-2,1-50的散点图,如果选择这类特征则完全不能区分类别,于是选择合适的特征十分必要。
由以上分析可得,选择合适的特征既可以降低算法的运算量还可以提高准确率,下面就如何挑选其中的主要特征做出分析:首先将每一类数据的每一维特征计算均值,并计算不同种类各均值的差值,则其中差值最大的特征便可以很好的分类,由计算结果我们得到,其中在第20,21,22维度的特征差值最大。
下面我们通过改变特征选取的数量画出准确率的变化趋势图。
由图可知,在选择其中前20维左右的数据时,分类的准确率达到最高,这刚好对应了我们计算得到的在20,21,22维度时数据差别最大,所以并不是特征越多则分类越准确,不同的特征之间对于数据的分类起到的效果不同。
下表为不同特征数下Sonar数据的分类准确率,其中训练集数目为:75,85,特征数为:30。
4.2 分析训练集数量对数据分类的影响
训练集的数量选取对于分类效果也有很大的影响,如果训练集过小,则模型还未达到最优,如果训练集的数量过多,则模型可能会过拟合,其泛化能力下降,所以合适的训练集与测试集比例可以达到最优的分类效果。
下面选择Sonar数据集,通过改变其训练集与测试集的比例,做出分类准确率的变化趋势:
由图像可知,随着训练集与测试集比例的增大,准确率一直递增,但是并不能说训练集数量越多准确率越高,因为训练集增多的同时,测试集的数目也在下降,但是发现在训练集和测试集比例在0.4-0.5和0.6-0.7变化时,准确率不增反降,所以选择合适的比例也至关重要。
文章的pdf版本可以点此链接下载:link