线性模型-分类

一、线性判别分析LDA

线性判别分析是一种经典的线性学习方法,在二分类问题上最早是Fisher提出的,亦称为Fisher判别分析。

Fisher判别分析是一种用于降维和分类的统计方法,旨在找到可以最好区分不同类别的特征。它基于类内方差和类间方差的比值来选择最佳的投影方向,从而实现数据的最佳分类

思想:将训练集的样本投影到一条直线上,使得正类和反类投影在直线上的距离尽可能的分开。当测试集的样本被投影到直线上的时候,通过观察他的位置就可以知道该测试集的样本属于哪一类。

示意图

"+ "、 "-  "分别代表正 例和反例,椭圆表 示数据 簇的 外轮 廓,虚 线表示投 影, 红色实心圆和实心三 角形分 别表示两类 样本投影 后的中心点.

给定一个数据集D={xi,yi},Xi,μi,Σi分别表示例数集合,均值向量、协方差矩阵

投影之后再直线上的两类样本的中心点就是wTμ0和wTμ1,协方差:wTΣ0w,wTΣ1w

因为投影改变了数据的分布,所以协方差会随之改变。

就像我们之前讲到了,希望他们同类别的更接近,不同类别的就远离。其实就是最大化类中心之间的距离,最小化他们的协方差。这两个我们同时考虑的话。

将其定义为:

①类内散度矩阵

②类间散度矩阵

现在LDA就想要最大化目标Sb和Sw。

也叫做Sb与Sw的‘广义瑞利商’

如何确定w?

先介绍一下拉格朗日乘子法

我的理解就是:有变量,以及对于发原函数,有约束,求偏导,即求最优解

下面是对w的求解

在求解Sw的时候会使用到奇异值的分解

对于奇异值分解不太理解的可以参考这个

降维算法之奇异值分解SVD7000字长文,看这一篇就够了!_奇异值分解降维-CSDN博客

二、多分类LDA

新定义了一个St,全局散度矩阵

同样的要求解W

这里采用的是优化目标

tr(·):代表矩阵的迹,是矩阵的主对角线上元素的总和。

对于多分类LDA的话就是将N个类别的投影到N-1个维度上,实现一个降维

因此,被视为一种经典的降维技术。

三、多分类学习 

利用2分类策略解决多分类问题。

多分类学习的基本思路就是“拆解法“。最经典的有三种:一对一(O vs O),一对多(O vs R),多对多(M vs M).讲到这里,说不定你可以想到之前我们学过的也是类似分割的方法,对于模型评估那一块:有留出法、K折交叉验证法、自助法。

3.1 O vs O

将N个类别两两配对,看作排列组合就是\binom{2}{N},那么就会产生N(N-1)/2个二分类任务。

最终得到N(N-1)/2个分类结果,最终结果通过投票产生,即把预测的最多的类别作为最终分类结果

3.2 O vs R 

将每一个类的样例作为正例,所有其他类的样例作为反类,训练N个分类器,在测试时若有一个分类器预测为正类,则对应的类别标记作为最终的分类结果。丢进去一个样本,若有多个分类器预测为正类,则通常考虑分类器的阈值置信度,选择置信度最大的类别标记作为分类结果。如上图。

其中,OVR需要训练N个分类器,但是OVO,却要训练N(N-1)/2个人分类器。因此一对一的存储开销和测试时间开销通常比一对多的更大,但是在训练的时候,一对多的每个分类器会使用全部的训练样本,而一对一的仅用到两个类的样本,因此在类别很多的时候,一对一的训练时间开销通常比一对多的 小。至于预测性能则却决于具体的数据分布,在多数情形下两者差不多。

3.3 M vs M 

是每次将若干个类作为正类,若干个类作为反类。

但是多对多的正类和反类必须要有特殊的设计、不能随意的选取,在这里我们就介绍一种技术

纠错输出码(ECOC)

第一步:编码:

对N个类别做M次划分,每次划分将一部分类别作为正类,一部分作为反类,从而形成一个二分类发训练集,一共产生M个训练集,可以训练出M个分类器

第二部:解码:

M个分类器分别对测试样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别各自的编码进行比较,放回其中距离最小的类别作为最终预测结果

类别划分通过“编码矩阵“指定,编码矩阵有多种形式,常见的主要有——二元编码、三元编码前者将每个类别分别指定为正类和反类,后者在正类和反类之外,还指定了一个停用类。

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

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

相关文章

Polar Web【简单】uploader

Polar Web【简单】uploader Contents Polar Web【简单】uploader思路EXP运行&总结 思路 本题的重点仍是文件上传,只是期间需要加上一步自主的文件上传。 打开环境,审查代码,发现在上传文件之后会自动生成一个以MD5散列值命名的目录&#…

COMPUTEX 2024 国际电脑展即将举行,英伟达宣布将Copilot+引入RTX系列设备,赋能游戏本AI助理

COMPUTEX 2024 国际电脑展即将于2024年6月4日至7日在台北南港展览馆1馆及2馆盛大举行。作为业界瞩目的盛会,本次展会不仅吸引了全球各地的科技爱好者,更迎来了AMD CEO苏姿丰博士和NVIDIA首席执行官黄仁勋的精彩演讲。 在展会的开幕之际,图形…

查看服务器端口是否打开,如何查看服务器端口是否打开

查看服务器端口是否打开,是确保服务器正常运行和网络通信畅通的关键步骤。以下是几个有力的方法,帮助你快速、准确地判断端口状态。 首先,你可以使用telnet命令来检测端口的连通性。telnet是一个网络协议,可以用于远程登录和管理网…

如何将 MySQL 数据库共享给他人?

