本系列文章由孙旭编辑,转载请注明出处
http://blog.youkuaiyun.com/longyindiyi/article/details/20068781
多谢合作!
如果您在阅读文章过程中发现有表述错误的地方,还请指正。
上一节我们讲到,分类器的设计有两种思路:基于判别函数的分类器和基于距离的分类器。本节我们开始介绍基于判别函数的分类器中的线性判别函数法。
判别函数法是对不同模式进行分类有很多方法中应用比较广的一种。
所谓判别函数就是指直接用来对模式样本进行分类的准则函数。
如果判别函数可以用线性关系进行描述的话,就称之为线性判别函数,否则称为非线性判别函数。
上图给了我们一个直观的理解,第一个图中的蓝色直线代表一个线性分类器,而第二个图中的绿色曲线代表一个非线性分类器。
下面我们给出线性判别函数的数学形式。
d 维空间中的线性判别函数的一般形式:
这里我们用加粗的字符表示向量(未加特殊说明情况下向量均指的是列向量), 是样本向量,
是权值向量。
是一个常数(阈值),即
有时候,为了便于程序实现,也将公式(1)表示为
这里
对于两类问题而言,有
其中 表示第
类。若出现
则认为判别函数失效,拒绝分类。不难看出,由上面的
确定的决策面为超平面,而
是该决策面的法向量。
对这类分类器的学习过程可以表述如下:
- 获取训练样本集, 即一组具有类别标志的样本集;
- 确定一个准则函数
:
的值反映分类器的性能,它的极值解则对应于最好的分类决策,例如
为分类误差;
- 最优化方法求出准则函数的极值解
;
- 对未知样本y, 只要计算
,然后根据决策规则判定
所属类别。
上述过程可以用流程图表示如下:
线性判别函数的优点是简单,但是它不能用来处理一些稍微复杂点的问题,比如,下面这种情况。
设计一个一维分类器,使其功能为 (假设 a < b):
- 当 x < a 或者 x > b 时,则决策 x 属于第一类;
- 当 a < x < b 时,则决策 x 属于第二类。
显然,如果判别函数取为 给 g(x) = (x - a)(x - b) 可以满足要求,但这时 g(x) 却并非关于 x 的线性函数,关于线性函数的优化方法将不能直接应用在这个函数上。这时,我们该怎么办呢?
答案是使 g(x) 线性化。那么,怎么线性化呢?换元法相信大家都学过,这里用到的就是换元法,只不过我们换了个叫法——把换元后得到的新的判别函数称为广义线性判别函数,权向量称为广义权向量。具体过程如下:
和
这时,有
此时,判别函数变成了关于 的线性函数。学习过程就可以按前面介绍的方法进行了。
按照上述原理,任何非线性函数 g(x) 用级数展开成高次多项式后,都可转化成线性判别函数来处理,但是经过变换后维数大大增加了,这将导致计算量大大增加,甚至导致维数灾难。
由此可见,增加维数有时可能不是好办法,那么,降低维数呢?
这就引出了线性判别分析中一个非常重要的算法——Fisher 线性分析,我们将在下篇文章里进行介绍。