关于判别分析的学习-距离判别法

距离判别法

距离判别法的基本思想是依据样品x和总体G的距离来判断样品所属的总体。 所以很显然的是我们需要首先定义一个距离函数,来表示样本和总体的距离。

其实很容易首先去想到利用欧式距离来表示d2(x,G)=(x−μ)′(x−μ)d^2(x,G)=(x-\mu)'(x-\mu)d2(x,G)=(x−μ)′(x−μ)
μ\muμ是G的均值向量。

但其实利用欧式距离存在一定的缺点,它将样品的不同属性之间的区别同等看待,存在着量纲问题,如果样品的变量测量值相差悬殊时(例如对汽车进行分类时,单个样品最高速度和安全指数),就需要首先标准化,来消除计量单位对结果的影响。

所以我们这里可以考虑使用马氏(Mahalanobis)距离。d2(x,G)=(x−μ)′∑−1(x−μ)d^2(x,G)=(x-\mu)'\sum\nolimits^{-1}(x-\mu)d2(x,G)=(x−μ)′∑−1(x−μ)∑\sum∑是协方差矩阵,∑=(σij)m∗m\sum=(\sigma_{ij})_{m*m}∑=(σij​)m∗m​

它是一种有效计算未知样本集相似度的一种方法。马氏距离的结果是将数据投影到N(0,1)区间并求其欧式距离,与标准化欧氏距离有区别的是它认为各个维度之间不是独立分布的,所以马氏距离考虑到各种属性之间的联系

两个总体的距离判别

