无监督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的三种方法 布局 根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...
随机推荐
- percona 5.6的安装
yum 安装, 1 如果已经安装过mysql 的东西,先卸载了.yum remove mysql* 包括 /etc/my.cnf 这个东西卸载的时候不会删除. mv /etc/my.cnf /etc/ ...
- Echarts图标宽度变成100px,让图表宽度随着父元素自动适应,Vue实时监听宽度的变化,这可能是史上最好的解决方案!
最近工作中element后台管理使用Echarts图表,本后台项目分图表模式和列表模式,使用display控制显示隐藏,这样就引出了本文的问题. 问题1:Echarts图标宽度变成100px? 问题2 ...
- meta标签设置不缓存
平常调试的时候总是因为缓存问题有些浪费时间,加上这几行代码就ok了 <meta http-equiv="Cache-Control" content="no-cac ...
- js性能优化之---防抖函数
使用场景 input的时时触发搜索功能 scroll事件的滚动条位置的监测 resize事件监听窗口变化等 举个栗子(input框时时触发搜索功能) 普通未防抖款 var textElement = ...
- 3.4 Go字符型
1. Go字符型 Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存. 普通字符串就是一串固定长度的字符连接起来的字符序列. Go 的字符串是由单个字节连接起来 ...
- ubuntu下安装perl GD模块
依次执行: sudo apt-get install libgd2-xpm-dev sudo perl -MCPAN -e shell install Bundle::CPAN install GD: ...
- el-table合理应用ref属性,使el-input获得焦点
全篇不着一丝文字痕迹,仅记录而已
- SQL——SQL约束
SQL约束 - 用于限制加入表的数据的类型 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). NOT NULL ...
- 基于Unity实现像素化风格的着色器
Shader "MyShaderTest/SimplePixelationShader" { Properties { _MainTex ("Base (RGB)&quo ...
- Java程序员的两项通用能力
工作这几年来,经历了很多.从小白到中级(手机里有一款叫中国象棋的游戏,里面给对弈中电脑水平分为小白.菜鸟.新手.入门.初级.中级.高级.大师.特级大师,编程我暂且按照这样来区分). 学校教给我的是从小 ...