首页 > 其他分享 >线性判别分析(LDA)模型笔记

线性判别分析(LDA)模型笔记

时间:2023-08-09 17:55:23浏览次数:43  
标签:ww LDA frac 判别分析 笔记 TS mu bw Sigma

目录

模型概况

线性判别方法(Linear Discrimination Analysis)是一种经典的线性学些方法,最早由Fisher提出,也叫“Fisher判别分析”。

LDA的思想非常朴素,也即是,将样例投影到一条直线上使得同类样例的投影点尽可能近,异类样例的投影点尽可能远,总结六个字就是类内小,类间大;在对新的样本进行分类时候,将其投影到同样的这条直线上,再根据投影点的位置来判断样本点的类别。LDA也是一种降维方法。
类间大,类内小

模型定义

给定数据集\(D=\{(x_i,y_i)_{i=1}^m,y_i\in \{0,1\}\}\),\(X_i\)、\(\mu_i\)、\(\Sigma_i\)分别表示第\(i\in\{0,1\}\)类示例的集合、均值向量、协方差矩阵,则将数据投影到直线\(w\)上,则两类样本的中心的投影分别为\(w^T\mu_0\)和\(w^T\mu_1\),协方差分别为\(w^T\Sigma_0w\)和\(w^T\Sigma_1w\)。由于将样本点投射到直线这一一维空间上,则\(w^T\mu_0\)、\(w^T\mu_1\)、\(w^T\Sigma_0w\)和\(w^T\Sigma_1w\)都是实数。

\[X_i=\{x_i|y_i=i\} \]

\[\mu_i=\frac{1}{N_i}\sum_{j=1}^{N_i}x_j \]

\[\Sigma_i=\frac{1}{N_i}\sum_{j=1}^{N_i}(x_j-\bar{x})(x_j-\bar{x})^T \]

模型求解

为了使得同类样例的投影点尽可能接近,同类样例投影点协方差要尽量小,也即是\(w^T\Sigma_0w+w^T\Sigma_1w\)尽可能小;而为了异类样例投影点尽可能远离,类的中心的距离要尽量大。也即是说\((w^T\mu_0-w^T\mu_1)^2\)尽可能大。

则可以定义需要最大化的目标函数为

\[J = \frac{(w^T\mu_0-w^T\mu_1)^2}{w^T\Sigma_0w+w^T\Sigma_1w}\\ =\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w} \]

定义类内散度矩阵(within-class scatter matrix)

\[S_w=\Sigma_0+\Sigma_1 \]

以及类间散度矩阵(between-class scatter matrix)

\[S_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^T \]

则\(J\)可以重写为

\[J=\frac{w^TS_bw}{w^TS_ww} \]

这也就是LDA需要最大化的目标函数,也即是\(S_b\)与\(S_w\)的广义瑞利商(generalized Rayleigh quotient)。

接下来只需要根据目标函数对\(w\)进行求导

\[\begin{aligned} \frac{dJ}{dw}=2S_bw(w^TS_ww)^{-1}-w^TS_bw(w^TS_ww)^{-2}2S_ww=0\\ S_bw(w^TS_ww)=(w^TS_bw)S_ww \end{aligned} \]

其中,\(w^TS_ww\)与\(w^TS_bw\)实际上都是实数,则式子变为