假设有两个总体G1和G2,有一个新的样本X,判断它究竟属于哪个总体。判别原则是按照就近原则进行归类。判别规则如下
{X∈G1,如果d2(X,G1)<d2(X,G2)X∈G2,如果d2(X,G1)>d2(X,G2)待判,如果d2(X,G1)=d2(X,G2)\left \{\begin{array}{cc} X\in G_1, &如果d^2(X,G_1)<d^2(X,G_2)\\ X\in G_2, & 如果d^2(X,G_1)>d^2(X,G_2)\\ 待判,&如果d^2(X,G_1)=d^2(X,G_2) \end{array}\right.⎩⎨⎧​X∈G1​,X∈G2​,待判,​如果d2(X,G1​)<d2(X,G2​)如果d2(X,G1​)>d2(X,G2​)如果d2(X,G1​)=d2(X,G2​)​
计算中两个总体的μ\muμ和∑\sum∑真实值均未知,要根据训练样本集计算它们的极大似然估计。
特别的,假设出现两个总体的协方差矩阵相等,记∑1=∑2=∑\sum\nolimits_1=\sum\nolimits_2=\sum∑1​=∑2​=∑,对于马氏距离可以简化(注:协方差矩阵为对称矩阵)
d2(X,G)=(X−μ)′∑−1(X−μ)=X′∑−1X−2[(∑−1μ)′X−12μ′∑−1μ]d^2(X,G)=(X-\mu)'\sum\nolimits^{-1}(X-\mu) =X'\sum\nolimits^{-1}X-2[(\sum\nolimits^{-1}\mu)'X-\frac{1}{2}\mu'\sum\nolimits^{-1}\mu]d2(X,G)=(X−μ)′∑−1(X−μ)=X′∑−1X−2[(∑−1μ)′X−21​μ′∑−1μ]
所以
d2(X,G1)−d2(X,G2)=2(X−μ1+μ22)′∑−1(μ1−μ2)d^2(X,G_1)-d^2(X,G_2)=2(X-\frac{\mu_1+\mu_2}{2})'\sum\nolimits^{-1}(\mu_1-\mu_2)d2(X,G1​)−d2(X,G2​)=2(X−2μ1​+μ2​​)′∑−1(μ1​−μ2​)
令μˉ=μ1+μ22,α=∑−1(μ1−μ2)\bar{\mu}=\frac{\mu_1+\mu_2}{2},\alpha=\sum\nolimits^{-1}(\mu_1-\mu_2)μˉ​=2μ1​+μ2​​,α=∑−1(μ1​−μ2​)称为判别系数,从而线性判别函数简化为
W(X)=α′(X−μˉ)W(X)=\alpha'(X-\bar{\mu})W(X)=α′(X−μˉ​)
所以前面的判别规则可以改为
{X∈G1,如果W(X)>0X∈G2,如果W(X)<0待判,如果W(X)=0\left \{\begin{array}{cc} X\in G_1, &如果W(X)>0\\ X\in G_2, & 如果W(X)<0\\ 待判,&如果W(X)=0 \end{array}\right.⎩⎨⎧​X∈G1​,X∈G2​,待判,​如果W(X)>0如果W(X)<0如果W(X)=0​

多个总体的距离判别

多个总体任然遵循就近原则。设有k个总体,X是一个待判样本,它与总体的距离即为判别函数,
d2(X,Gi)=(X−μi)′∑−1(X−μi)=X′∑−1X−2X′∑−1μi+μi′∑−1μid^2(X,G_i)=(X-\mu_i)'\sum\nolimits^{-1}(X-\mu_i)=X'\sum\nolimits^{-1}X-2X'\sum\nolimits^{-1}\mu_i+\mu_i'\sum\nolimits^{-1}\mu_id2(X,Gi​)=(X−μi​)′∑−1(X−μi​)=X′∑−1X−2X′∑−1μi​+μi′​∑−1μi​
对应的判别规则为
Di={X:d2(X,Gi)=min⁡1≤j≤kd2(X,Gj)},i=1,2......,kD_i= \{ X:d^2(X,G_i)=\min_{1\leq j \leq k}d^2(X,G_j)\},i=1,2......,k Di​={X:d2(X,Gi​)=1≤j≤kmin​d2(X,Gj​)},i=1,2......,k
若X落在区域Di内,那么可以判断X∈GiX\in G_iX∈Gi​。
与两类总体类似一样可以去考虑∑1=∑2=....∑k\sum_1=\sum_2=....\sum_k∑1​=∑2​=....∑k​和∑i\sum_i∑i​各不相同的情况。

R的实现

了解相关函数
mahalanobis(x,center,cov,inverted=FALSE,…):计算马氏距离
x是样本数据的向量或者矩阵;
center是分布的均值
cov是分布的协方差矩阵,常使用样本值作为估计
inverted是逻辑值,若为FALSE,则cov应该包含协方差阵的逆。

WMDB包内wmd(TranX,TranG,Tweigh=NULL,TstX=NULL,var.equal=F)
可以实现加权马氏距离判别分析。

TranX是训练样品的矩阵或者数据框
TranG用于表示已知训练样本的分类(注:必须是一个因子向量)
Tweigh制定权重,是一个矩阵或者数据框,如果没有定义权重,将在主成分分析的基础上计算相应贡献度的百分比作为代替,当把所有的权重定义为等值时,就是传统的判别分析方法
TstX,待测数据的矩阵或者数据框,默认NULL为没有指定,可直接对训练样本进行判别分析
var.equal,指定总体是否用相等的协方差矩阵

例(随便编的数据)

因为数据是乱编的,结果比较迷,所以用来大概理解下过程就好

X1 X2 X3 类别
5 51 582 1
4 43 169 1
1 32 170 1
6 20 132 1
3 44 527 2
7 76 682 2
4 44 430 2
7 35 764 2
3 22 622 待测
>test <- read.csv("C:/Users/LENOVO/Desktop/test.csv", header=FALSE)
> mu<-colMeans(test)#对列求均值
> Sx=cov(test)#计算训练样本
> distance=mahalanobis(test,mu,Sx)
> options(digits = 2)#设置小数点格式
> library(WMDB)
> G=c(rep(1,4),rep(2,4))
> G=as.factor(G)
> wmd(test,G)1 2 3 4 5 6 7 8
blong 2 2 2 2 1 2 2 1
[1] "num of wrong judgement"
[1] 1 2 3 4 5 8
[1] "samples divided to"
[1] 2 2 2 2 1 1
[1] "samples actually belongs to"
[1] 1 1 1 1 2 2
Levels: 1 2
[1] "percent of right judgement"
[1] 0.25
> newdata<-c(3,22,622)
> wmd(test,G,TstX = newdata)

关于判别分析的学习-距离判别法相关推荐

  1. 判别分析(1)——距离判别法

    判别分析是多元统计分析的内容,其作用在分类确定的条件下,根据某一研究对象的各种特征的值来判断其归属于哪一类(即总体).实际上,这一类问题就是根据已有的样本数据与对应的类别,判断未知类别的数据属于哪一类 ...

  2. matlab求距离判别函数,马氏距离判别法matlab

    -2.7137 -3.9604 2.两个总体协方差矩阵不相等 在MATLAB中mahal 计算马氏距离平方 d = mahal(Y,X) 输入:Y是要判别的 样本点,通常是矩阵Ymn X是已知总体的. ...

  3. R语言马氏距离判别法

    没啥好解释的,就放个代码和运行结果吧 #数据准备 x1<-c(3,3,2,3,3,3,3,3,2,2,1,3,2,1,2,2,2,3,3,2,2,2,2,2) x2<-c(28,45,55 ...

  4. 【多元统计分析】13.直接判别法

    文章目录 十三.直接判别法 1.马氏距离 2.直接判别法的使用 回顾总结 十三.直接判别法 1.马氏距离 判别分析指的是将某个对象归类,即判别某个对象属于哪一类,在实际生活中,判别分析的适用范围十分宽 ...

  5. R语言应用实战-基于R语言的判别分析:fisher判别法,距离判别法以及Bayers判别法(附源代码)

    前言 判别分析(Discriminat Analysis)是多变量统计分析中用于判别样本所属类型的一种统计分析法.它所要解决的问题是在一些已知研究对象用某种方法已经分成若干类的情况下确定新的样本属于已 ...

  6. 机器学习(六)——高斯判别法(GDA)

    6.高斯判别法(GDA) 多元正态分布 p(x;μ,Σ)=1(2π)n/2∣Σ∣1/2exp(−12(x−μ)TΣ−1(x−μ))p(x;\mu,\Sigma)=\frac{1}{(2\pi)^{n/ ...

  7. 【多元统计分析】14.贝叶斯判别法

    文章目录 十四.贝叶斯判别法 1.贝叶斯判别的定义 2.贝叶斯判别的解 3.广义马氏距离 回顾总结 十四.贝叶斯判别法 1.贝叶斯判别的定义 贝叶斯判别的定义,是找到一个错判平均损失最小的判别准则,这 ...

  8. 解析函数论 Page 22 达朗贝尔判别法 VS 柯西判别法

    之所以柯西判别法比达朗贝尔判别法更普遍,是因为根据达朗贝尔判别法,只能得出$|w_{n+m}|\leq q^m |w_n|$,即$\sqrt[m]{|w_{n+m}|}\leq q\sqrt[m]{| ...

  9. 为什么绝对收敛级数具有可交换性+为什么一般项级数不能使用比较判别法/等价判别法?

    >绝对收敛,可以认为是级数某种"本质上"是收敛的,即其正项和负项的和分别是收敛的:而条件收敛,往往是正项负项的和不收敛,因为在级数中的排列导致互相抵消,所以"看起来 ...

最新文章

  1. java 运算符输入_java-运算符,IO输入输出,文件操作
  2. Making Your Own iPhone Frameworks. In Xcode
  3. A组包含的前导码数( sizeOfRA-PreamblesGroupA)
  4. xml文件格式例如以下
  5. python制作软件封面_用python给MP3加封面图片,修改作者,专辑等信息
  6. GS使用HTTPS登录的设置过程
  7. java 时间戳 星期几_java自定义获取星期几、几点、几分。
  8. 耦合层:撮合物联网的理论与实践牵手的“月老”
  9. Visual Studio 2017 15.9 Previews扩展C++调试功能
  10. linux操作系统期末考试试题及答案,Linux操作系统期末复习题(含答案).doc
  11. VHDL实验三:一位全加器、四选一多路选择器
  12. 矩阵论与计算机英语论文,矩阵论翻译论文.pdf
  13. 2021年度考核登记表
  14. unity使用Curvy随机选择路线
  15. java项目ppt介绍_Java课设项目介绍及分析.ppt
  16. c语言斐波那契数列_Day 7:斐波那契数列
  17. QT中编译错误:-1: error: skipping incompatible D:\
  18. K8S-四层负载均衡-Service解读
  19. 蓝桥杯第四届决赛 c++ B组 题目及个人题解 2013年
  20. win10 子系统之 Ubuntu,解放你的生产力

热门文章

  1. matlab用到两个工具箱有重复函数文件处理方法
  2. 两岸开源社群面面观(总结篇)
  3. 你永远不知道明天和意外哪个先到来
  4. 从诱发反应中解码动态脑模式:应用于时间序列神经成像数据的多元模式分析教程
  5. 这5个PHP编程中的不良习惯,一定要改掉!
  6. Oceanbase 扩容TPC-H测试
  7. MMGSDI启动流程
  8. linux下终端urvst,Linux中的静态库与动态库
  9. 百万前端之js通过链接生成二维码可以保存下载复制
  10. 【《关于我一个小学生用C++写了个抽奖游戏这件事》】