文章目录 共享所有数据库给他人1. 连接到 MySQL 数据库2. 选择要使用的数据库3. 修改连接所需的 host4. 刷新权限 共享部分数据库给他人1. 创建用户2. 授权3. 刷新权限 结语 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是I…

张大哥笔记:高考,万人过独木桥,你怕不怕摔倒?

今天刷到一个新闻:宁夏煤业计划招600名挖煤的井下操作工,要求大学学历!结果却吸引了7900人来报名!我都惊呆了,什么时候挖煤都要求这么高的学历了,那读书到底起啥作用! 如果一个人读书读到大学后…

1.Rust安装

目录 一、安装1.1 在Windows上安装1.2 在Linux下安装 二、包管理工具三、Hello World3.1 安装IDE3.2 输出Hello World 一、安装 1.1 在Windows上安装 点击页面 安装 Rust - Rust 程序设计语言 (rust-lang.org),选择"下载RUSTUP-INIT.EXE(64位)&qu…

Vue——子级向父级使用props传递数据(函数)

文章目录 前言原理案例效果演示 前言 看到这个标题,相信很多人会说我,你之前博客写的父级向子级中传递数据使用的是props,然后说的子级向父级传递数据则是用的$emit。 并且还说了对于String、数组Array,只能是父级使用props传递…

矩阵链相乘(动态规划法)

问题分析 矩阵链相乘问题是一个经典的动态规划问题。给定一系列矩阵,目标是找到一种最优的乘法顺序,使得所有矩阵相乘所需的标量乘法次数最少。矩阵链相乘问题的关键在于利用动态规划来避免重复计算子问题。 算法设计 定义子问题:设 &…

HTTP-一

一、超文本传输 1. 文本传输 > 字符串(能在utf8/gbk等码表上找到合法字符) 2. 超文本传输 > 不仅仅是字符串,还可以携带一些图片,特殊得格式 HTML 3. 富文本 word http0.9 -> http1.0 -> http1.1 -> http2.0 -> http3.0 http1.0是主流版本 2.0 和…

redis安裝启动

1、下载redis解压 https://github.com/tporadowski/redis/releases 2、打开cmd,切换到解压的文件夹 3、redis-server.exe redis.windows.conf 启动redis redis可通过命令行输入config set requirepass password和直接修改redis.config文件中修改 requirepass 来设…

英伟达再创历史,市值超越苹果,跃居全球第二大上市公司

进入2024年,英伟达股价依然突飞猛进。 今天凌晨,英伟达凭借其在AI领域强劲的创新能力和市场势头,达成了历史性的里程碑——市值首次突破3万亿美元,成功超越苹果,成为全球市值第二大上市公司。 排名仅次于微软。 英伟达…

f1c100s 荔枝派 系统移植

一。交叉编译环境配置 1.1下载交叉工具链:https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/ 1.2解压安装 在home目录下新建 工程目录:mkdir f1c100s_project 将windows下的gcc-linaro-7.2.1-2017.11-x86…

二叉搜索树(BST,Binary Search Tree)

目录 前言 一、二叉搜索树概念 二、二叉搜索树的实现与操作 1.查找 2.插入 3.删除 4.中序遍历 5.完整代码 三、二叉搜索树的应用(K模型、KV模型) 1.K模型 2.KV模型 3.完整代码 四、二叉搜索树的性能分析 前言 为何学? 1.二叉…

我的python管理

目前环境 Anaconda:python3.9 python2.7 IDA:python3.8 pycharm:?? 以后应该会补吧… 因为某些文件似乎用的python2决定整个python2 安装python2.7 打开anaconda命令行输入 conda create --name python27 python2…

JAVAEE值网络编程(2)_TCP流套接字及通信模型、TCP网络编程及代码实例

前言 在上一节内容中,我们介绍了什么是套接字,以及使用UDP数据报套接字网络编程, 最后我们还介绍了Java数据报套接字通信模型以及相关代码实例。在这一节我们将会介绍TCP流套接字编程。 一、流套接字及通信模型 1.1 TCP套接字 TCP&#xff0…

云计算-高级云资源配置(Advanced Cloud Provisioning)

向Bucket添加公共访问(Adding Public Access to Bucket) 在模块5中,我们已经看到如何使用CloudFormation创建和更新一个Bucket。现在我们将进一步更新该Bucket,添加公共访问权限。我们在模块5中使用的模板(third_templ…

内网安全--隧道技术代理技术

注:本文仅做技术交流,请勿非法破坏... 目录 项目: 1-Ngrok 用法 2-Frp 用法 3-Nps 用法 4-Spp 用法 工具: windows下: Proxifier(推荐~) Sockscap ccproxy Linux下: Proxychains 用法 http://t.csdnimg.cn/88Ew7 隧道技术:解决不出网协议上线的问…

TikTok运营必看|7大广告类型及特点

TikTok广告是品牌或创作者付费向特定目标受众展示的推广内容(通常是全屏视频)。TikTok 上的广告是一种社交媒体营销形式,通常旨在提高广告商的知名度或销售特定产品或服务。 就 TikTok广告投放而言,其组织层级分为三个层级&#x…

【Java】static 修饰成员方法

static 修饰成员方法 简介 应用 static 修饰成员方法 1.static 修饰成员方法2.内存原理3.main函数4.类方法的应用 1.static 修饰成员方法 测试类: package suziguang_d2_staticdemo;public class Test {public static void main(String[] args) {// 1.类方法使用/…

【成品设计】基于USB接口的指纹图像采集与处理系统设计

《基于USB接口的指纹图像采集与处理系统设计》 所需器件: STM32F429阿波罗开发板。ATK-AS608 模块指纹识别模块。USB转TTL模块。 整体功能: 实现指纹的采集录入。实现指纹的对比,并展示对比结果,用LED灯和蜂鸣器提示。指纹信息…