今天读paper遇到了Fisher线性判别的变体, 所以来学习一下, 所以到时候一定要把PRMl刷一遍呀

以下两篇论文一起阅读比较好:
论文1: https://blog.csdn.net/Rainbow0210/article/details/52892805

在前文《贝叶斯决策理论》中已经提到,很多情况下,准确地估计概率密度模型并非易事,在特征空间维数较高和样本数量较少的情况下尤为如此。
实际上,模式识别的目的是在特征空间中设法找到两类(或多类)的分类面,估计概率密度函数并不是我们的目的。
前文已经提到,正态分布情况下,贝叶斯决策的最优分类面是线性的或者是二次函数形式的,本文则着重讨论线性情况下的一类判别准则——Fisher判别准则。

为了避免陷入复杂的概率的计算,我们直接估计判别函数式中的参数(因为我们已经知道判别函数式是线性的)。

首先我们来回顾一下线性判别函数的基本概念:






第二篇: https://blog.csdn.net/qq_18870127/article/details/79097735

应用统计方法解决模式识别问题时,一再碰到的问题之一就是维数问题。在低维空间里解析上或计算上行得通的方法,在高维空间里往往行不通。因此,降低维数有时就会成为处理实际问题的关键。

问题描述:如何根据实际情况找到一条最好的、最易于分类的投影线,这就是Fisher判别方法所要解决的基本问题。

考虑把d维空间的样本投影到一条直线上,形成一维空间,即把维数压缩到一维。然而,即使样本在d维空间里形成若干紧凑的互相分得开的集群,当把它们投影到一条直线上时,也可能会是几类样本混在一起而变得无法识别。但是,在一般情况下,总可以找到某个方向,使在这个方向的直线上,样本的投影能分得开。下图可能会更加直观一点:

从d维空间到一维空间的一般数学变换方法:假设有一集合Г包含N个d维样本x1, x2, …, xN,其中N1个属于ω1类的样本记为子集Г1, N2个属于ω2类的样本记为子集Г2 。若对xn的分量做线性组合可得标量:
yn = wTxn, n=1,2,…,N

这样便得到N个一维样本yn组成的集合,并可分为两个子集Г1’和Г2’ 。

实际上,w的值是无关紧要的,它仅是yn乘上一个比例因子,重要的是选择w的方向。w的方向不同,将使样本投影后的可分离程度不同,从而直接影响的分类效果。因此,上述寻找最佳投影方向的问题,在数学上就是寻找最好的变换向量w*的问题。

Fisher准则函数的定义
几个必要的基本参量:

1.
在d维X空间

(1)各类样本的均值向量mi

 

(2)样本类内离散度矩阵Si和总样本类内离散度矩阵Sw

 

其中Sw是对称半正定矩阵,而且当N>d时通常是非奇异的。(半正定矩阵:特征值都不小于零的实对称矩阵;非奇异矩阵:矩阵的行列式不为零)

(3)样本类间离散度矩阵Sb 

 

Sb是对称半正定矩阵。

2. 在一维Y空间

(1)各类样本的均值 

 

(2)样本类内离散度 和总样本类内离散度 

 

我们希望投影后,在一维Y空间中各类样本尽可能分得开些,即希望两类均值之差越大越好,同时希望各类样本内部尽量密集,即希望类内离散度越小越好。
Fisher准则函数定义

其中,是两类均值之差,是样本类内离散度。显然,应该使JF(w)的分子尽可能大而分母尽可能小,即应寻找使JF(w)尽可能大的w作为投影方向。但上式中并不显含w,因此须设法将JF(w)变成w的显函数。

由各类样本的均值可推出:

 

这样,Fisher准则函数JF(w)的分子可写成:

 

现在再来考察JF(w)的分母与w的关系:

 

因此,

 

将上述各式代入JF(w),可得:

 

其中Sb为样本类间离散度矩阵,Sw为总样本类内离散度矩阵。


最佳变换向量w的求取


为求使取极大值时的w,可以采用Lagrange乘数法求解。令分母等于非零常数,即:

 

定义Lagrange函数为:

 

其中λ为Lagrange乘子。将上式对w求偏导数,可得:

 

令偏导数为零,有;

 


 

其中w就是JF(w)的极值解。因为Sw非奇异,将上式两边左乘,可得:

 

上式为求一般矩阵的特征值问题。利用的定义,将上式左边的写成:

 

其中为一标量,所以总是在向量的方向上。因此λw可写成:

 

从而可得:

 

由于我们的目的是寻找最佳的投影方向,w的比例因子对此并无影响,因此可忽略比例因子R/λ,有:

 

w是使Fisher准则函数JF(w)取极大值时的解,也就是d维X空间到一维Y空间的最佳投影方向。有了w,就可以把d维样本x投影到一维,这实际上是多维空间到一维空间的一种映射,这个一维空间的方向w相对于Fisher准则函数JF(w)是最好的。利用Fisher准则,就可以将d维分类问题转化为一维分类问题,然后,只要确定一个阈值T,将投影点yn与T相比较,即可进行分类判别。

