机器学习之LDA算法

news2024/11/25 0:43:36

目录

LDA算法

LDA目标

LDA原理推导

LDA除法模型

LDA减法模型

LDA除法正则模型

LDA减法正则模型

证明:St=Sw+Sb

LDA算法流程

LDA优点

LDA缺点

基于LDA的人脸识别


LDA算法

线性判别分析(linear discriminant analysis,LDA),是一种经典的线性学习方法,其原理是:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的直线上,再根据投影点的位置来确定新样本的类别。

LDA作为一种经典的机器学习算法,具有较好的降维效果和分类能力,同时对噪声具有一定的抗干扰能力。然而,LDA也有其局限性,适用于满足其假设条件的线性可分问题。在实际应用中,需要根据具体情况选择合适的算法和方法。

LDA目标

LDA的目标:最小化类内协方差,即让同类投影点尽可能的接近;最大化类间协方差,即让异类投影点尽可能远离。

LDA原理推导

二分类优化

多分类优化

 

LDA除法模型

LDA减法模型

LDA除法正则模型

LDA减法正则模型

证明:St=Sw+Sb

证明:

考虑多分类情况,二分类为多分类的一个特例。

即St=Sw+Sb。

LDA算法流程

下面将逐步介绍LDA步骤:

  1. 数据准备: 假设我们有N个样本,每个样本有d个特征。同时,这些样本被标记为K个不同的类别。我们将所有样本构成一个矩阵X,其中每一行表示一个样本,第j列表示该样本的第j个特征。对应的类别标签构成向量y。

  2. 计算类别均值向量: 针对每个类别k,计算其均值向量μ_k。μ_k的第j个元素表示在第j个特征上属于类别k的样本的平均值。

  3. 计算类内散度矩阵: 类内散度矩阵S_w可以通过计算每个类别内各样本的散布程度来得到。具体地,对于第k个类别,计算其散度矩阵S_k。S_k可以通过将所有属于该类别的样本进行中心化,然后计算协方差矩阵得到。最后,将所有类别的散度矩阵相加,即可得到总的类内散度矩阵S_w。

  4. 计算类间散度矩阵: 类间散度矩阵S_b用于衡量不同类别之间的距离。公式为S_b = Σ(N_k * (μ_k - μ) * (μ_k - μ)^T),其中N_k表示属于第k个类别的样本数量,μ为所有样本的均值向量。

  5. 计算特征向量: 通过求解广义特征值问题,可以得到投影矩阵W。该矩阵的每一列对应一个特征向量,这些特征向量对应于数据在低维空间中的线性判别。具体地,我们可以选择前k个最大的特征值所对应的特征向量作为投影矩阵W。

  6. 降维: 将数据矩阵X乘以投影矩阵W,即可将高维数据映射到低维空间。降维后的数据矩阵Y = X * W。

通过以上步骤,我们就可以得到LDA算法的最终结果,即将高维数据映射到低维空间,并保留了最大程度的类别信息。

LDA优点

优点:

  1. 降维效果好:LDA通过学习类别之间的差异来选择合适的投影方向,使得同一类别样本之间的距离尽可能小,不同类别样本之间的距离尽可能大。这种特性使得LDA在降低数据维度的同时,尽可能保留了样本的类别信息。

  2. 解决分类问题:除了作为降维技术,LDA也可以应用于分类任务。通过选取适当的阈值,将降维后的样本进行分类。LDA在多类别分类问题上表现良好。

  3. 抗噪性强:LDA在处理受到一定噪声干扰的数据时,对异常值的影响相对较小。它通过学习类别之间的差异来确定投影方向,能够部分抵抗数据中的噪声。

  4. 简化模型:LDA可以将高维数据映射到低维空间,从而减少特征数量。这样做可以降低模型的复杂度,并且可以避免因维度灾难而导致的过拟合问题。

LDA缺点

