Fisher判别准则
Fisher判别分析的思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、不同类样例的投影点尽可能远离。在对新样本进行分类时,将其投影到同样的这条直线上,再根据新样本投影点的位置来确定它的类别。
Fisher准则得到的结果是“次优”,而非“最优”。这与Fisher算法的“小样本问题”和“次优性问题”有关。

最优分界面的求解步骤
假设有n个样本X∈Rk×n及其标签y∈R1×n,Xi和yi分别代表第i个样本及其标签
由Fisher准则得到的分界面函数为:
g(x)=W⋅x+b=0,x∈Rk×1(1)
该最优分界面的目标函数为:
s.t.yi⋅(W⋅Xi+b)−1≥0f(W)=12(W⋅WT)(2)
用多元Lagrange函数求极值:
(只考虑约束条件中等号成立的情况,不成立的情况直接对目标函数求偏导得到的W=0无意义)
L(W,b,α)=12(W⋅W)−n∑i=1αi[yi(W⋅Xi+b)−1](3)
对L(W,b,α)的W和b分别求偏导:
⎧⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪⎩∂L∂W=W−n∑i=1αiyiXi=0∂L∂b=n∑i=1αiyi=0(4)
即
{W=(α⊙y)XTyαT=0where⊙isHadamardProduct(5)
将(4)回代到式(3)中,转化为参数α的优化问题:
(在得到不考虑α偏导的原函数极值L(α)后,再求L(α)关于α的极值,即部分极值后再求极值)
s.t.n∑i=1αiyi=0,αi≥0A(α)=L(W(α),b(α),α)=n∑i=1αi−12(n∑i=1αiyiXi)2=n∑i=1αi−12∑1≤i≤n1≤j≤nZijαiαj=n∑i=1αi−12n∑i=1Ziiα2i−∑1≤i<j≤nZijαiαjwhereZ=(XTX)⊙(yTy)(6)
对A(α)求偏导,同时考虑约束条件∑ni=1αiyi=0:
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩n∑i=1αiyi=0∂A(α)∂αi=1−n∑j=1Zijαj=0⋯(7)
即
[yZ]αT=⎛⎜
⎜
⎜
⎜
⎜
⎜⎝011⋯1⎞⎟
⎟
⎟
⎟
⎟
⎟⎠(8)
再确保约束条件αi≥0和yαT=0的情况下,找到剩下矛盾的等式拆成不同的等式联立,尝试求解α
(通常有多种联立方式,而每种联立方式又有多个解,找到其中一种满足约束条件的α解即可)
将α,X,y代回到式(5)中,解出^W
找出α中所有大于0的αp及其对应样本Xp和标签yp,并保证标签不重复(随机去除重复的)
从支持向量的约束条件yi⋅(W⋅Xi+b)−1=0有
^bp=y−1p−^WXp,yi≠0^b=1PP∑p=1^bpwherePisthenumberofallthe^bp(9)
最后得到最优分界面^g(x)=^W⋅x+^b=0,x∈Rk×1
小结
计算顺序:Z→α→^W→^b
Z=(XTX)⊙(yTy)[yZ]αT=⎛⎜
⎜
⎜
⎜
⎜
⎜⎝011⋯1⎞⎟
⎟
⎟
⎟
⎟
⎟⎠^W=(α⊙y)XT^b=1PP∑p=1(1yp−^WXp)
例题
X=(01200002),y=(1,1,−1,−1)令Q=(01−20000−2),则Z=QTQ=⎛⎜
⎜
⎜⎝000001−200−2400004⎞⎟
⎟
⎟⎠[y0Z1]=⎛⎜
⎜
⎜
⎜
⎜
⎜⎝11−1−100000101−2010−240100041⎞⎟
⎟
⎟
⎟
⎟
⎟⎠去掉无法操作的行(这里是第二行),确保约束条件(第一行)然后拆开线性相关部分(第三、四行)(PS:这里的线性相关部分从X入手比较快,此外解方程时可以考虑待定最右列的值)⎛⎜⎝11−1−1001−20100041⎞⎟⎠,⎛⎜⎝11−1−100−240100041⎞⎟⎠指定α1=0则,又由于约束条件αi≥0,所以只有第二个拆开的部分满足要求,并解得α=(0,1,34,14)^W=(α⊙y)XT=((0,1,34,14)⊙(1,1,−1,−1))XT=(0,1,−34,−14)⎛⎜
⎜
⎜⎝00102002⎞⎟
⎟
⎟⎠=(−12,−12)选取α2和α3所代表的样本,则^b=1PP∑p=1(1yp−^WXp)=12(1y2−^WX2+1y3−^WX3)=12(1−(−12)+(−1)−(−1))=34因此,^g(x)为:^W⋅x+^b=0(−12,−12)x+34=02x1+2x2−3=0
练手:
X=(0102000102),y=(1,1,1,−1,−1),3x1+3x2−4=0X=(00300103),y=(1,1,−1,−1),x1+x2−2=0X=⎛⎜⎝011000000011001101⎞⎟⎠,y=(1,1,1,−1,−1,−1),2x2−2x6+1=0
参考文献
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律