人工智能与机器学习——基于Fisher判别的线性分类

一、何为Fisher判别?

1. Fisher判别法原理介绍

Fisher判别法是判别分析的方法之一,它是借助于方差分析的思想,利用已知各总体抽取的样品的p维观察值构造一个或多个线性判别函数y=l′x其中l= (l1,l2…lp)′,x= (x1,x2,…,xp)′,使不同总体之间的离差(记为B)尽可能地大,而同一总体内的离差(记为E)尽可能地小来确定判别系数l=(l1,l2…lp)′。数学上证明判别系数l恰好是|B-λE|=0的特征根,记为λ1≥λ2≥…≥λr>0。所对应的特征向量记为l1,l2,…lr,则可写出多个相应的线性判别函数,在有些问题中,仅用一个λ1对应的特征向量l1所构成线性判别函数y1=l′1x不能很好区分各个总体时,可取λ2对应的特征向量l′2建立第二个线性判别函数y2=l′2x,如还不够,依此类推。有了判别函数,再人为规定一个分类原则(有加权法和不加权法等)就可对新样品x判别所属

2. Fisher线性判别基本思想

Fisher线性判别分析的基本思想:选择一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,同时变换后的一维数据满足每一类内部的样本尽可能聚集在一起,不同类的样本相隔尽可能地远。
线性判别函数的一般形式可表示成
在这里插入图片描述
其中
在这里插入图片描述
Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。

3. “群内离散度”与“群间离散度”

“群内离散度”要求的是距离越远越好;而“群间离散度”的距离越近越好。

“群内离散度”(样本类内离散矩阵)的计算公式为
在这里插入图片描述
因为每一个样本有多维数据,因此需要将每一维数据代入公式计算后最后在求和即可得到样本类内离散矩阵。存在多个样本,重复该计算公式即可算出每一个样本的类内离散矩阵。

“群间离散度”(总体类离散度矩阵)的计算公式为
在这里插入图片描述

二、python代码实现推导

#导入包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import seaborn as sns

#导入数据集
df = pd.read_csv("./iris.data", header=0)

Iris1=df.values[0:50,0:4]
Iris2=df.values[50:100,0:4]
Iris3=df.values[100:150,0:4]

#定义类均值向量
m1=np.mean(Iris1,axis=0)
m2=np.mean(Iris2,axis=0)
m3=np.mean(Iris3,axis=0)

#定义类内离散度矩阵
s1=np.zeros((4,4))
s2=np.zeros((4,4))
s3=np.zeros((4,4))
for i in range(0,30,1):
    a=Iris1[i,:]-m1
    a=np.array([a])
    b=a.T
    s1=s1+np.dot(b,a)    
for i in range(0,30,1):
    c=Iris2[i,:]-m2
    c=np.array([c])
    d=c.T
    s2=s2+np.dot(d,c) 
    #s2=s2+np.dot((Iris2[i,:]-m2).T,(Iris2[i,:]-m2))
for i in range(0,30,1):
    a=Iris3[i,:]-m3
    a=np.array([a])
    b=a.T
    s3=s3+np.dot(b,a)
    
#定义总类内离散矩阵
sw12 = s1 + s2;
sw13 = s1 + s3;
sw23 = s2 + s3;

#定义投影方向
a=np.array([m1-m2])
sw12=np.array(sw12,dtype='float')
sw13=np.array(sw13,dtype='float')
sw23=np.array(sw23,dtype='float')
#判别函数以及阈值T(即w0)
a=m1-m2
a=np.array([a])
a=a.T
b=m1-m3
b=np.array([b])
b=b.T
c
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
费雪线性判别是一种用于分类的统计方法,常用于模式识别与机器学习领域。它的主要思想是通过将数据投影到一个低维度的线性空间,使得不同类别的数据点在该空间中能够被有效地分离。费雪线性判别模型的目标是找到一个线性函数 f(x),将高维数据 x 映射到一个一维实数轴 y,使得样本点在 y 轴上的投影能够最大程度地分开不同的类别。 基于正态分布的线性判别分析(Linear Discriminant Analysis,LDA)是费雪线性判别的一种扩展,它假定观测数据服从正态分布,同时对不同类别的数据具有相同的协方差矩阵。在这种情况下,LDA 分析可以通过估计数据的概率密度来得到一组能够最大程度地区分不同类别的线性函数。LDA 对于含有多个类别的问题也可以进行扩展,例如多分类LDA(MLDA)。 具体来讲,费雪线性判别的工作过程包括如下几个步骤:首先,对于每个类别,估计其均值向量和协方差矩阵;然后,通过计算类别之间的 Fisher 距离值,得到最佳的线性判别函数;最后,将新的数据点投影到该函数上,即可进行分类。 需要提醒的是,费雪线性判别与其它分类算法一样,对数据分布的假设往往是非常关键的,如果数据的实际分布与假设的分布不同,就可能对分类效果产生影响。同时,在使用费雪线性判别进行分类时,还需要注意如何处理缺失值、异常值等常见的数据质量问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值