\(LDA\)是一种比较常见的有监督分类方法,常用于降维和分类任务中;而\(PCA\)是一种无监督降维技术;\(k\)-means则是一种在聚类任务中应用非常广泛的数据预处理方法。

   本文的主要写作出发点是:探讨无监督情况下,\(LDA\)的类内散度矩阵和类间散度矩阵与\(PCA\)和\(k\)-means之间的联系。

1.常规有监督\(LDA\)的基本原理:

  (1) \(LDA\)的目标函数:

   关于\(LDA\)的产生及理论推导,大家参考:“线性判别分析LDA原理总结”,这篇文章已经讲解地非常详细,我在这里不再赘述。本文涉及到的\(LDA\)皆是多分类\(LDA\), 以矩阵形式书写。

   首先\(LDA\)的基本思想是:给定原始数据\(X\)(假设已经去中心化),求解一个正交投影子空间\(W\),使得样本经过子空间投影后,可以使类内散度矩阵\(S_w\)最小,类间散度矩阵\(S_b\)最大。即优化以下目标函数:

\[\begin{equation}
\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\)又满足另一个条件:

\[\begin{equation}
{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\)的计算可以表达为:

\[\begin{equation}
{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\)可以做如下推导:

\[\begin{equation}
\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{equation}
\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{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}\))。

   另外需要注意的一点是:

\[\begin{equation}
\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三种方法之间的的联系及推导的更多相关文章

  1. 数组k平移三种方法(java)

    上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...

  2. Linux启动新进程的三种方法

    程序中,我们有时需要启动一个新的进程,来完成其他的工作.下面介绍了三种实现方法,以及这三种方法之间的区别. 1.system函数-调用shell进程,开启新进程system函数,是通过启动shell进 ...

  3. 三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  4. Python使用三种方法实现PCA算法[转]

    主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...

  5. C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?

    C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...

  6. AHS日志收集的三种方法

    硬件环境:(描述实验机器初始环境) 型号 DL380 G8 序列号   配置扩展   备注   软件环境: □  操作系统:无 连接方式: □  无 实验步骤: 1在ILO里点information点 ...

  7. IOS_视图实现圆角效果的三种方法及比较

    通过代码,至少有三种方法可以为视图加上圆角效果.附例子:https://github.com/weipin/RoundedCorner 方法一.layer.cornerRadius 第一种方法最简单, ...

  8. CSS实现导航条Tab的三种方法

    前面的话   导航条Tab在页面中非常常见,本文说详细介绍CSS实现导航条Tab的三种方法 布局   根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...

  9. CSS实现导航条Tab切换的三种方法

    前面的话   导航条Tab在页面中非常常见,本文说详细介绍CSS实现导航条Tab的三种方法 布局   根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...

随机推荐

  1. 《机器学习_07_02_svm_软间隔支持向量机》

    一.简介 上一节介绍了硬间隔支持向量机,它可以在严格线性可分的数据集上工作的很好,但对于非严格线性可分的情况往往就表现很差了,比如: import numpy as np import matplot ...

  2. gulp iconfont

    参考如下网站 https://github.com/hjzheng/CUF_meeting_knowledge_share/tree/master/2015-7-24/gulp-test-iconfo ...

  3. mysql 一台服务器中装两个mysql

    个人经验: 服务器中已有mysql5.0 现要安装mysql5.5 下载安装包,安装后,mysql5.5中没有my.ini文件,就在我自己的电脑上复制了mysql5.5的my.ini文件进去. 1.在 ...

  4. E. Physical Education Lessons 动态开辟线段树区间更新

    E. Physical Education Lessons time limit per test 1 second memory limit per test 256 megabytes input ...

  5. PHP 面向对象的数据库操作

    一.面向对象 fetch_all() 抓取所有的结果行并且以关联数据,数值索引数组,或者两者皆有的方式返回结果集. fetch_array() 以一个关联数组,数值索引数组,或者两者皆有的方式抓取一行 ...

  6. JMeter中BeanShell Sampler

    https://blog.51cto.com/11009785/2385492?source=dra 1.jmeter报错 jmeter.protocol.java.sampler.BeanShell ...

  7. Vim入门教程——转

    简书: https://www.jianshu.com/p/bcbe916f97e1

  8. uni-app之uni.showToast()image路径问题

    uni-app的API中,showToast的icon值只有success,loading,none三种显示,失败没有图标.如果失败时需要显示图标,就要用到自定义图标 image 了. uni.sho ...

  9. Golang基础教程——map使用篇

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法. map这个数据结构我们经常使用,存储的是key-value的键 ...

  10. Rocket - tilelink - ErrorEvaluator

    https://mp.weixin.qq.com/s/NkbW465NAmhDsETksd2M0g   介绍ErrorEvaluator的实现.   ​​   1. 基本介绍   ErrorEvalu ...