线性和二次判别分析

news2024/11/23 8:24:59

线性判别分析

线性判别分析(Linear Discriminant Analysis,LDA)亦称 Fisher 判别分析。其基本思想是:将训练样本投影到低维超平面上,使得同类的样例尽可能近,不同类的样例尽可能远。在对新样本进行分类时,将其投影到同样的超平面上,再根据投影点的位置来确定新样本的类别。

给定的数据集
D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } D=\{(\mathbf x_1,y_1),(\mathbf x_2,y_2),\cdots,(\mathbf x_N,y_N)\} D={(x1,y1),(x2,y2),,(xN,yN)}
包含 N N N 个样本, p p p 个特征。其中,第 i i i 个样本的特征向量为 x i = ( x i 1 , x i 2 , ⋯   , x i p ) T \mathbf x_i=(x_{i1},x_{i2},\cdots,x_{ip})^T xi=(xi1,xi2,,xip)T 。目标变量 y i ∈ { c 1 , c 2 , ⋯   , c K } y_i\in \{c_1,c_2,\cdots,c_K\} yi{c1,c2,,cK}

二分类

我们先定义 N k N_k Nk为第 k k k 类样本的个数
∑ k = 1 K N k = N \sum_{k=1}^KN_k=N k=1KNk=N
X k \mathcal X_k Xk为第 k k k 类样本的特征集合
X k = { x ∣ y = c k ,   ( x , y ) ∈ D } \mathcal X_k=\{\mathbf x | y=c_k,\ (\mathbf x,y)\in D \} Xk={xy=ck, (x,y)D}

μ k \mu_k μk为第 k k k 类样本均值向量
μ k = 1 N k ∑ x ∈ X k x \mu_k=\frac{1}{N_k}\sum_{\mathbf x\in \mathcal X_k}\mathbf x μk=Nk1xXkx

Σ k \Sigma_k Σk为第 k k k 类样本协方差矩阵
Σ k = 1 N k ∑ x ∈ X k ( x − μ k ) ( x − μ k ) T \Sigma_k=\frac{1}{N_k}\sum_{\mathbf x\in \mathcal X_k}(\mathbf x-\mu_k)(\mathbf x-\mu_k)^T Σk=Nk1xXk(xμk)(xμk)T

首先从比较简单的二分类为例 y ∈ { 0 , 1 } y\in \{0,1\} y{0,1},若将数据投影到直线 w \mathbf w w 上,则对任意一点 x \mathbf x x,它在直线 w \mathbf w w 的投影为 w T x \mathbf w^T\mathbf x wTx 1

  • LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是要最大化 ∥ w T μ 0 − w T μ 1 ∥ 2 2 \|\mathbf w^T\mu_0 -\mathbf w^T\mu_1\|_2^2 wTμ0wTμ122
  • 同时希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的方差最小化 w T Σ 0 w + w T Σ 1 w \mathbf w^T\Sigma_0\mathbf w+\mathbf w^T\Sigma_1\mathbf w wTΣ0w+wTΣ1w

综上所述,我们的优化目标为:
max ⁡ w ∥ w T μ 0 − w T μ 1 ∥ 2 2 w T Σ 0 w + w T Σ 1 w \max_{\mathbf w}\frac{\|\mathbf w^T\mu_0 -\mathbf w^T\mu_1\|_2^2}{\mathbf w^T\Sigma_0\mathbf w+\mathbf w^T\Sigma_1\mathbf w} wmaxwTΣ0w+wTΣ1wwTμ0wTμ122

目标函数
J ( w ) = ∥ w T μ 0 − w T μ 1 ∥ 2 2 w T Σ 0 w + w T Σ 1 w = w T ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T w T w T ( Σ 0 + Σ 1 ) w \begin{aligned} J(\mathbf w)&=\frac{\|\mathbf w^T\mu_0 -\mathbf w^T\mu_1\|_2^2}{\mathbf w^T\Sigma_0\mathbf w+\mathbf w^T\Sigma_1\mathbf w} \\ &=\frac{\mathbf w^T(\mu_0 -\mu_1)(\mu_0 -\mu_1)^T\mathbf w^T}{\mathbf w^T(\Sigma_0+\Sigma_1)\mathbf w } \end{aligned} J(w)=wTΣ0w+wTΣ1wwTμ0wTμ122=wT(Σ0+Σ1)wwT(μ0μ1)(μ0μ1)TwT

