无监督LDA、PCA、k-means三种方法之间的的联系及推导
\(LDA\)是一种比较常见的有监督分类方法,常用于降维和分类任务中;而\(PCA\)是一种无监督降维技术;\(k\)-means则是一种在聚类任务中应用非常广泛的数据预处理方法。
本文的主要写作出发点是:探讨无监督情况下,\(LDA\)的类内散度矩阵和类间散度矩阵与\(PCA\)和\(k\)-means之间的联系。
1.常规有监督\(LDA\)的基本原理:
(1) \(LDA\)的目标函数:
关于\(LDA\)的产生及理论推导,大家参考:“线性判别分析LDA原理总结”,这篇文章已经讲解地非常详细,我在这里不再赘述。本文涉及到的\(LDA\)皆是多分类\(LDA\), 以矩阵形式书写。
首先\(LDA\)的基本思想是:给定原始数据\(X\)(假设已经去中心化),求解一个正交投影子空间\(W\),使得样本经过子空间投影后,可以使类内散度矩阵\(S_w\)最小,类间散度矩阵\(S_b\)最大。即优化以下目标函数:
\left\{\begin{array}{l}
\min_{W^{T} W=I} \operatorname{Tr}\left(W^{T} S_{w} W\right) \\
\max_{W^{T} W=I} \operatorname{Tr}\left(W^{T} S_{b} W\right).
\end{array}
\right.
\end{equation}
\]
而上式中的类内散度矩阵\(S_w\)和类间散度矩阵\(S_b\)又满足另一个条件:
{S}_w + {S}_b = {S}_t,
\end{equation}
\]
这里,\({S}_t\)指的使整体散度矩阵。本文的出发点就是说明类内散度矩阵\({S}_t\)与\(PCA\)之间的联系以及类间散度矩阵\({S}_w\)与\(k\)-means之间的关系。
(2) \(LDA\)为什么是有监督的
LDA之所以是有监督的,是因为在公式(1)中,计算类内散度矩阵\({S}_w\)和类间散度矩阵\({S}_b\)时,需要用到标签矩阵Y。
2.LDA的类内散度矩阵和\(PCA\)之间的关系
关于PCA的具体推导过程,可以参考:"PCA的数学原理"
LDA中的整体散度矩阵\({S}_t\)的计算可以表达为:
{S}_{t}={X X}^{T}=\sum_{i=1}^{n} x_{i} x_{i}^{T}。
\end{equation}
\]
这里可以明显的发现,\(LDA\)中的整体散度矩阵\({S}_t\)和\(PCA\)是等价的。
3. \(LDA\)和\(k\)-means之间的联系
首先,我们做出一个假设,在无监督情况下,标签矩阵\(Y\)由一个已知变量转化为一个待求变量。此时,类内散度矩阵\({S}_w\)和类间散度矩阵\({S}_b\)可以做如下推导:
\left\{\begin{array}{l}
{S}_{t}={X} {X}^{T} \\
{S}_{b}={X} {Y}\left({Y}^{T} {Y}\right)^{-1} {Y}^{T} {X}^{T} \\
{S}_{w}={S}_{t}-{S}_{b}={X} \left({I}-{Y}\left({Y}^{T} {Y}\right)^{-1} {Y}^{T}\right) {X}^{T}
\end{array}
\right.
\end{equation}
\]
这里\({I}\)是同维度的单位矩阵。下面,我们进行类内散度矩阵\(\mathbf{S}_w\)的推导:
\begin{aligned}
\mathbf{S}_{w} &=\mathbf{X} \left(\mathbf{I}-\mathbf{Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T}\right) \mathbf{X}^{T}\\
&={X X}^{T}-\mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} \mathbf{X}^{T}\\
\end{aligned}
\end{equation}
\]
对上式进行拆分:
\begin{aligned}
&\mathbf{X X}^{T}-\mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} \mathbf{X}^{T}\\
=&\mathbf{X X}^{T}-2 \mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} \mathbf{X}^{T}+\mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} \mathbf{Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} X^{T} \\
=&\left(\mathbf{X}-\mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T}\right)\left(\mathbf{X-XY}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T}\right)^{T} \\
=& trace\left(\mathbf{X}-\mathbf{X Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T}\right)
\end{aligned}
\end{equation}
\]
上述公式中的一个小技巧:\((\mathbf{YY})^{-1}\)是一个对角矩阵,对角元素是,类别数分之一(\(\frac{1}{c}\))。
另外需要注意的一点是:
\left\{
\begin{aligned}
&\mathbf{Y}^{T} \mathbf{Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1}=I\\
&\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1 / 2} \mathbf{Y}^{T} \mathbf{Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1 / 2}=I\\
&\mathbf{Y}\left(\mathbf{Y}^{T} \mathbf{Y}\right)^{-1} \mathbf{Y}^{T} \neq I
\end{aligned}
\right..
\end{equation}
\]
故此,无监督情况下,\(LDA\)的类内散度矩阵和\(k\)-means其实是等价的,并且可以写成迹范数的形式。
无监督LDA、PCA、k-means三种方法之间的的联系及推导的更多相关文章
- 数组k平移三种方法(java)
上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...
- Linux启动新进程的三种方法
程序中,我们有时需要启动一个新的进程,来完成其他的工作.下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程system函数,是通过启动shell进 ...
- 三种方法实现PCA算法(Python)
主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...
- Python使用三种方法实现PCA算法[转]
主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- AHS日志收集的三种方法
硬件环境:(描述实验机器初始环境) 型号 DL380 G8 序列号 配置扩展 备注 软件环境: □ 操作系统:无 连接方式: □ 无 实验步骤: 1在ILO里点information点 ...
- IOS_视图实现圆角效果的三种方法及比较
通过代码,至少有三种方法可以为视图加上圆角效果.附例子:https://github.com/weipin/RoundedCorner 方法一.layer.cornerRadius 第一种方法最简单, ...
- CSS实现导航条Tab的三种方法
前面的话 导航条Tab在页面中非常常见,本文说详细介绍CSS实现导航条Tab的三种方法 布局 根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...
- CSS实现导航条Tab切换的三种方法
前面的话 导航条Tab在页面中非常常见,本文说详细介绍CSS实现导航条Tab的三种方法 布局 根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...
随机推荐
- Redux:异步操作
最近状态不太好,学习redux的异步操作花的时间比想象的多,这里尽量清晰简要的表述一下在redux中怎么实现异步操作. 先回顾一下同步操作: 我们用redux执行同步的时候,都是先发起一个dispat ...
- 原生js获取元素的各种位置(大全)
加给元素: offsetLeft (距离定位父级的距离) offsetTop (距离定位父级的距离) offsetWidth (可视宽度) offsetHeight (可视高度) clientLeft ...
- Mysql快速入门(看完这篇能够满足80%的日常开发)
这是一篇mysql的学习笔记,整理结合了网上搜索的教程以及自己看的视频教程,看完这篇能够满足80%的日常开发了. 菜鸟教程:https://www.runoob.com/mysql/mysql-tut ...
- 解决删除~/Library/Caches/CocoaPods/search_index.json重新pod search还是不起作用
今天新苹果机安装cocoapods,安装完以后发现怎么pod search 都没有用 命令行提示: swhcxp@iosdevmac ~ % pod search Almofire Setup com ...
- [!] Unable to find a pod with name, author, summary, or description matching `AFNetworking`
大量的答案是删除~/Library/Caches/CocoaPods/search_index.json 没有起作用 有用答案: https://blog.csdn.net/qq_35827461/ ...
- J2EE项目中,servlet跳转到相应的JSP页面后,JSP页面丢失了样式效果
原因: js和css的引用路径是相对路径.跳转后路径改变. 解决方法: 先在head标签中加入一下代码 <% String path = request.getContextPath(); St ...
- C盘清理.bat
将以下代码复制到.txt文件中并改为.bat文件运行即可. @echo offecho 正在清除系统垃圾文件,请稍等......del /f /s /q %systemdrive%\*.tmpdel ...
- PHP 数据库操作函数笔记
/建立 或者 关闭mysql服务器 @符号用于屏蔽错误信息 $link=@mysqli_connect('127.0.0.1','root','123456','php1',3306); if(mys ...
- Unity中激活子物体
void GetChildrenAndSetActive() { Transform[] imageTargetObjects = GetComponentsInChildren<Transfo ...
- 项目工程化之git提交规范以及 CHANGELOG生成
事先声明,本文是参考了其他大神的博客之后自己尝试的记录,具体可以参考如下 链接 先说说git 提交规范把,这里基本都是这个工具 cz-customizable 1,安装 npm install cz- ...