【机器学习4】降维

news2024/12/23 10:42:53

常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。

1 PCA最大方差角度理解

PCA无监督学习算法。
PCA的目标, 即最大化投影方差, 也就是让数据在主轴上投影的方差最大。
在这里插入图片描述
在黄线所处的轴上, 数据分布得更为分散, 这也意味着数据在这个方向上方差更大。 在信号处理领域, 我们认为信号具有较大方差, 噪声具有较小方差, 信号与噪声之比称为信噪比。 信噪比越大意味着数据的质量越好。
在这里插入图片描述

在这里插入图片描述
其实就是样本协方差矩阵,我们将其写作Σ,由于ω是单位方向向量, 即有ωTω=1。要求解投影后方差最大化问题, 可表示为:
在这里插入图片描述在这里插入图片描述x投影后的方差就是协方差矩阵的特征值。 我们要找到最大的方差也就是协方差矩阵最大的特征值, 最佳投影方向就是最大特征值所对应的特征向量。 得到以下PCA的求解方法:

( 1) 对样本数据进行中心化处理。
( 2) 求样本协方差矩阵。
( 3) 对协方差矩阵进行特征值分解, 将特征值从大到小排列。
( 4) 取特征值前d大对应的特征向量ω1,ω2,…,ωd, 通过以下映射将n维样本映
射到d维:
在这里插入图片描述新的xi′的第d维就是xi在第d个主成分ωd方向上的投影, 通过选取最大的d个特征值对应的特征向量, 我们将方差较小的特征( 噪声) 抛弃, 使得每个n维列向量xi被映射为d维列向量xi′, 定义降维后的信息占比为:
在这里插入图片描述

2 PCA最小平方误差角度理解

从求解直线的思路出发, 很容易联想到数学中的线性回归问题, 其目标也是求解一个线性函数使得对应直线能够更好地拟合样本点集合。 如果我们从这个角度定义PCA的目标, 那么问题就会转化为一个回归问题。即把样本点投影到最佳直线, 最小化的就是所有点到直线的距离平方之和。
在这里插入图片描述
PCA要优化的目标为:
在这里插入图片描述在这里插入图片描述
进行推导:
在这里插入图片描述
因此原来的式子可以表示为:

在这里插入图片描述
这等价于求解带约束的优化问题:
在这里插入图片描述
如果我们对W中的d个基 依次求解, 就会发现和最大方差理论的方法完全等价。 比如当d=1时, 我们实际求解的问题是:
在这里插入图片描述
最佳直线ω与最大方差法求解的最佳投影方向一致, 即协方差矩阵的最大特征值所对应的特征向量, 差别仅是协方差矩阵Σ的一个倍数, 以及常数.但这并不影响我们对最大值的优化。

3 线性判别分析LDA

LDA有监督学习算法。最大化类间距离、 最小化类内距离。

在PCA中, 算法没有考虑数据的标签(类别) , 只是把原数据映射到一些方差比较大的方向上而已。

在这里插入图片描述
在这里插入图片描述从这里我们可以看出, 我们最大化的目标对应了一个矩阵的特征值, 于是LDA降维变成了一个求矩阵特征向量的问题。 J(ω)就对应了矩阵 Sw−1SB最大的特征值, 而投影方向就是这个特征值对应的特征向量。换句话说, 我们只需要求样本的均值和类内方差, 就可以马上得出最佳的投影方向ω。

4LDA和PCA区别与联系

从目标出发, PCA选择的是投影后数据方差最大的方向。 由于它是无监督的, 因此PCA假设方差越大, 信息量越多, 用主成分来表示原始数据可以去除冗余的维度, 达到降维。 而LDA选择的是投影后类内方差小、 类间方差大的方向。 其用到了类别标签信息, 为了找到数据中具有判别性的维度, 使得原始数据在这些方向上投影后, 不同类别尽可能区分开。

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

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

相关文章

Jekyll框架编译GithubPages,提示没有docs

Jekyll Converters::Scss build issue: No such file or directory dir_chdir - /github/workspace/docs Error: No such file or directory dir_chdir - /github/workspace/docs 解决方案: 修改github page仓库中–> 设置—> pages 把里面的\docs&#xf…

【星海出品】flask 与docker

import os from flask import Flask, request from flask import Response, make_response, jsonify import cv2 import base64 import io import uuid from main import eye ​ app Flask(__name__)​ app.route(/, methods[GET, POST]) # 添加路由blend def upload_file():…

2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)

Express 框架概述 Express 是一个基于 Node.js 平台的快速、开放、极简的Web开发框架。它本身仅仅提供了 web 开发的基础功能,但是通过中间件的方式集成了外部插件来处理HTTP请求,例如 body-parser 用于解析 HTTP 请求体,compression 用于压…

dgl安装教程

我在矩池云服务器上安装了一个dgl的环境,以后都可以用这个了 首先我的基础环境是 最终的版本如下 安装步骤如下 pip install dgl0.9.1 -f https://s3.us-west-2.amazonaws.com/dgl-data/wheels/cu113/repo.html注意不能直接使用 pip install dgl -f https://s…

Nginx网关配置

安装Nginx 下载最新版本Nginx nginx: download 解压 双击nginx.exe启动 浏览器访问 localhost 看到如下界面 微服务准备 准备两个服务,例如:product微服务和order微服务 分别启动后,访问相应服务接口 product服务 http://localhost:9001/…

detectron2环境搭建及自定义coco数据集(voc转coco)训练

detectron2建议ubuntu进行环境搭建,Windows大概率报错 一 环境搭建 创建虚拟环境 conda create -n detectron2 python3.8 -y conda activate detectron2后面下载源代码建议存到git中再git clone git clone https://github.com/facebookresearch/detectron2.git …

王道p40 1.设计一个递归算法,递归删除单链表L中所有值为x的结点(c语言)

视频讲解在这里:👇 p40 第1题 王道数据结构课后代码题c语言代码实现_哔哩哔哩_bilibili 本题代码如下 void delete(linklist* L,int x)//递归删除x {if((*L)->next! NULL){if ((*L)->next->data x)//找到x{lnode* p (*L)->next;(*L)-&…

【第2章 Node.js基础】2.2 Node.js回调函数

学习目标 (1)理解Node.js的回调函数; (2)掌握回调函数的使用。 什么是回调函数 回调函数是一种特殊的函数,它作为参数传递给另一个函数,并在特定的事件或条件发生时被调用。回调函数通常用于异…

FreeRTOS学习笔记——SysTick中断

FreeRTOS学习笔记——SysTick中断_freertos tick中断-CSDN博客 FreeRTOS 之六 任务调度原理解析(Systick、PendSV、SVC)_freertos m0-CSDN博客 FreeRTOS中关于时间的管理分为两部分:一部分是任务的延时管理;前面叙述过一些,还有…

找不到d3dx9_43.dll怎么办?解决d3dx9_43.dll丢失的5个方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到d3dx9_43.dll”。这个错误通常出现在运行某些游戏或应用程序时,它是由于缺少DirectX组件中的d3dx9_43.dll文件所引起的。那么,当我们遇到这个问题时&#xff…

JWT 使用入门(三)请求流程

文章目录 1、前后端使用JWT详细步骤2、前后端使用JWT详情图3、从流程中看优点与缺点3.1 优点3.2 缺点 之前在第一篇中提到过其使用流程,以下讲的是第二种:https://blog.csdn.net/qq_37534947/article/details/132066909 但是JWT主要作用应该应用于以下&a…

Android sqlite 使用简介

进行Android应用开发时经常会用到数据库。Android系统支持sqlite数据库,在app开发过程中很容易通过SQLiteOpenHelper使用数据库,SQLiteOpenHelper依赖于Context对象,但是基于uiatomator1.0和Java程序等无法获取Context的应用如何使用数据库呢…

SAP实现文本框多行输入(类cl_gui_textedit)

先看效果,在输入框先来一段《赤壁赋》 然后点击 ‘保存输出’按钮,就能把输入内容从表里读取并输出来 源代码: *&---------------------------------------------------------------------* *& Report ZCYCLE060 *&---------…

如何避免JavaScript中的内存泄漏?

前言 过去,我们浏览静态网站时无须过多关注内存管理,因为加载新页面时,之前的页面信息会从内存中删除。 然而,随着单页Web应用(SPA)的兴起,应用程序消耗的内存越来越多,这不仅会降低…

13 套接字Socket

1、Socket 编程 socket编程基于 TCP 和 UDP 协议的tcp和udp是区分客户端和服务端的,所以我们的socket编程也是区分的。 2、socket是端到端的通信 1.Socket 这个名字很有意思,可以作插口或者插槽讲 2.一头插在客户端,一头插在服务端&#x…

阿里云双11优惠活动:2核2G3M云服务器1年99元,新老用户均可购买!

阿里云双11优惠活动正在火热进行中,阿里云推出了一款特价云服务器ECS,2核2G3M的配置1年仅需99元,新老用户均可购买,新购、续费同价! 活动入口:传送门>>> 活动详情: 云服务器ECS&#…

Bitget Wallet:使用 Base 链购买 ETH 的简明教程

Base 链是一种 Layer 2(L2)公链,它可以为用户提供以太坊(ETH)代币,而 Bitget Wallet 是一款多功能加密货币钱包,支持 Base 链以及其他主要区块链。

三天打鱼两天晒网

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 前言 本系列为选择结构编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 二、题目分析 三、解题 程序运行代码 #include<stdio.h> int main(){int n;scanf("%d",&n);i…

MySQL进阶_1.逻辑架构和SQL执行流程

文章目录 第一节、逻辑架构剖析1.1、服务器处理客户端请求1.2、Connectors1.3、第1层&#xff1a;连接层1.4、第2层&#xff1a;服务层1.5、 第3层&#xff1a;引擎层1.6、 存储层1.7、小结 第二节、SQL执行流程2.1、查询缓存2.2、解析器2.3、优化器2.4、执行器 第三节、数据库…

MySQL的安装使用(入学篇)

目录 1 MySQL安装 1.1 安装epel源 1.2 安装MySQL Repository 1.3 安装MySQL官方yum源 1.4 安装服务端、客户端 1.5 启动MySQL服务 2 MySQL 使用 2.1 获取初始登录密码 2.2 登录MySQL数据库 2.3 修改密码 2.4 退出数据库 2.5 使用新密码登录数据库 2.6 重启数据库 2.7 创建数据…