\[\begin{aligned} w &= \frac{w^TS_bw}{w^TS_ww}S_w^{-1}S_bw\\ &=\frac{w^TS_bw}{w^TS_ww}S_w^{-1}(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw \end{aligned} \]

其中\((\mu_0-\mu_1)^Tw\)也是一个实数,由于我们求\(w\)只需要考虑其方向而不需要考虑其长度,故\(\frac{w^TS_bw}{w^TS_ww}\)与\((\mu_0-\mu_1)^Tw\)都可以忽略,则式子变为

\[w=S_w^{-1}(\mu_0-\mu_1) \]

至此,我们求出了所要求的解。

标签:ww,LDA,frac,判别分析,笔记,TS,mu,bw,Sigma
From: https://www.cnblogs.com/longwm/p/17617554.html

相关文章

  • avue-crud属性配置项参数笔记分享
     Avue是一个基于Element-plus低代码前端框架,它使用JSON配置来生成页面,可以减少页面开发工作量,极大提升效率;虽然Avue官网上面都有这些配置说明,但是如果刚开始接触不熟悉框架的话需要很久才找到自己需要的参数配置,为了方便自己今后查找使用,现将一些开发中常用的配置梳理在下......
  • Rocky9 编译安装 Nginx Mariadb Asp.net Core6 (实测 笔记)
    引用 https://www.cnblogs.com/vicowong/p/16974219.html一、查看硬件信息1、查看物理cpu个数、核心数量、线程数grep'physicalid'/proc/cpuinfo|sort-u|wc-lgrep'coreid'/proc/cpuinfo|sort-u|wc-lgrep'processor'/proc/cpuinfo|sort-u|wc......
  • python正则表达式笔记1
    最近工作中经常用到正则表达式处理数据,慢慢发现了正则表达式的强大功能,尤其在数据处理工作中,记录下来分享给大家。一、正则表达式语法介绍正则表达式(或RE)指定了一组与之匹配的字符串;模块内的函数可以检查某个字符串是否与给定的正则表达式匹配(或者正则表达式是否匹配到字符串,......
  • Element-Plus 学习笔记一
    这几天在学vue3,用Element-plus加vue3搭了个框架,在这里记录一下项目搭建中遇到的问题。 1、使用Element-plus的icon图标,显示不出来  首先,用命令行中安装 Element-plus的图标:npminstall@element-plus/icons-vue--save  然后,在main.js中进行全局......
  • java笔记_12_自定义注解
    1、@interface用于声明注解,参数只用八种基本数据类型和四种数据类型(基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations),如果只有一个参数成员,最好把参数名称设为"value"2、@Target说明了Annotation所修饰的对象范围,......
  • Visual Studio 2022 使用笔记
    注释本人习惯用Ctrl+/进行注释,工具-选项-键盘,应用以下其他键盘映射方案,选择最后一个VisualStudioCode现在鼠标定位到需要注释的行,改行任何位置都可以,Ctrl+/完成行注释,再按一次取消注释。多行注释,鼠标选中要注释的几行,Ctrl+/完成注释。如果从行首开始选择,每行都是//注释,如果......
  • 关于菜鸡学习RHEL8的一些小笔记--->防火墙
    #如果说SELINUX是对内管控应用程序的安全,那么防火主要是对外进行管理防火墙:Linux的内核中包含了netfilter,netfilter主要是对流量操作的一个框架,其中包括数据包的过滤,网络地址转换和端口转发等;在rhel8中内核还包含nftables,这是一个较新的数据包分类和过滤的子系统,在netfilter的......
  • 状态码笔记
    409错误是什么HTTP409错误状态码表示冲突(Conflict)。当服务器在处理请求时发现了冲突,而无法解决这个冲突时,就会返回409错误。这种情况通常发生在多个请求尝试更新相同资源的情况下,而这些请求之间存在不一致或冲突。例如,假设有两个请求同时尝试更新同一个资源的不同部分,但是它......
  • JAVASE学习笔记
    JavaSE基础知识1、Java应用与特性jdk8常用jdk11常用jdk17推荐使用java之父高斯林1、常用的java程序分为JavaSE、JavaEE、JavaME三个版本2、J2SE:定位在服务端的开发(WEB网页)3、JavaME:定位在消费行电子产品的应用上。特性和优势:1、面向对象2、可移植性3、高性能4、......
  • 《CUDA编程:基础与实践》读书笔记(2):CUDA内存
    1.全局内存核函数中的所有线程都能够访问全局内存(globalmemory)。全局内存的容量是所有设备内存中最大的,但由于它没有放在GPU芯片内部,因此具有相对较高的延迟和较低的访问速度,cudaMalloc分配的就是全局内存。此外,当处理逻辑上的二维或者三维问题时,还可以使用cudaMallocPitch和......