分段线性判别法 java_线性判别分析(Linear Discriminant Analysis)(二)

4. 实例

将3维空间上的球体样本点投影到二维上,W1相比W2能够获得更好的分离效果。

1f1608656f116db26e0369a3344c6054.png

PCA与LDA的降维对比:

d2eda5049c1ef99123871d1b14857368.png

PCA选择样本点投影具有最大方差的方向,LDA选择分类性能最好的方向。

LDA既然叫做线性判别分析,应该具有一定的预测功能,比如新来一个样例x,如何确定其类别?

拿二值分来来说,我们可以将其投影到直线上,得到y,然后看看y是否在超过某个阈值y0,超过是某一类,否则是另一类。而怎么寻找这个y0呢?

9a21e603d157410351def8a60a510d56.png

根据中心极限定理,独立同分布的随机变量和符合高斯分布,然后利用极大似然估计求

26279a6674570c8bb66c684e057e8871.png

然后用决策理论里的公式来寻找最佳的y0,详情请参阅PRML。

这是一种可行但比较繁琐的选取方法,可以看第7节(一些问题)来得到简单的答案。

5. 使用LDA的一些限制

1、 LDA至多可生成C-1维子空间

LDA降维后的维度区间在[1,C-1],与原始特征数n无关,对于二值分类,最多投影到1维。

2、 LDA不适合对非高斯分布样本进行降维。

38596b7f1029492efc896d0691c1628b.png

上图中红色区域表示一类样本,蓝色区域表示另一类,由于是2类,所以最多投影到1维上。不管在直线上怎么投影,都难使红色点和蓝色点内部凝聚,类间分离。

3、 LDA在样本分类信息依赖方差而不是均值时,效果不好。

deb3f0ca5f18b0053868c39a75887f66.png

上图中,样本点依靠方差信息进行分类,而不是均值信息。LDA不能够进行有效分类,因为LDA过度依靠均值信息。

4、 LDA可能过度拟合数据。

6. LDA的一些变种

1、 非参数LDA

非参数LDA使用本地信息和K临近样本点来计算147f651823d3073ea67648373f6b890b.png,使得9b00f1cb38ae64494615422b3b680ac1.png是全秩的,这样我们可以抽取多余C-1个特征向量。而且投影后分离效果更好。

2、 正交LDA

先找到最佳的特征向量,然后找与这个特征向量正交且最大化fisher条件的向量。这种方法也能摆脱C-1的限制。

3、 一般化LDA

引入了贝叶斯风险等理论

4、 核函数LDA

将特征b0379800d79c8ea9446f8dcbb1f75375.png,使用核函数来计算。

7. 一些问题

上面在多值分类中使用的

9da66cf81279006c244c3961fa109871.png

是带权重的各类样本中心到全样本中心的散列矩阵。如果C=2(也就是二值分类时)套用这个公式,不能够得出在二值分类中使用的1f41e195775eaea9e28dd7fcf72d2aff.png

6d4586909654aa1ac151fb3eb4dd3587.png

因此二值分类和多值分类时求得的c1f55eeaacaeb20843790144a936850f.png会不同,而a49e98fd8c70d1416009a10e6c1af958.png意义是一致的。

对于二值分类问题,令人惊奇的是最小二乘法和Fisher线性判别分析是一致的。

下面我们证明这个结论,并且给出第4节提出的y0值得选取问题。

回顾之前的线性回归,给定N个d维特征的训练样例5f797c6c6efed65650077f0ae1107650.png(i从1到N),每个5a818c1c941618d653b619f0e94db228.png对应一个类标签ad51841c2862af4156648efb16fd96d2.png。我们之前令y=0表示一类,y=1表示另一类,现在我们为了证明最小二乘法和LDA的关系,我们需要做一些改变

f3a5320f0f4a64b4b27ce8ec79e84f5d.png

就是将0/1做了值替换。

我们列出最小二乘法公式

deb5347603ab0116a4e2b34dd1bd2a68.png

w和12423fa97433f3a0bf26c2ab85b449dd.png是拟合权重参数。

分别对800a37e781a6210eceb120041335886a.png和w求导得

bb5cc480651310e0ca988bd2dfc75c67.png

3ae1bb1f371fdd1a7421eb905f3c2219.png

从第一个式子展开可以得到

c975277dea2c1c61b1c75dc058410142.png

消元后,得

54af2d7f7fd6d563801704c6417f13d1.png

75861427e4f53ea7319690dd2638ae2f.png

可以证明第二个式子展开后和下面的公式等价

edb6c56c849e7ec7b25d17a1871ca1f3.png

其中120c6fc2df7948c54b7d14162c298137.png75d0e061d284b71fcb87e717f495246c.png与二值分类中的公式一样。

由于886e7060bcdac2159ed0b8d99792a034.png

因此,最后结果仍然是

bccb4cc3284c2a7062ee77bc9109b7d1.png

这个过程从几何意义上去理解也就是变形后的线性回归(将类标签重新定义),线性回归后的直线方向就是二值分类中LDA求得的直线方向w。

好了,我们从改变后的y的定义可以看出y>0属于类975451d0db7e1cb1e7a7073ea259ec0f.png,y<0属于类8c32d8e0fb41e752288259435758eec8.png。因此我们可以选取y0=0,即如果7a966904b868821ece781778c2d99e51.png,就是类f3004c029192b07173f52ca89ad9c750.png,否则是类d683c28db68a5a8743ad42d259785608.png

写了好多,挺杂的,还有个topic模型也叫做LDA,不过名字叫做Latent Dirichlet Allocation,第二作者就是Andrew Ng大牛,最后一个他导师Jordan泰斗了,什么时候拜读后再写篇总结发上来吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试用例_大话软件测试用例要素

我们经常都知道一个测试用例里面包含以下几个要素&#xff1a;1&#xff0c;用例编号2&#xff0c;模块3&#xff0c;场景4&#xff0c;用例名称5&#xff0c;前置条件6&#xff0c;测试等级7&#xff0c;操作步骤8&#xff0c;预期结果(需求要求的结果)9&#xff0c;实际结果1…

cario java_Cairo图形库 概述

参考&#xff1a;http://blog.sina.com.cn/s/blog_538732a70100p9ay.htmlCairo图形库 1. 概述欢迎来到Cairo图形教程.这个教程将教你Cairo2D矢量绘图库基本的和一些高级的主题.大部分例程我们使用GTK编程库. 这个教程是用C语言来完成的.(如果可能,我会附加上一些cairomm的东西…

python大神推荐_大神推荐!!!高评分书籍轻松带你入门Python

上次讲到了初学者阶段必看的书籍。今天给大家继续讲讲进阶者阶段当你对Python有了一定的了解&#xff0c;并在生活或者工作中使用过一段时间&#xff0c;那么你就可以考虑进阶相关的书籍&#xff0c;请看下面这3本&#xff1a;《Python深度学习》豆瓣评分&#xff1a;9.6推荐指…

java中this图解_JAVA-初步认识-第七章-this关键字的使用场景和原理图解

一.this有什么用&#xff1f;我们用例子的形式来体现一下。下面的截图说明&#xff0c;给人对象一初始化的时候&#xff0c;赋值个姓名。赋值姓名的时候&#xff0c;拿n赋值给name&#xff0c;DOS显示创建对象时&#xff0c;构造函数初始化成功。在例子中&#xff0c;我们将“旺…

python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现

汉诺塔递归算法/搬金盘的婆罗门 - Python实现版权声明本文节选自作者本人的图书《Python编程基础及应用》&#xff0c;高等教育出版社。本文可以在互联网上自由转载&#xff0c;但必须&#xff1a;注明出处(作者&#xff1a;海洋饼干叔叔)并包含指向本页面的链接。本文不可以以…

java算程序运行时间_关于计算Java程序运行时间

第一种是以毫秒为单位计算的。Java代码//伪代码long startTimeSystem.currentTimeMillis(); //获取开始时间doSomeThing(); //测试的代码段long endTimeSystem.currentTimeMillis(); //获取结束时间System.out.println("程序运行时间&#xff1a; "(end-start)&qu…

reactor模型_Reactor模式以及Netty中的应用

思维导图一、Reactor模式介绍本文主要参考Doug Lea(大神)的《Scalable IO in Java》中讲述的Reactor模式。

Java文件路径及文件名乱码_javaweb文件下载及文件名中文乱码处理

版权声明&#xff1a;yanghaha的原创博客 https://blog.csdn.net/qq_44758435/article/details/90636619文件下载需要先导入两个jar包commons-fileupload-1.3.1.jarcommons-io-2.4.jarString fileName request.getParameter("fileName");//下载文件&#xff0c;需要…

sa是什么岗位_服务顾问SA在维修企业扮演的重要角色

前言&#xff1a;SA在维修企业中扮演什么样的角色&#xff0c;这就是我们今天的话题。作者 | 李连俊来源 | 汽车服务世界(ID&#xff1a;asworld168)客户的群体很多&#xff0c;不同的客户群体消费的能力不一样&#xff0c;SA简称【服务顾问】。SA要对客户的消费能力进行评估&a…

java报错symbol_为何此处会出现找不到symbol的错误呢?

使用this不是引用创建的对象么&#xff1f;import java.util.Comparator;import java.lang.Comparable;public class Point implements Comparable {int x, y;public final Comparator SLOPE_ORDER new ByOrder();private class ByOrder implements Comparator {public int co…

python pdf转txt保留全部信息_Python 将pdf转换成txt(不处理图片)

上一篇文章中已经介绍了简单的python爬网页下载文档&#xff0c;但下载后的文档多为doc或pdf&#xff0c;对于数据处理仍然有很多限制&#xff0c;所以将doc&#xff0f;pdf转换成txt显得尤为重要。查找了很多资料&#xff0c;在linux下要将doc转换成txt确实有难度&#xff0c;…

java cxf 不使用springmvc_使用cfx与springMVC集成发布与调用webservice

客户端调用代码 Client.java package com.quickmap.common;import javax.xml.namespace.QName;import javax.xml.ws.Service;import javax.xml.ws.soap.SOAPBinding;public final class Client {private static final QName SERVICE_NAME new QName("http://common.quickm…

python表单处理_python flask 表单处理Flask-WTF

涉及到的插件和包有Flask-WTF&#xff0c;WTForms。内容有表单的创建使用流程&#xff0c;一些最佳实践&#xff0c;还有在页面显示提示消息的简单方式,配合Flask内置的 flash()。Flask的requset对象包含了client端发送过来的所有请求&#xff0c;在request.form中就有POST方法…

电脑环境变量设置 java_如何设置自己电脑的系统环境变量?

Windows下JAVA用到的环境变量主要有3个&#xff0c;JAVA_HOME、CLASSPATH、PATH。下面逐个分析。JAVA_HOME指向的是JDK的安装路径&#xff0c;如x:\JDK_1。4。2&#xff0c;在这路径下你应该能够找到bin、lib等目录。值得一提的是&#xff0c;JDK 的安装路径可以选择任意磁盘目…

用python实现打开虚拟机_如何使用python从虚拟机读取文件

我使用oraclevirtualbox在我的系统上运行一个虚拟机&#xff0c;我要完成的是从物理系统读取虚拟机上的文件。我正在使用virtualbox api(pyvbox)与virtualbox进行接口。这是我第一次使用virtualbox api。在更新>>> import virtualbox>>> vbox virtualbox.Vi…

java 调用 mahout_java – 运行Mahout本地获取MahoutDriver的ClassNotFoundException

我试图在Windows 8机器上本地运行Mahout(没有Hadoop).我意识到这不是最佳设置,但这就是我必须使用的.当我尝试运行bin / mahout时,我收到以下错误&#xff1a;$bin/mahoutMAHOUT_LOCAL is set, so we dont add HADOOP_CONF_DIR to classpath.no HADOOP_HOME set, running local…

java写hive自定义函数_hive自定义函数的实现和执行

1. 先建个maven工程&#xff0c;创建Java类&#xff0c;将你要实现的内容写进类的方法里&#xff0c;例如public class StringExt extends UDF{public String evaluate(String pnb){return "Hello " pnb;}}这个类的实现很简单&#xff0c;继承了org.apache.hadoop.h…

python创建文件夹用什么函数_Python——os.mkdir()在指定路径下创建文件夹 + 路径的连接理解...

Python——os.mkdir()在指定路径下创建文件夹 路径的连接理解发布时间&#xff1a;2018-11-16 17:08,浏览次数&#xff1a;512, 标签&#xff1a;Pythonosmkdir引子&#xff1a; 我在用路径连接函数 os.path.join() 时发现&#xff0c;其连接的各级目录必须首先存在&#xff0…

基于hadoop的商品推荐系统_【论文笔记】基于矩阵分解的推荐系统

本文是对经典论文的阅读笔记&#xff0c;大部分为论文的中文翻译内容&#xff08;笔者英语水平也就六级飘过的水准&#xff0c;不喜勿喷&#xff09;论文标题&#xff1a;Matrix factorization techniques for recommender systems随着Netflix竞赛的结果所示&#xff0c;矩阵分…

php fpm在哪配置,php7的php-fpm.conf文件在哪里

php7下的php-fpm.conf文件一般是在php的安装目录下的etc目录中&#xff0c;文件路径为/usr/local/php-fpm/etc/php-fpm.conf。php-fpm.conf是php-fpm进程管理器的配置文件。php-fpm.conf是php-fpm进程管理器的配置文件。文件路径&#xff1a;/usr/local/php-fpm/etc/php-fpm.co…