机器学习sklearn笔记:LDA(线性判别分析)

news2024/10/5 20:22:27

1 介绍

1. 有监督的降维
2. 投影 后类内方差最小,类间方差最大

 

 2 推导

  • 我们记最佳的投影向量为w,那么一个样例x到方向向量w上的投影可以表示为:
    • y=w^Tx
  • 给定数据集D=\{(x_i,y_i)\}_{i=1}^m,y_i\in \{0,1\}
    • N_i,X_i,\mu_i,\Sigma_i分别表示第i类的样本个数、样本集合、均值向量和协方差矩阵
    • \mu_i=\frac{1}{N_i}\sum_{x \in X_i}x
      • ——>在投影上的均值是w^\top \mu_i
    • \Sigma_i =\sum_{x\in X_i}(x-\mu_i)(x-\mu_i)^\top'
      • ——>在投影上的协方差是\tilde S_i^2=\sum_{x \in X_i} (w^\top x-w^\top \mu_i)(w^\top x-w^\top \mu_i)^\top=\sum_{x \in X_i} w^\top(x-\mu_i)(x- \mu_i)^\top w
  • 我们希望两个类尽可能地远,类内部尽可能地近
    • ——>在投影上两个类的均值差距越大越好
      • J_1(w)=||w^\top \mu_0 -w^\top \mu_1||_2^2=w^\top(\mu_0-\mu_1)(\mu_0-\mu_1)^\top w 越大越好
      • 记类间散度矩阵S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^\top (between)
      • J_1(w)=w^TS_bw
    • ——>在投影上同一类的均值接近

       

      • J_2(w)=S_1^2+S_2^2 =\sum_{x \in X_1} w^\top(x-\mu_1)(x- \mu_1)^\top w+\sum_{x \in X_2} w^\top(x-\mu_2)(x- \mu_2)^\top w= w^\top[\sum_{x \in X_1}(x-\mu_1)(x- \mu_1)^\top +\sum_{x \in X_2} (x-\mu_2)(x- \mu_2)^\top] w越小越好
      • 记类内散度矩阵S_w=\sum_{x \in X_1}(x-\mu_1)(x- \mu_1)^\top +\sum_{x \in X_2} (x-\mu_2)(x- \mu_2)^\top(within)
      • J_2(w)=w^TS_ww
    • 将J1(w)和J2(w)的要求合并在一块,有:J(w)=\frac{J_1(w)}{J_2(w)}越大越好
      • J(w)=\frac{w^\top S_b w}{w^\top S_w w}
      • 上式又称为Sb和Sw的广义瑞利商

3 确定w

  • w是一个向量,我们只需要知道它的方向即可。向量的模任何大小是都可以的【(a,b)和(ka,kb)都是合理的向量】
  • 所以我们一定可以找到一个w,使得w^\top S_w w=1
  • 于是我们的目标函数变成 min_w -w^\top S_bw \quad s.t. \ w^\top S_w w=1
    • 使用拉格朗日乘子法,有:
    • S_b w=(\mu_0-\mu_1)(\mu_0-\mu_1)^\top w
      • (\mu_0-\mu_1)^\top w 是一个标量,所以S_b w的方向和\mu_0-\mu_1的方向相同/相反
      • 我们记S_b w= \lambda_1 (\mu_0-\mu_1)
      • 于是\lambda_1 (\mu_0-\mu_1)=\lambda S_w w
      • 所以w=\frac{\lambda_1}{\lambda} S_w^{-1}(\mu_0-\mu_1)
      • 对于w,其向量长度可以任意,只要知道他的方向即可,所以我们把前面的λ1/λ去掉,于是有:
    • w=S_w^{-1}(\mu_0-\mu_1)
    • 也就是说,通过原始样本两个类的均值和方差,就可以确定最佳的投影方位

     

4 sklearn

import numpy as np
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])

clf = LinearDiscriminantAnalysis()
#n_components是一个参数,设置降维至多少
#如果这个参数没有设置,那么就默认是min(n_classes-1,n_features)

clf.fit(X, y)

参考内容:LDA线性判别分析 - 知乎 (zhihu.com)

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

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

相关文章

kafka初识

安装kafka 下载 下载window的kafka地址 window的kafka只是为了方便学习 安装地址:kafka.apache.org/ 安装 解压zip为文件夹 启动kafka kafka服务器的功能相当于RocketMQ中的broker,kafka运行还需要一个类似于命名服务器的服务。在kafka安装目录中自…

Windows10添加WebDav地址时报错“输入的文件夹无效,请选择另一个”

一、问题描述在使用Windows10添加WebDav网络地址时,报错“输入的文件夹无效,请选择另一个”,如下图所示:二、问题分析这是由于Windows10的WebDav默认只支持https协议,没有支持http协议导致的。三、解决办法3.1、修改注…

计算机科学领域中里程牌式的算法

计算机科学中伟大的算法前言搜索引擎的索引PageRank公钥加密 --- 用明信片传输秘密纠错码数据压缩无损压缩有损压缩数据库 --- 追求一致性的历程事务和待办事项(预写日志记录)数字签名用挂锁签名用指数挂锁签名RSA的安全性前言 我肯定不是一位天文学专家…

redis 消息队列方案

redis 消息队列方案 观察角度:消息有序,重复消息处理,消息可靠性保证 pub/sub 发布订阅机制 list集合 消息有序:lpush和rpop可以保证消息顺序的被消费 重复消息处理:list没有为消息提供唯一标识,需要生产者…

利用matlab求解非线性目标函数

