LDA算法——线性判别

article/2025/11/10 14:20:18

目录

一、前言

二、什么是LDA?

三、LDA原理

1.二分类问题

2.多分类问题

3.几点说明

 四、算法实现


一、前言

        之前我们已经介绍过PCA算法,这是一种无监督的降维方法,可以将高维数据转化为低维数据处理。然而,PCA总是能适用吗?

        考虑如下数据点:

         由PCA的原理我们可知,这些数据点在经PCA处理后会被映射到x轴上,如下所示:

        可以发现,投影后,红色数据点和蓝色数据点并不能很好地区分开。思考其背后的原因,在这个例子中,我们的数据点有了类别标签,而PCA是一种无监督学习算法,它会对所有类别的数据点 一视同仁,所以在分类问题中,PCA总是显得乏力。事实上,相比于X轴,将数据点投影到Y轴是一个更优选择:

         如上图所示,将数据点投影到Y轴可以将两个类别的数据点很好地区分开来。那么我们该如何找到这种投影方式呢,下面我们将介绍一种新的降维方法——LDA算法。

二、什么是LDA?

        线性判别分析(LDA),同PCA类似,也是一种降维算法,不一样的是,LDA是一种监督算法,它需要用到类别信息。LDA算法的思路同PCA一致,即通过某种线性投影,将原本高维空间中的一些数据,映射到更低维度的空间中,但LDA算法要求投影后的数据满足:1.同类别的数据之间尽可能地接近。2.不同类别的数据之间尽可能地远离。

三、LDA原理

1.二分类问题

        从最简单的二分类问题开始讨论。根据LDA的投影目标,我们可以得到我们要优化的目标如下:

J = \frac{\left \| u_1'-u_2' \right \|^2}{S_1'^2+S_2'^2}

        其中,u_1',u_2'代表投影后两个类别的数据的中心点,S_1',S_2'代表投影后两个类别的数据的标准差。同PCA一致,我们一般用方差来表示数据的离散散程度,观察优化目标J,分子衡量的是投影后两个类别的数据中心点的距离,而分母衡量的是投影后两个类别的数据各自的离散程度。同类别的数据越接近(LDA投影目标1),分母越小,J越大;不同类别的数据越远离(LDA投影目标2),分子越大,J越大,目标合理。

        方便起见,设X为原始数据点,u_1=\sum_{X\in Class1} \frac{X}{N},u_2=\sum_{X\in Class2} \frac{X}{N}分别为原始数据的中心点,w为投影向量,则有:

u_1'=\sum_{X\in Class1} \frac{w^TX}{N}=w^Tu_1

u_2'=\sum_{X\in Class2}\frac{w^TX}{N}=w^Tu_2

S_1'^2=\frac{1}{N}\sum \left \| w^TX-u_1' \right \|^2=\sum w^T\frac{1}{N}(X-u_1)(X-u_1)^Tw=w^TS_1w

S_2'^2=\frac{1}{N}\sum \left \| w^TX-u_2' \right \|^2=\sum w^T\frac{1}{N}(X-u_2)(X-u_2)^Tw=w^TS_2w

        优化目标即为:

J(w) = \frac{\left \| u_1'-u_2' \right \|^2}{S_1'^2+S_2'^2}=\frac{\left \| w^T(u_1-u_2) \right \|^2}{w^T(S_1+S_2)w}=\frac{w^T(u_1-u_2)(u_1-u_2)^Tw}{w^T(S_1+S_2)w}

        不妨设S_B=(u_1-u_2)(u_1-u_2)^T,S_w=S_1+S_2,则J(w)可简化为\frac{w^TS_Bw}{w^TS_ww}

        对J(w)求导,应有:

\frac{d J(w)}{dw}=\frac{2S_Bw(w^TS_ww)-2S_ww(w^TS_Bw)}{\left \| w^TS_2w \right \|^2}=0

        化简,得:

S_Bw(w^TS_ww)-S_ww(w^TS_Bw)=0

        等式两边同除以w^TS_ww,得:

S_Bw-S_ww\frac{w^TS_Bw}{w^TS_ww}=S_Bw-S_wJw=0

           变形,得:

S_w^{-1}S_Bw=Jw

        显然,这又是一个矩阵分解问题,J是矩阵S_w^{-1}S_B的特征值,同时也是我们优化的目标,而w即为对应的特征值,也是投影向量,所以我们将矩阵分解得到的特征值从大到小排列,然后取最大的几个特征值对应的特征向量作为我们的投影向量。

        观察式子S_Bw-S_wJw=0,由于S_B=(u_1-u_2)(u_1-u_2)^T,代入,得:

(u_1-u_2)(u_1-u_2)^Tw=S_wJw

        由于(u_1-u_2)^Tw代表的是投影后两类数据中心点间的距离,我们可以用常数D代替,于是有:

w=\frac{D}{j}S_w^{-1}(u_1-u_2)

        对于投影向量w,我们只需要求得它的方向,对于它的大小(缩放程度)并无要求,所以我们最终求得的投影向量w即为S_w^{-1}(u_1-u_2)。通过这种方法,我们并不需要对矩阵进行分解便能求得投影向量,大大减少了计算量。

2.多分类问题

       对二分类问题进行推广,考虑多分类问题。同样,投影的目的仍是使得同类数据点尽可能近,不同类别的数据点尽可能远。这里需要对优化目标J做适当改变,如下:

J=\frac{\sum N_i\left \| u_i'-u' \right \|^2}{\sum S_i'^2}

        其中,u_i,S_i和二分类问题一致,仍是第i类数据的中心点和标准差,而u则代表所有数据的中心,N_i代表第i个类别的数据个数。仔细观察,可以发现,目标J的分母仍为各类别数据投影后的离散程度,而分子则是投影后各类别数据中心距所有数据中心点的距离的加权平方和,同样是衡量不同类别数据点的分离程度。优化的目标同二分类问题一致,重点关注LDA投影目标,万变不离其宗。

        以二分类问题为例进行验证,有:

\begin{align} S_B&=N_1(u_1-u)(u_1-u)^T+N_2(u_2-u)(u_2-u)^T\\ &=N_1(u_1-u)(u_1-u)^T+N_2(u_2-u)(u_2-u)^T\\ &=N_1(u_1-\frac{N_1u_1+N_2u_2}{N})(u_1-\frac{N_1u_1+N_2u_2}{N})^T+N_2(u_2-\frac{N_1u_1+N_2u_2}{N})(u_2-\frac{N_1u_1+N_2u_2}{N})^T\\ &=N_1(\frac{N_2u_1-N_2u_2}{N})(\frac{N_2u_1-N_2u_2}{N})^T+N_2(\frac{N_1u_2-N_1u_1}{N})(\frac{N_1u_2-N_1u_1}{N})^T\\ &=\frac{N_1N_2^2}{N}(u_1-u_2)(u_1-u_2)^T+\frac{N_1^2N_2}{N}(u_1-u_2)(u_1-u_2)^T\\ &=\frac{N_1N_2}{N}(u_1-u_2)(u_1-u_2)^T \end{align}

        同样,我们只需要知道投影的方向,所以对于常数项\frac{N_1N_2}{N},其只控制投影后数据点的缩放,并不影响最终结果,可以忽略。可以发现,用多分类问题的公式计算出来的结果同二分类的计算公式完全一致。

3.几点说明

        (1).维度必减少

        PCA算法降维可以理解为旋转坐标轴,新的坐标下每条轴作为一个维度也即成分,对于差距不大的维度可以略去从而达到降维的目的,也就是说实际上PCA算法可以将N维数据仍然变换为N维数据,然后可视情况删减维度。但LDA算法不尽然,使用LDA算法时,新的坐标维度必会减少。

        以二分类为例,观察式子S_w^{-1}S_Bw=Jw,由于S_B=(u_1-u_2)(u_1-u_2)^T,可知S_B为奇异矩阵(它的秩最多为C-1),从而可以知道S_w^{-1}S_B也必为奇异矩阵,所以它分解后必有一个特征值为0,我们只能得到C-1个投影向量,C为类别个数。

        (2).投影后各维度之间不一定正交

        S_w^{-1}S_B不一定是实对称矩阵,所以它分解后得到的特征向量未必正交。

        (3).可能无解

        当样本点个数少于样本维度时,S_w会变为奇异矩阵,无法求逆。在这种情况下可能需要先用PCA降维,再使用LDA。

        (4).无法适用

        LDA并不是万能的,当同类别数据组成对角时,如下所示:

        对于这种情况,我们可以发现,无论怎么投影均无法将两类数据点很好地区分开来。事实上,对于这种情况,普通的线性投影均束手无策,应该先增加维度再考虑区分。

        此外,当不同类别的数据的中心重合,即u_1=u_2=u时,有S_B=0,此时LDA也不再适用。

        (5).对某些分类问题,PCA性能可能优于LDA

        当数据重合度过高时,如下所示:

        LDA会选择往Y轴方向进行投影,而PCA 由于不考虑类别信息,它会选择往X轴上进行投影。在这种情境下,PCA不失为一种更优选择。

 四、算法实现

        同样,根据前面的介绍,我们可以得到线性判别分析的一般步骤:给定样本,先中心化,然后求矩阵S_BS_w,再对矩阵S_w^{-1}S_B进行特征分解,代码实现如下:

        当然,也可以不进行特征分解,直接套用公式w =S_w^{-1}(u_1-u_2) :

         sklearn库里直接封装好了模型,可以直接使用:

         三种方法得到的特征向量分别为[0, -1],[0,-2],[0,8],标准化之后均为[0, 1],结果一致,即均投影到y轴上。观察特征分解结果,可以发现,有一个特征值为0,与前面对LDA的探讨一致。


http://chatgpt.dhexx.cn/article/FbT3sy1Q.shtml

相关文章

主题模型:LDA原理详解与应用

LDA算法简介: LDA是一种基于贝叶斯思想的无监督的聚类算法,广泛用于文本聚类,文本分析,文本关键词等场景。具体的,算法 的输入是一个文档的集合D{d1, d2, d3, ... , dn},同时还需要主题Topic的类别数量m&a…

LDA主题模型简介及Python实现

一、LDA主题模型简介 LDA主题模型主要用于推测文档的主题分布,可以将文档集中每篇文档的主题以概率分布的形式给出根据主题进行主题聚类或文本分类。 LDA主题模型不关心文档中单词的顺序,通常使用词袋特征(bag-of-word feature)来…

制作属于自己的个人博客-超详细教程

SpringBoot个人博客 一.博客效果预览 博客首页预览 博客详情预览 博客评论区预览 博客底部栏预览 关于页面预览 二.博客效果在线预览 http://blog.ShaoxiongDu.top 三.项目技术 后端SpringBoot框架 分为控制层(Controller) 业务层(Service) 数据持久层(Dao) 按照Spring…

如何搭建个人博客

新的安装方式:(强烈推荐,简单方便) 利用dockernginx配置halo博客 先碎碎念一下,最近在学习springboot项目,在b站跟着up主研究如何写一个简易的博客来着,后来发现可以直接简易的搭建一个博客(都不用写代码&a…

使用 nodejs 搭建个人博客

"使用nodejs搭建自己的个人博客" 说明运行后端 node 模块后端框架采用的是 express 框架进行接口构建,具体解释如下:数据库参数配置评论邮箱提示付费文件下载配置(支付宝)评论语句检测 关于跨域问题的解决 说明 使用no…

超详细图解:如何使用 WordPress搭建一个个人博客?

前两天我用WordPress 给自己搭建了一个网站,整个过程非常的顺利,体验非常地好,于是我就整个过程、以及其中的一些搭建心得,记录下来。 如果你也正好有搭建个人网站的想法,那么本文会给你一个参考,也许看了这…

个人博客网站的设计与实现

/ 前话 / 纯手工敲代码,代码结构简单,divcss布局html静态个人博客首页网页设计,dreamwaver和hb都可以编辑,文件结构包含了css、fonts、images、js和html,运用html5技术,包括nav标签、header标签和footer标签…

个人博客系统毕业设计开题报告

本文给出的是本科生个人博客系统的毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求) 毕业设计开题报告 一、选题意义二、博客系统概述三 、毕业设计研究方案四、功能结构图五、进度安排六、参考文献 一、选题意义…

基于HTML个人博客网站项目的设计与实现——个人博客作品展示6页 HTML+CSS

Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 个人博客网站 | 个人主页介绍 | 个人简介 | 个人博客设计制作 | 等网站的设计与制作 | 大学生个人HTML网页设计作品 | HTML期末大学生网页设计作业 HTML:结构 CSS&…

HTML制作个人网页制作(简单静态HTML个人博客网页作品)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

个人主页博客网页设计制作HTML5+CSS大作业——清新春暖花开个人博客网站(6页)

HTML5CSS大作业——清新春暖花开个人博客网站(6页) 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄…

如何使用HTML制作个人网站(如何搭建个人博客)

📂文章目录 一、👨‍🎓网站题目二、✍️网站描述三、📚网站介绍四、🌐网站演示五、⚙️ 网站代码🧱HTML结构代码💒CSS样式代码 六、🥇 如何让学习不再盲目七、🎁更多干货…

10分钟搭建一个免费个人博客网站

一个程序员怎么能不拥有自己的博客,本文让10分钟快速搭建部署好自己的博客 准备工作 有Gitee账号有安装git会 markdown 编写文档Node.js 版本 > 8.6 博客采用VuePress搭建,Gitee部署,接下来,5步搞定。 1.创建项目 创建项目…

用html制作学生个人博客,网页制作论坛(学生个人网页制作代码)

许多开发人员认为擅长设计是一种天生的能力,而创造力是与生俱来的。但是设计是一项可以像其他任何东西一样学习的技能。你不必天生就可以创建一个漂亮的网站的艺术家,这需要实践。在身边的小伙伴的博客,自己的网站来看,很多人都是用了开源后台的网站模板,熟不知局限太大,…

个人网站、个人博客的设计案例,仅供参考

关于网站的内容,我也是纠结了好久,我这里说的是网站建设的内容。个人网站,大多数人还是做个博客,想着能平时写点内容,发点文章,图片,一些简短的分享什么的。 好,想到就做。 我做了…

如何用html制作博客页面,HTML个人博客页面

知识点总结:下面的是一个个人博客页面,歌词的段落用的时“p”标签,超链接为“a”标签。 包括鼠标经过的事件:颜色变换;去顶部去底部和指定位置:写入的锚点,点击后可以到制定位置。 刚开始学习ht…

手把手教你十五分钟搭建个人博客网站

文章目录 一、下载二、上传服务器与配置三、加备案号四、关闭所有评论五、删除自豪采用wordpress六、优雅主题配置七、安装md编译器八、自定义站点九、发一篇博客 一、下载 https://cn.wordpress.org/download/下载一个就行: 二、上传服务器与配置 解压&#xff…

HTML+CSS大作业: 个人介绍网页制作作业 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人博客网站制作成品下载

HTML5期末大作业:个人介绍网站设计——个人博客(6页) HTMLCSSJavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、…

个人博客网站建设详细版

前言:在讲个人博客,我要向机灵鹤大佬致以最高的敬意!感谢他提出的技术指导,本章我将以我犯的错误一步步讲述。 1. 购买服务器 我是在阿里购买的服务器,因为我是一名学生的原因我通过认证学生身份参加了阿里云高校计划…

HTML5+CSS大作业——清新春暖花开个人博客网站(6页)

HTML5CSS大作业——清新春暖花开个人博客网站(6页) 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄…