ML_Review_LDA(Ch5)
Note sth about LDA(Linear Discriminant Analysis)
这篇来说说LDA的复习,LDA在第二次作业的博客中也提及了,但是那是作业思考,所以决定再开一篇只说LDA的。
动机:
LDA的中文名字——线性判别分析。其主要功能还是降维(N $\rightarrow$ k)。
LDA算法:(用一个二维特征的二分类来说明,因为图好画←_←)
至于多分类,可以参考博客LDA线性分析推广到多分类
明确LDA是如何进行降维(线性判别的),LDA考虑的和PCA不同之处在于——PCA的样本空间是一个样本,你来做主成分提取;而LDA的样本是一堆样本,你来找轴映射,从而将这些样本分离。于是乎,LDA考虑的目标是——最大化类间距离与最小化类内距离。(即不同类样本尽量离得远,同类尽量离得近)
算法公式概述:
$$ \mu_i = \frac{1}{N_i} \sum_{x \in X_i} x $$
$$ \overline{z_i} = w^T \mu_i = w^T \frac{1}{N_i} \sum_{x \in X_i} x = \frac {1}{N_i} \sum_{x \in X_i} w^Tx $$
Between-calss Scatter:$ J_b = || \overline{z_1} - \overline{z_2} || $
Within-class Scatter:$ J_w = s_1^2 + s_2^2 $,$ s_i = \sum_{z \in Z_i} (z-\overline{z_i})^2 $
其实,上式中的$\overline{z_i}$就是$i$这类的中心。即下图中的$\overline{x_i}$,显然右图效果更好,因为左图其实两个类的部分样本映射完已经重叠了。