文章目录函数介绍设置函数参数步骤结果分析函数介绍 使用fmincon函数来进行求解,格式为 [x,y] fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其中,f表示所求的目标函数,x0表示初始值,A,b,Aeq,beq表示线性的约束&#xff0c…

SpringBoot06:整合JDBC、Druid、MyBatis

整合JDBC 1、创建一个新的工程,勾选JDBC API和MySQL Driver 2、导入web启动器 3、编写yaml配置文件,连接数据库 spring:datasource:username: rootpassword: 123456url: jdbc:mysql://localhost:3306/mybatis?useUnicodetrue&characterEncodingut…

力扣 2299. 强密码检验器 II

题目 如果一个密码满足以下所有条件,我们称它是一个 强 密码: 它有至少 8 个字符。 至少包含 一个小写英文 字母。 至少包含 一个大写英文 字母。 至少包含 一个数字 。 至少包含 一个特殊字符 。特殊字符为:“!#$%^&*()-” 中的一个。…

面向对象编程范式

目录 1.概述 1.1.面向对象编程的核心诉求 1.2.面向对象的世界观 2.类和对象 3.如何寻找类和对象 3.1.概述 3.2.示例 4.如何表示类 4.1.什么是UML 4.1.关系 4.2.权限 4.3.依赖 4.4.泛化(继承) 4.5.实现 4.6.关联 4.7.聚合 4.8.组合 1.概…

自定义类型之枚举和联合

该文章将详细介绍除结构体外的另外两种自定义类型--------枚举类型与联合类型。1.枚举1.1枚举类型的定义1.2枚举的优点1.3枚举的使用2.联合(共用体)2.1联合类型的定义2.2联合的特点2.3联合大小的计算1.枚举 枚举顾名思义就是------一一列举。 把所有可能…

ADAS HiL系统测试方案

1、什么是ADAS ADAS(Advanced Driving Assistance System)也就是高级驾驶辅助系统,是无人驾驶的过渡。 ADAS利用安装在车上的各式各样传感器(毫米波雷达、激光雷达、单\双目摄像头以及卫星导航),在汽车行驶…

[前端笔记——CSS] 12.处理不同方向文本

[前端笔记——CSS] 12.盒模型背景与边框1.书写模式2.书写模式、块级布局和内敛布局3.逻辑属性和逻辑值1.书写模式 CSS 中的书写模式是指文本的排列方向是横向还是纵向的。writing-mode 属性使我们从一种模式切换到另一种模式。例如,我们使用writing-mode: vertical…

stack、queue、priority_queue

容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。 其中stack和queue都是容器适配器,其中stack可以封装vector、list以及我们…

ffmpeg无损裁剪、合并视频

我用的版本是 ffmpeg version git-2020-06-23-ce297b4 官方文档 https://ffmpeg.org/ffmpeg-utils.html#time-duration-syntax 时间格式 [-][HH:]MM:SS[.m...] 或 [-]S[.m...][s|ms|us]裁剪视频 假设需要裁剪视频aaa.mp4,第5秒到第15秒 ffmpeg -ss 5 -to 15 -i…

使用gazebo对scara机械臂进行仿真

本文主要介绍如何仿真一个scara机械臂,以及在网上看了一些项目以后,有了一些感想,不想看的可以直接跳到机械臂部分。 目录感想(自己的理解,不一定对。)Scara机械臂的开发运动学计算如何使用机械臂工作图一个例子: 在start_pose抓起…

【Hadoop】MapReduce分布式计算实践(统计文本单词数量)

文章目录1. 前言2. Mapper代码3. Reducer代码4. Main代码5. 项目打包6. Hadoop运行7. 运行结果查看7.1 输出文件查看7.2 日志查看1. 前言 在博客【Hadoop】MapReduce原理剖析(Map,Shuffle,Reduce三阶段)中已经分析了MapReduce的运…

ASP.NET Core+Element+SQL Server开发校园图书管理系统(二)

随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NET Core也应运而生。本文主要基于ASP.NET CoreElementSql Server开发一个校园图书管理系统为例,简述基于MVC三层架构开发的常见知识点,前一篇文章&#xf…

Linux C编程一站式学习笔记6

Linux C编程一站式学习笔记 chap6 循环结构 文章目录Linux C编程一站式学习笔记 chap6 循环结构一.while语句递归 VS 循环函数式编程(Functional Programming) & 命令式编程(Imperative Programming)无限递归 & 无限循环习…

光流估计(二) FlowNet 系列文章解读

在上篇文章中,我们学习并解了光流(Optical Flow)的一些基本概念和基本操作,但是传统的光流估计方法计算比较复杂、成本较高。近些年来随着CNN卷积神经网络的不断发展和成熟,其在各种计算机视觉任务中取得了巨大成功&am…

docker-基础实战第六课镜像挂载

镜像挂载: docker run --namemynginx -d --restartalways -p 8088:80 -v /usr/local/docker/data/html:/usr/share/nginx/html:ro nginx访问403 原因: /usr/local/docker/data/html 没有创建index.html 需要创建目录并且创建index.html docker命令补充: 如果有一…

向QAbstractItemView子类如:QTreeView、QTableView等子项单元格插入窗体小部件的功能实现(第1种方法)

1.前言 工作中经常会遇到这样的需求:向QAbstractItemView子类如QTreeView、QTableView单元格插入窗体小部件,如:进度条、按钮、单行编辑框等。下面链接的系列博文就是讲解如何实现该功能的。《向QAbstractItemView子类如:QTreeView、QTableVi…