缺点:

  1. 假设限制:LDA对数据的假设较为严格,例如假设数据符合正态分布、各个类别样本的协方差矩阵相等等。如果数据不满足这些假设,LDA的性能可能会下降。

  2. 过度拟合问题:当特征数量明显大于样本数量时,LDA的性能可能会受到影响。此时,计算类内散度矩阵的逆可能不稳定,从而导致过度拟合。

  3. 无法处理非线性问题:LDA是一种线性方法,只能学习线性投影来最大程度地保持类别信息。对于非线性问题,LDA的表现可能有限。

  4. 类别不平衡问题:当样本中某些类别的样本数量远远大于其他类别时,LDA可能会受到影响,因为它倾向于将投影方向选在样本数量较多的类别上。

基于LDA的人脸识别

机器学习之基于LDA的人脸识别_一片叶子在深大的博客-CSDN博客

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

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

相关文章

chatgpt赋能python:Python编码转换:理解不同的编码方式

Python编码转换:理解不同的编码方式 Python是一种功能强大的编程语言,它广泛用于各种领域,包括Web开发、数据分析、人工智能等等。与其他编程语言类似,Python也需要进行编码转换以处理不同的字符集和文本编码。 本文将介绍Pytho…

Spark Local环境搭建及测试

🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 篇一:Linux系统下配置java环境 篇二:hadoop伪分布式搭建(超详细) 篇三:hadoop完全分布式集群搭建(超详细&#xf…

TypeScript ~ TS 面向对象编程 ⑧

作者 : SYFStrive 博客首页 : HomePage 📜: TypeScript ~ TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &…

6. Redis缓存设计与性能优化

分布式缓存技术Redis 1. 多级缓存架构2. 缓存设计2.1 缓存穿透2.2 缓存失效(击穿)2.3 缓存雪崩2.4 热点缓存key重建优化2.5 缓存与数据库双写不一致 3. 开发规范与性能优化3.1 键值设计3.1.1 key名设计3.1.2 value设计 3.2 命令使用3.3 三、客户端使用 4. 系统内核参数优化 本文…

3-2 Named tensors

这里有一张图像img_t 彩色图像可以看作一个矩阵,只是矩阵中的每一个点不是一个值,而是包含3个值的数组,这3个值就是RGB值 我们给它随机化为一个形状为 [3, 5, 5] 的三维张量img_t img_t torch.randn(3, 5, 5) # shape [channels, rows, co…

数据库是如何工作的

数据库是如何工作的 注: 本文翻译自db_tutorial. 数据库计算机世界的一个基础软件,要想深入了解数据库,就不得不思考如下几个问题: 数据以什么格式保存?(在内存和磁盘上)它何时从内存移动到磁…

永磁同步电机的矢量控制PMSM仿真(matlab仿真与图像处理系列第一期)

永磁同步电机(Permanent Magnet Synchronous Motor, PMSM) PMSM具有高效率、高功率密度和快速响应等特点,在现代工业中得到了广泛应用。而矢量控制是一种广泛应用于永磁同步电机的高精度控制方法,它能够实现永磁同步电机的快速、准确、稳定的运行。 矢量控制 矢量控制的…

Android自定义View合集

文章目录 自定义QQ步数QQ计步效果分析自定义View分析的常用步骤自定义属性获取自定义属性画外圆弧画内圆画文字增加动画让其动起来 自定义评分控件RatingBar自定义评分View效果分析自定义属性获取自定义属性重写onMeasure()方法画出对应数量的星星触摸事件处理 自定义酷狗侧滑菜…

Ubuntu设置无线wifi的静态IP

安装 net-tools sudo apt install net-tools 输入ifconfig查看当前网络ip地址&#xff1a; pulsarpulsar:~$ ifconfig docker0: flags4099<UP,BROADCAST,MULTICAST> mtu 1500inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255ether 02:42:02:8c:87:a…

Linux下使用Mysql数据库忘记密码问题解决

​ 方法1查看初始化密码进行登录&#xff1a; 查看mysql的初始密码 在rootlocalhost后面的就是mysql初始的密码&#xff0c;以上图为例 初始密码则为&#xff1a;ukehBfivW1 方法2直接跳过数据库密码验证&#xff1a; 1、用vi指令进入mysql配置文件/etc/my.cnf并修改 在最后…

jmeter的web接口测试

目录 前言&#xff1a; 一、安装Jmeter 二、添加HTTP接口测试 三、添加新的POST请求 四、添加断言 前言&#xff1a; 使用JMeter进行Web接口测试是一种常见的应用场景。 一、安装Jmeter 二、添加HTTP接口测试 我们的所以工具都会在Jmeter工具中完成&#xff0c;接来就…

python爬虫之Scrapy框架--测试调试--保存数据

目录 ScrapyShell 启动ScrapyShell 基本方法 注意 保存数据到文件 方法一 使用python原生方式保存 方法二 使用Scrapy内置方式 方法三 Item Pipeline的使用 功能 ScrapyShell ScrapyShell是Scrapy框架提供的一个交互式的开发工具&#xff0c;用于调试和测试爬虫&…

数学建模-数据的处理

MATLAB数学建模方法与实践&#xff08;第3版&#xff09;——读书笔记 数据的准备数据获取数据处理缺失值处理噪音过滤数据集成数据归约数据变换标准化离散化 数据统计基本描述性统计分布描述性统计 数据可视化数据降维主成分分析&#xff08;PCA&#xff09;相关系数降维 数据…

K8S 使用(1)- 基本命令

根据上文完成部署k8s后&#xff0c;我们需要了解如何使用k8s.首先我们需要了解如何使用K8S的一些基础命令及主要概念。 尚不清楚如何部署的请参考&#xff1a;单master部署简要步骤 如果您熟悉了k8s基本命令&#xff0c;可以跳过此章节。 目录 先看一下这张图 2. 节点 nod…

2.2、IOC容器的实现流程

​一、类图 二、容器的实现接口 Spring容器并不是只有一个。Spring自带多个容器实现&#xff0c;可以归位两种不同的类型。 &#xff08;1&#xff09;Bean工厂&#xff08;由org.springframework.beans.factory.BeanFactory接口定义&#xff09;是简单的容器实现工厂&#x…

数学内容的概述

前言 作为一名文科生&#xff0c;学习编程最大的阻碍莫过于数学知识。 学习数学的必要性 跟开发APP和后台服务器相比&#xff0c;机器学习、深度学习需要大量的数学知识。 数据处理和清洗&#xff1a;数据分析涉及大量的数据处理和清洗工作&#xff0c;需要掌握基本的数学概…

linux系统LAMP架构

文章目录 一、LAMP简介与概述二、LAMP各组件主要作用1.构建LAMP平台顺序 三、编译安装Apache httpd服务1.将所需软件安装包下载到/opt目录下解压2.移动两个文件并改名3.安装依赖环境4.编译安装5.做软连接&#xff0c;使文件可执行6.优化配置文件路径&#xff0c;并把httpd服务的…

《面试1v1》Redis主从架构

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

crossover虚拟机软件好用吗?22.1.1版本有哪些优点

苹果系统虽然安全稳定&#xff0c;但有些应用程序并不提供苹果系统的安装包&#xff0c;使用双系统或在苹果电脑安装虚拟机可以帮我们提升设备使用效率&#xff0c;除了这两种解决方案外&#xff0c;还可以使用类虚拟机软件crossover&#xff0c;crossover mac的优点在于不会占…

使用HTTP/2实现服务端主动推送消息给客户端

77. 使用HTTP/2实现服务端主动推送消息给客户端 HTTP/2协议的服务器主动推送机制是通过服务器在接收到客户端请求后&#xff0c;主动向客户端推送相关资源的方式来实现的。下面将详细解释如何在服务器端和客户端实现HTTP/2的服务器主动推送&#xff0c;并给出相应的代码示例。…