其中, S w S_w Sw为类内散度矩阵(within-class scatter matrix)
S w = Σ 0 + Σ 1 S_w=\Sigma_0+\Sigma_1 Sw=Σ0+Σ1

S b S_b Sb为类间散度矩阵(between-class scaltter matrix)

S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0μ1)(μ0μ1)T

目标函数重写为
J ( w ) = w T S b w w T S w w J(\mathbf w)=\frac{\mathbf w^TS_b\mathbf w}{\mathbf w^TS_w\mathbf w} J(w)=wTSwwwTSbw
上式就是广义瑞利商。要取得最大值,只需对目标函数求导并等于0,可得到等式
S b w ( w T S w w ) = S w w ( w T S b w ) S_b\mathbf w(\mathbf w^TS_w\mathbf w)=S_w\mathbf w(\mathbf w^TS_b\mathbf w) Sbw(wTSww)=Sww(wTSbw)

重新代入目标函数可知
S w − 1 S b w = λ w S_w^{-1}S_b\mathbf w=\lambda\mathbf w Sw1Sbw=λw
这是一个特征值分解问题,我们目标函数的最大化就对应了矩阵 S w − 1 S b S_w^{-1}S_b Sw1Sb 的最大特征值,而投影方向就是这个特征值对应的特征向量。

多分类

可以将 LDA 推广到多分类任务中,目标变量 y i ∈ { c 1 , c 2 , ⋯   , c K } y_i\in \{c_1,c_2,\cdots,c_K\} yi{c1,c2,,cK}

定义类内散度矩阵(within-class scatter matrix)
S w = ∑ k = 1 K Σ k S_w=\sum_{k=1}^K\Sigma_k Sw=k=1KΣk

类间散度矩阵(between-class scaltter matrix)

S b = ∑ k = 1 K N k ( μ k − μ ) ( μ k − μ ) T S_b=\sum_{k=1}^KN_k(\mu_k-\mu)(\mu_k-\mu)^T Sb=k=1KNk(μkμ)(μkμ)T

其中 μ \mu μ 为所有样本均值向量
μ = 1 N ∑ i = 1 N x \mu=\frac{1}{N}\sum_{i=1}^N\mathbf x μ=N1i=1Nx
常见的最大化目标函数为
J ( W ) = tr ( W T S b W ) tr ( W T S w W ) J(W)=\frac{\text{tr}(W^TS_bW)}{\text{tr}(W^TS_wW)} J(W)=tr(WTSwW)tr(WTSbW)
对目标函数求导并等于0,可得到等式
tr ( W T S w W ) S b W = tr ( W T S b W ) S w W \text{tr}(W^TS_wW)S_bW=\text{tr}(W^TS_bW)S_wW tr(WTSwW)SbW=tr(WTSbW)SwW
重新代入目标函数可知
S b W = λ S w W S_bW=\lambda S_wW SbW=λSwW
W W W 的闭式解则是 S w − 1 S b S_w^{-1}S_b Sw1Sb K 一 1 K 一 1 K1 个最大广义特征值所对应的特征向量组成的矩阵。

由于 W W W是一个利用了样本的类别得到的投影矩阵,则多分类 LDA 将样本投影到 K − 1 K-1 K1 维空间, K − 1 K-1 K1 通常远小子数据原有的特征数。于是,可通过这个投影来减小样本点的维数,且投影过程中使用了类别信息,因此 LDA也常被视为一种经典的监督降维技术。

二次判别分析

下面来介绍以概率的角度来实现线性判别分析的方法。我们的目的就是求在输入为 x \mathbf x x 的情况下分类为 c k c_k ck 的概率最大的分类:
y ^ = arg ⁡ max ⁡ c k P ( y = c k ∣ x ) \hat y=\arg\max_{c_k} \mathbb P(y=c_k|\mathbf x) y^=argckmaxP(y=ckx)
利用贝叶斯定理,类别 c k c_k ck 的条件概率为
P ( y = c k ∣ x ) = P ( x ∣ y = c k ) P ( y = c k ) P ( x ) \mathbb P(y=c_k|\mathbf x)=\frac{\mathbb P(\mathbf x|y=c_k)\mathbb P(y=c_k)}{\mathbb P(\mathbf x)} P(y=ckx)=P(x)P(xy=ck)P(y=ck)