问题:
显然我们希望最大化$J_b$,而最小化$J_w$,而且是同时的,那么我们应该如何构造我们的优化目标函数?下面提供几个思路:
1、$ arg max J(w) = J_b - J_w $
2、$ arg max J(w) = \frac{J_b}{J_w} = \frac{w^T S_b w}{w^T S_w w} $
是不是都可以?当$J_b$变大而$J_w$减小的时候,让上述两个值最大,就是我们所需的答案。但是其实$J_b - J_w$是不可以的。因为还要考虑一个问题,虽然$J_b$和$J_w$都是正的,但是谁大谁小我们并不清楚,所以1式是会爆出负数的,而一旦爆出负数,结果就可能会出错,举个例子:$3-100>4-110$,但是$\frac{3}{100}<frac{4}{110}$,显然就出错了。而2因为都是正数,所以可以很好地进行优化。
紧接着,我们观察一下$ arg max J(w) = \frac{w^T S_b w}{w^T S_w w} $,会发现其实$w$的解是不唯一的,因为如果$w$是解,显然$a*w$也是解,为了方便得解出解,我们添加一个约束,并将问题转化为:$arg max J_b(w) = w^T S_b w$,其中$ w^T S_w w = 1 $,这个和$ arg max J(w) = \frac{w^T S_b w}{w^T S_w w} $是等价的,但是我们可以发现——$arg max J_b(w) = w^T S_b w$,其中$ w^T S_w w = 1 $,又是一个带约束的优化问题,请出Lagrange-multipliers(拉格朗日乘子法)
我们可以得到:
$$ L(w,\lambda) = w^T S_b w - \lambda(w^T S_w w - 1) $$
$$ \frac{\partial L}{\partial w} = 2S_b w - wS_w w $$
此时,若$S_w$可逆,则$S_{w}^{-1} S_b w = \lambda w$,又回到了解特征方程的问题,如果$S_w$不可逆呢?我们可以求$S_w$的伪逆,这样问题也是可以解决的。
关于伪逆,即若$X$与$A^T$同型,且满足:$AXA=A$,$XAX=X$,则$X$为$A$的伪逆矩阵。
ML_Review_LDA(Ch5)的更多相关文章
- Mongodb Manual阅读笔记:CH5 安全性
5 安全性 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读 ...
- 《代码整洁之道》ch5~ch9读书笔记 PB16110698(~3.15) 第二周
<代码整洁之道>ch5~ch9读书笔记 本周我阅读了本书的第5~9章节,进一步了解整洁代码需要注意的几个方面:格式.对象与数据结构.错误处理.边界测试.单元测试和类的规范.以下我将分别记录 ...
- 《图解机器学习-杉山将著》读书笔记---CH5
CH5 稀疏学习 重点提炼 提出稀疏学习的缘故: 虽然带有约束条件的最小二乘学习法结合交叉验证法,在实际应用中是非常有效的回归方法,但是,当参数特别多时,计算参数以及预测值需要大量时间.此时,我们要解 ...
- 计算机体系结构——CH5 标量处理机
计算机体系结构--CH5 标量处理机 右键点击查看图像,查看清晰图像 X-mind 计算机体系结构--CH5 标量处理机 先行控制技术 指令得重叠执行方式 顺序执行方式 一次重叠执行方式 二次重叠技术 ...
- SQL Server 2012实施与管理实战指南(笔记)——Ch5启动SQL Server服务和数据库
5.启动SQL Server服务和数据库 在数据库和服务启动过程中,经常会出现的问题: 1.SQL Server实例无法正常启动 2.系统数据库无法正常启动 3.网络配置失败 4.用户数据库无法启动 ...
- ch5 MySQL 备份与恢复
第 5 章 MySQL 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 My ...
- linux 私房菜 CH5 笔记
知识点 linux 大小写敏感 接口的切换 [Ctrl] + [Alt] + [F1] ~ [F6] :文字接口登入 tty1 ~ tty6 终端机: [Ctrl] + [Alt] + [F7] :图 ...
- C++ Primer 5 CH5 语句
5.1 简单语句 空语句: ; 5.2 语句作用域 5.3 条件语句 switch 语句:表达式与某个 case 匹配成功,执行 case 之后的语句直到 break 或者 switch 结尾,cas ...
- [HBase Manual]CH5 HBase运行模式:单实例和分布式
HBase运行模式:单实例和分布式 HBase运行模式:单实例和分布式 1.单实例模式 1.1 单实例在HDFS下 2.分布式 2.1 伪分布式 3完全分布式 HBase有2种运行模式,单实例和分布式 ...
随机推荐
- Android笔记(十四) Android中的基本组件——按钮
Android中的按钮主要包括Button和ImageButton两种,Button继承自TextView,而ImageButton继承自ImageView.Button生成的按钮上显示文字,而Ima ...
- springboot中的小技巧
1.Thymeleaf 在时使用Thymeleaf的时候不用设置html标签:在默认的Thymeleaf的页面中,对于.html的要求比较严格,少写或者多写标签,都会被报错,而在springboot ...
- Django:ContentType组件
一.项目背景 二.版本一 三.版本二 三.终极版(使用ContentType) 一.项目背景 luffy项目,有课程有学位课(不同的课程字段不一样),价格策略 问题:1.如何设计表结构,来表示这种规则 ...
- 越狱后cydia无法联网
0x:卸载 cydia installer 1x:卸载后重启手机 2x:再次h3lix
- find 查找文件的命令
find顾名思义就是查找,Linux下find命令提供相当多的查找条件,可以在众多文件或目录下查找你想要的任何文件或目录. 语法: find filename 我当前目录下有aaa.txt和bbb.t ...
- pure::variants — 产品线变体管理工具
pure::variants 是德国 pure-systems 公司的产品,其目的是帮助企业实现对产品线的变体管理,提高企业项目资产的复用效率.pure::variants 的核心理念是运用产品线管理 ...
- pandas里面过滤列出现ValueError: cannot index with vector containing NA / NaN values错误的解决方法(转)
###df_18的字段fuek是否包含 / df_18[df_18['fuel'].str.contains('/')] 报错: ValueError Traceback (most recent c ...
- jcmd命令实战
继续来根据之前的那篇infoq的文章的介绍熟悉工具,上一次咱们学习使用了: 接下来学习它里面提到的另一个工具: jcmd是一个非常之强大的命令行工具,能输出很多很多的信息,也是在处理JVM的一些问题经 ...
- JDBC课程2--实现Statement(用于执行SQL语句)--使用自定义的JDBCTools的工具类静态方法,包括insert/update/delete三合一
/**JDBC课程2--实现Statement(用于执行SQL语句) * 1.Statement :用于执行SQL语句的对象: * 1): 通过Connection 的createStatement( ...
- grep redis-cli command
https://www.reddit.com/r/redis/comments/atfvqy/how_to_grep_from_monitor_command/ _------------------ ...