无监督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的三种方法 布局 根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...
随机推荐
- .NET 程序员的 Playground :LINQPad
如果想执行一个简单的 C# 语句并获得运行结果,通常我们需要做几个步骤才能达成: 打开 Visual Studio 并新建一个控制台项目. 在 Program.cs 中编写代码并保存. 点击运行按钮或 ...
- Spring+Struts2+Hibernate框架搭建
SSH框架版本:Struts-2.3.30 + Spring-4.2.2 + Hibernate5.2.2 下图是所需要的Jar包: 下面是项目的结构图: 1.web.xml <?xml ...
- 数据结构----栈stack
栈的概念与数据结构 栈(有时称为“后进先出栈”)是一个元素的有序集合,其中添加移除新元素总发生在同一端.这一端通常称为“顶部”.与顶部对应的端称为“底部”.栈的底部很重要,因为在栈中靠近底部的元素是存 ...
- Django模板之模板变量
深度查询句点符(.)在模板语言中有特殊的含义. 当模版系统遇到点("."),它将以这样的顺序查询: 字典查询(Dictionary lookup) 属性或方法查询(Attribut ...
- 机器学习必会工具gensim
import jieba import gensim from gensim import corpora from gensim import models from gensim import s ...
- Python 字符串内置函数(四)
# 4.类型判断# isalnum()函数检测字符串是否只由字母和数字组成.s = "this2009"; # 字符中没有空格print(s.isalnum()) # 结果:Tru ...
- redis学习——day01_redis简介与安装
一.Redis 简介 1.1 Redis是什么 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统.Redi ...
- hdu6314 容斥+数学
题意 : n*m的矩阵 可以涂黑白两色 问至少A行B列为黑色的涂色方案种类数,答案对998244353取模,1<=n,m,A,B<=3000 题解: ans=sum{A,..n}sum( ...
- hdu2243
背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了.一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般表 ...
- 二、HTML基础标签4个
标题标签<h1> —— <h6> <!DOCTYPE html> <html> <head> <meta charset=" ...