线性判别函数简单,容易实现; 非线性判别函数复杂,不容易实现; 若能将非线性判别函数转换为线性判别函数,则有利于模式分类的实现。
基本思想
设有一个训练用的模式集{x},在模式空间x中线性不可分,但在模式空间x*中线性可分,其中x*的各个分量是x的单值实函数,x*的维数k高于x的维数n,即若取 x* = (f1(x), f2(x), …., fk(x)), k>n 则分类界面在x*中是线性的,在x中是非线性的,此时只要将模式x进行非线性变换,使之变换后得到维数更高的模式x*,就可以用线性判别函数来进行分类。
广义线性判别函数的描述
一个非线性判别函数可如下表示:
其中{fi(x), i = 1,2,…,k}是模式x的单值实函数。若定义成广义形式:
x* = (f1(x), f2(x), …, fk(x), 1)T
此时有:
d(x*) = wTx*,其中w = (w1, w2, …, wk, wk+1)T
该式表明,非线性判别函数已被变换成广义线性,因此只讨论线性判别函数不会失去一般性意义。
线性判别函数
(1)取fi(x)为一次函数
例如xi,则变换后的模式x*=x,x*的维数k为x的维数n,此时广义线性化后的判别式仍为:d(x) = wTx + wn+1
(2)fi(x)选用二次多项式函数
1.x是二维的情况,即x =(x1 x2)T。若原判别函数为:
要线性化为d(x*) = wTx*,须定义:
此时,只要把模式空间x*中的分量定义成x的单值实函数,x*即变成线性可分。此时x*的维数(这里为6)大于x的维数(这里为2)。
2.x是n维的情况,此时原判别函数设为:
式中各项的组成应包含x的各个分量的二次项、一次项和常数项,其中平方项n个,二次项n(n-1)/2个,一次项n个,常数项一个
其总项数为:n + n(n-1)/2 + n + 1 = (n+1)(n+2)/2 > n
显然,对于d(x*) = wTx*,x*的维数大于x的维数,w分量的数目也与x*的维数相应。x*的各分量的一般化形式为:
(3)fi(x)选用r次多项式函数, x是n维的情况
1.定义描述
【例如】
2.总项数讨论
【说明】
d(x)的项数随r和n的增加会迅速增大,即使原来模式x的维数不高,若采用次数r较高的多项式来变换,也会使变换后的模式x*的维数很高,给分类带来很大困难。
实际情况可只取r=2,或只选多项式的一部分,例如r=2时只取二次项,略去一次项,以减少x*的维数。
(4) 广义线性判别实例
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【模式识别与机器学习】——3.2广义线性判别函数 - Python技术站