【线性判别】Fisher线性判别(转)的更多相关文章

  1. 线性判别函数-Fisher 线性判别

    这是我在上模式识别课程时的内容,也有参考这里. 线性判别函数的基本概念 判别函数为线性的情况的一般表达式 式中x是d 维特征向量,又称样本向量, 称为权向量, 分别表示为 是个常数,称为阈值权. 设样 ...

  2. PRML读书会第四章 Linear Models for Classification(贝叶斯marginalization、Fisher线性判别、感知机、概率生成和判别模型、逻辑回归)

    主讲人 planktonli planktonli(1027753147) 19:52:28 现在我们就开始讲第四章,第四章的内容是关于 线性分类模型,主要内容有四点:1) Fisher准则的分类,以 ...

  3. Fisher线性判别分析

    Fisher线性判别分析 1.概述 在使用统计方法处理模式识别问题时,往往是在低维空间展开研究,然而实际中数据往往是高维的,基于统计的方法往往很难求解,因此降维成了解决问题的突破口. 假设数据存在于d ...

  4. PS图层混合算法之二(线性加深,线性减淡,变亮,变暗)

    线性加深模式: 查看每个通道的颜色信息,通过降低"亮度"使底色的颜色变暗来反映绘图色,和白色混合没变化. Linear Burn 线形加深 C=A+B-1 如果上下层的像素值之和小 ...

  5. 机器学习理论基础学习3.2--- Linear classification 线性分类之线性判别分析(LDA)

    在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),是一种处理文档的主题 ...

  6. fisher线性判别

    fisher 判决方式是监督学习,在新样本加入之前,已经有了原样本. 原样本是训练集,训练的目的是要分类,也就是要找到分类线.一刀砍成两半! 当样本集确定的时候,分类的关键就在于如何砍下这一刀! 若以 ...

  7. Fisher 线性判别

    Multiplying both sides of this result by wT and adding w0, and making use of y(x)=wTx+w0 and  y(xΓ)= ...

  8. 数据结构C语言实现系列——线性表(线性表链接存储(单链表))

    #include <stdio.h>#include <stdlib.h>#define NN 12#define MM 20typedef int elemType ;/** ...

  9. 线性表&顺序线性表

    第二章 线性表 参考文献:[数据结构(C语言版)].严蔚敏 本篇章仅为个人学习数据结构的笔记,不做任何用途. 2.1 线性结构的特点 (1). 存在唯一的一个被称为"第一个"的数据 ...

随机推荐

  1. ctf百度杯十二月场what_the_fuck(一口盐汽水提供的答案)

    目录 漏洞利用原理 具体利用步骤 漏洞利用原理 read(, &s, 0x20uLL); if ( strstr(&s, "%p") || strstr(& ...

  2. Flask之基本使用与配置

    简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理 ...

  3. 日期格式私人定制——SimpleDateFormat

    [前言] 最近项目需要特殊的日期格式,又恰好是String类型的,以前都没怎么用到SimpleDateFormat这个类去格式化日期,脑子里蹦出来的思路就是先把Date给toString了,然后慢慢切 ...

  4. C#线程池ThreadPool

    线程池可以看做容纳线程的容器: 一个应用程序最多只能有一个线程池: 设置线程数量ThreadPool.SetMaxThreads(initDownCardThreadPool, maxDownCard ...

  5. windows server 2008 r2 IIS 6 元数据库与IIS 6 配置的兼容性 解决方案

    1 菜单-管理工具-服务器管理 2 添加角色服务 3 选中 IIS6 管理兼容性 4 安装完成 5 在IIS上新建一个相应端口的网站 6重新加载项目,OK

  6. 012-HQL中级2-Hive如何执行文件中的sql语句

    Hive可以运行保存在文件里面的一条或多条的语句,只要用-f参数,一般情况下,保存这些Hive查询语句的文件通常用.q或者.hql后缀名,但是这不是必须的,你也可以保存你想要的后缀名.假设test文件 ...

  7. BDC批量修改物料描述

    一.定义变量 type-POOLs:TRUXS,slis. TYPES: BEGIN OF ty_input , matnr TYPE mara-matnr , " 物料号 maktx TY ...

  8. python全栈开发从入门到放弃之异常处理

    1.try except num = input('num : ') #try在阶段中处理异常 try: f = open('file', 'w') int(num) except ValueErro ...

  9. MyBatis For .NET学习-问题总结

    1. MyBatis在进行sqlserver与c# 类型转换时需要注意,sqlserver中dbtype为float时,c#需要使用double与之对应,而不能使用float或decimal 2. M ...

  10. CCF 炉石传说(模拟)

    试题编号: 201612-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述 <炉石传说:魔兽英雄传>(Hearthstone: Heroes of Wa ...