当前位置: 首页 > news >正文

线性模型-分类

一、线性判别分析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.lryc.cn/news/364931.html

相关文章:

  • OpenAI前董事会成员称Sam Altman因 “ 向董事会撒谎 ” 而被解雇
  • 【启明智显分享】WIFI6开发板ZX6010:开源OpenWrt SDK,接受定制!
  • C语言能否使⽤ fflush( ) 函数清除多余的输⼊?
  • 如何把试卷上的字去掉再打印?分享三种方法
  • Android开机动画压缩包zip,自制开机动画(基于Android10.0.0-r41)
  • 手机站怎么推广
  • Mysql疑难报错排查 - Field ‘XXX‘ doesn‘t have a default value
  • YOLOv8_obb预测流程-原理解析[旋转目标检测理论篇]
  • 02JAVA字符串和集合
  • Qt如何让按钮的菜单出现在按钮的右侧
  • C++的类和new和delete和菱形继承机制
  • Redis教程(二十二):Redis的过期删除和缓存淘汰策略
  • Lodop 实现局域网打印
  • HarmonyOS(二十四)——Harmonyos通用事件之触摸事件
  • 2024-前端面试的正确打开方式(GitHub火爆场景题剖析)
  • Vue3项目炫酷实战,检测密码强度值
  • PHP实现抖音小程序用户登录获取openid
  • Linux进程无法被kill
  • MySQL binlog三种模式
  • 【CentOS 7】挑战探索:在CentOS 7上实现Python 3.9的完美部署指南
  • oracle删除表空间和用户命令
  • 企业微信hook接口协议,ipad协议http,获取未发送群发列表
  • oracle中的INTERVAL函数学习总结
  • 爬虫(没)入门:用 node-crawler 爬取 blog
  • GAMES104笔记
  • ARM功耗管理架构演进及变迁
  • ARM-V9 RME(Realm Management Extension)系统架构之系统能力的设备隔离和保护
  • 如何为律师制作专业的商务名片?含电子名片二维码
  • 方案设计|汽车轮胎数显胎压计方案
  • MySQL学习——选项文件的使用