假设我们的每个类别服从高斯分布
P ( x ∣ y = c k ) = 1 ( 2 π ) p det ⁡ Σ k exp ⁡ ( − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) ) \mathbb P(\mathbf x|y=c_k)=\frac{1}{\sqrt{(2\pi)^p\det\Sigma_k}}\exp\left(-\frac{1}{2}(\mathbf x-\mathbf\mu_k)^T\Sigma^{-1}_k(\mathbf x-\mathbf\mu_k)\right) P(xy=ck)=(2π)pdetΣk 1exp(21(xμk)TΣk1(xμk))

其中,协方差矩阵 Σ k \Sigma_k Σk 为对称阵。

决策边界:为方便计算,我们取对数条件概率进行比较。对任意两个类别 c s c_s cs c t c_t ct,取

δ ( x ) = ln ⁡ P ( y = c s ∣ x ) − ln ⁡ P ( y = c t ∣ x ) \delta(\mathbf x)=\ln\mathbb P(y=c_s|\mathbf x)-\ln\mathbb P(y=c_t|\mathbf x) δ(x)=lnP(y=csx)lnP(y=ctx)

输出比较结果

y ^ s t = { c s , if  δ ≤ 0 c t , otherwise \hat y_{st}=\begin{cases} c_s, &\text{if }\delta\leq0 \\ c_t, &\text{otherwise} \end{cases} y^st={cs,ct,if δ0otherwise

决策边界为 δ ( x ) = 0 \delta(\mathbf x)=0 δ(x)=0,即
ln ⁡ P ( y = c s ∣ x ) = ln ⁡ P ( y = c t ∣ x ) \ln\mathbb P(y=c_s|\mathbf x)=\ln\mathbb P(y=c_t|\mathbf x) lnP(y=csx)=lnP(y=ctx)

我们先来化简下对数概率
ln ⁡ P ( y = c k ∣ x ) = ln ⁡ P ( x ∣ y = c k ) + ln ⁡ P ( y = c k ) − ln ⁡ P ( x ) = − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) − 1 2 ln ⁡ ( det ⁡ Σ k − 1 ) + ln ⁡ P ( y = c k ) + const = − 1 2 x T Σ k − 1 x + μ k T Σ k − 1 x − 1 2 μ k T Σ k − 1 μ k + ln ⁡ P ( y = c k ) − 1 2 ln ⁡ ( det ⁡ Σ k − 1 ) + const = x T A k x + w k T x + b k + const \begin{aligned} \ln\mathbb P(y=c_k|\mathbf x)&=\ln\mathbb P(\mathbf x|y=c_k)+\ln\mathbb P(y=c_k)-\ln\mathbb P(\mathbf x) \\ &=-\frac{1}{2}(\mathbf x-\mathbf \mu_k)^T\Sigma^{-1}_k(\mathbf x-\mathbf \mu_k)-\frac{1}{2}\ln(\det\Sigma^{-1}_k) +\ln\mathbb P(y=c_k)+\text{const}\\ &=-\frac{1}{2}\mathbf x^T\Sigma^{-1}_k\mathbf x+\mathbf \mu_k^T\Sigma^{-1}_k\mathbf x-\frac{1}{2}\mu_k^T\Sigma^{-1}_k\mu_k+\ln\mathbb P(y=c_k)-\frac{1}{2}\ln(\det\Sigma^{-1}_k) +\text{const}\\ &=\mathbf x^TA_k\mathbf x+\mathbf w_k^T\mathbf x+b_k+\text{const} \end{aligned} lnP(y=ckx)=lnP(xy=ck)+lnP(y=ck)lnP(x)=21(xμk)TΣk1(xμk)21ln(detΣk1)+lnP(y=ck)+const=21xTΣk1x+μkTΣk1x21μkTΣk1μk+lnP(y=ck)21ln(detΣk1)+const=xTAkx+wkTx+bk+const

其中
A k = − 1 2 Σ k − 1 , w k T = μ k T Σ k − 1 , b k = − 1 2 μ k T Σ k − 1 μ k + ln ⁡ P ( y = c k ) − 1 2 ln ⁡ ( det ⁡ Σ k − 1 ) A_k=-\frac{1}{2}\Sigma^{-1}_k,\quad\mathbf w_k^T =\mu_k^T\Sigma^{-1}_k,\quad b_k =-\frac{1}{2}\mu_k^T\Sigma^{-1}_k\mu_k+\ln\mathbb P(y=c_k)-\frac{1}{2}\ln(\det\Sigma^{-1}_k) Ak=21Σk1,wkT=μkTΣk1,bk=21μkTΣk1μk+lnP(y=ck)21ln(detΣk1)

可以看到,上式是一个关于 x \mathbf x x 的二次函数

  • 当类别的协方差矩阵不同时,生成的决策边界也是二次型的,称为二次判别分析(Quadratic Discriminant Analysis, QDA)
  • 当类别的协方差矩阵相同时,决策边界将会消除二次项,变成关于 x \mathbf x x 的线性函数,于是得到了线性判别分析。

实际应用中我们不知道高斯分布的参数,我们需要用我们的训练数据去估计它们。LDA使用估计协方差矩阵的加权平均值作为公共协方差矩阵,其中权重是类别中的样本量:
Σ ^ = ∑ k = 1 K N k Σ k N \hat\Sigma=\frac{\sum_{k=1}^KN_k\Sigma_k}{N} Σ^=Nk=1KNkΣk

如果 LDA中的协方差矩阵是单位阵 Σ = I \Sigma=I Σ=I并且先验概率相等,则LDA只需对比与类中心的欧几里得距离
ln ⁡ P ( y = c k ∣ x ) ∝ − 1 2 ( x − μ k ) T ( x − μ k ) = − 1 2 ∥ x − μ k ∥ 2 2 \ln\mathbb P(y=c_k|\mathbf x)\propto -\frac{1}{2}(\mathbf x-\mathbf \mu_k)^T(\mathbf x-\mathbf \mu_k)=-\frac{1}{2}\|\mathbf x-\mathbf \mu_k\|_2^2 lnP(y=ckx)21(xμk)T(xμk)=21xμk22

如果 LDA中的协方差矩阵非单位阵并且先验概率相等,则为马氏距离
ln ⁡ P ( y = c k ∣ x ) ∝ − 1 2 ( x − μ k ) T Σ k − 1 ( x − μ k ) \ln\mathbb P(y=c_k|\mathbf x)\propto -\frac{1}{2}(\mathbf x-\mathbf \mu_k)^T\Sigma^{-1}_k(\mathbf x-\mathbf \mu_k) lnP(y=ckx)21(xμk)TΣk1(xμk)


  1. 超平面几何知识 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring+Vue项目部署

目录 一、需要的资源 二、步骤 1.首先要拥有一个服务器 2.项目准备 vue: 打包: 3.服务器装环境 文件上传 设置application.yml覆盖 添加启动和停止脚本 ​编辑 安装jdk1.8 安装nginx 安装mysql 报错:「ERR」1273-Unknown collation: utf8m…

ROS2中的CMakeLists(一)——基础知识

在使用ROS2框架开发机器人应用时,对各个功能包Cmakelist.txt文件的更改尤为重要。本系列旨在总头开始介绍Cmakelist.txt各条语句的意义和内涵。 Cmake已经是高度集成的构建工具,其作用是在不同开发环境下生成makefile文件,以此来执行make指令…

聊聊 System.Linq.Dynamic,以及分享一个使用 System.Linq.Dynamic 扩展 LINQ 查询的详细例子

前言:System.Linq.Dynamic 是什么? System.Linq.Dynamic 扩展了 .NET 中的 LINQ 查询功能,通过它,我们可以在运行时动态构造 LINQ 查询表达式,就像是写原生 SQL 语句一样,更加灵活直观。 利用 System.Lin…

FPGA学习笔记(5)——硬件调试与使用内置的集成逻辑分析仪(ILA)IP核

如果要对信号进行分析,可以使用外置的逻辑分析仪,但成本较高,对初学者来说没有必要,可以使用Xilinx Vivado内自带的逻辑分析仪IP核对信号进行分析,不过需要占用一定的芯片资源。 本节采用上一节配置的LED灯闪烁代码&a…

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制,本篇文章是要将各类NMS添加到yolov5中,同时…

2024最适合初学者人手一本的LLM大语言模型综述,爆火全网!(附PDF)

今天给大家推荐一本大模型(LLM)这块的一本外文书,经过整理已经出中文版了,就是这本《大型语言模型综述》!本书在git上有9.2k star,还是很不错的一本大模型方面的书。 本教程内容主要内容:中文版…

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC,即客户之声,是一种通过收集和分析客户反馈、需求和期望,来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下,VOC不仅能够帮助企业了解客户的真实需求,还能为企业提供宝贵的竞争情报,助力企业…

STL——常用算法(二)

一、常用拷贝和替换算法 1.copy #include <iostream> #include <vector> #include <algorithm> using namespace std; void printVector(int val) {cout << val << " "; } void test01() {vector<int>v1;for (int i 0; i <…

监控https证书的到期时间

实现该功能&#xff0c;不用借助第三方库&#xff0c;用go的标准库就足够了… 以下程序可以获取这些域名的SSL证书的到期时间&#xff0c;并在证书距离现在不足7天过期时打印提示&#xff1a; package mainimport ("crypto/tls""fmt""net""…

酒店强心剂——VR智慧酒店上线,史诗级加强入住率

出门在外&#xff0c;什么才是我们最为头疼的问题呢&#xff1f;衣食住行中&#xff0c;住的问题尤其大&#xff0c;尤其是不熟悉当地情况下&#xff0c;预定酒店才是让人头疼的问题。酒店行业该如何化解这一难题呢&#xff1f;VR全景开启智能化酒店宣传获客新模式&#xff0c;…

Hive笔记-6

6.2.8 聚合函数 1) 语法 count(*)&#xff0c;表示统计所有行数&#xff0c;包含null值&#xff1b; count(某列)&#xff0c;表示该列一共有多少行&#xff0c;不包含null值&#xff1b; max()&#xff0c;求最大值&#xff0c;不包含null&#xff0c;除非所有值都是null&a…

高考填报志愿攻略,5个步骤选专业和院校

在高考完毕出成绩的时候&#xff0c;很多人会陷入迷茫中&#xff0c;好像努力了这么多年&#xff0c;却不知道怎么规划好未来。怎么填报志愿合适&#xff1f;在填报志愿方面有几个内容需要弄清楚&#xff0c;按部就班就能找到方向&#xff0c;一起来了解一下正确的步骤吧。 第…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统&#xff1a; 3.在容器中安装mysql客户端&#xff1a; 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证&#xff1a;

福州代理记账服务财务专业知识会计助手

福州的代理记服务可探索企业和个体工商户处理财务和会计工作。选择合适的代理记服务不仅可以节省成本&#xff0c;还可以确保财务工作专业、合规。以下是一些关于代理记服务的关键信息和财务信息&#xff0c;供您参考&#xff1a; https://www.9733.cn/news/detail/180.html …

TensorFlow开源项目

欢迎来到 Papicatch的博客 文章目录 &#x1f349;TensorFlow介绍 &#x1f349;主要特点和功能 &#x1f348;多语言支持 &#x1f348;灵活的架构 &#x1f348;分布式训练 &#x1f348;跨平台部署 &#x1f348;强大的工具链 &#x1f348;丰富的社区和生态系统 &a…

