【模式识别与机器学习】——3.2广义线性判别函数

Posted on   Charlie_ODD  阅读(2500)  评论(0编辑  收藏  举报

 

出发点

  线性判别函数简单,容易实现; 非线性判别函数复杂,不容易实现; 若能将非线性判别函数转换为线性判别函数,则有利于模式分类的实现。

基本思想

  设有一个训练用的模式集{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) 广义线性判别实例

 

 

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
点击右上角即可分享
微信分享提示