缓冲池管理器

开发环境搭建 克隆 git clone https://github.com/cmu-db/bustub.git cd bustub/ 切换分支 git checkout -b branchname v20221128-2022fall 创建docker镜像 docker build . -t bustub_img 创建容器 docker create -it --name bustub_container -v “E:/cmu/bustub”:“/bustu…

JeecgFlow事件网关概念及案例

事件网关 通常网关基于连线条件决定后续路径&#xff0c;但事件网关有所不同&#xff0c;其基于事件决定后续路径。事件网关的每条外出顺序流都需要连接一个捕获中间事件。 事件网关只有分支行为&#xff0c;流程的走向完全由中间事件决定。可以从多条候选分支中选择事件最先达…

Core ML 简介:构建简单的图像识别应用程序

在 2017 年的 WWDC 上&#xff0c;苹果发布了许多令人兴奋的框架和 API 供我们开发人员使用。在所有新框架中&#xff0c;最受欢迎的框架之一肯定是Core ML。Core ML 是一个可用于将机器学习模型集成到您的应用程序中的框架。Core ML 最好的部分是您不需要有关神经网络或机器学…

计算机组成原理 | CPU子系统(2)指令系统

CISC和RISC指令集 指令的一般格式 四种结构 R型&#xff1a;寄存器型&#xff08;四地址&#xff09; I型&#xff1a;立即数型&#xff08;三地址&#xff09; J型&#xff1a;跳转型&#xff08;address以立即数的形式给出&#xff09; 格式规整&#xff0c;高六位都是操作…

昇思25天学习打卡营第01天|基本介绍

作为曾经的javaer&#xff0c;本着不断学习的初心&#xff0c;报名了昇思25天的课程&#xff0c;希望自己能学会点东西的目的。 昇思MindSpore介绍 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;…