特征选择(一)-维数问题与类内距离
什么是特征选择?
简单说,特征选择就是降维。
特征选择的任务
就是要从n维向量中选取m个特征,把原向量降维成为一个m维向量。但是降维必须保证类别的可分离性或者说分类器的性能下降不多。
注意降维具有片面性,算法并不普适。常常会有失效发生。
降维这件小事
在图像处理中叫做图像压缩、特征提取。重在最优区分(可分离性)。
在模式识别中叫做特征选择。重在最优描述(保真性)。
降维的基本思想
就是找一个线性变换使得原来的n维观察值变成了
这样维数就下降了,只是要求不能明显降低类别的可分离性就好。本文介绍的都是线性变换。
为什么要降维?
1.有可能当你使用某个特征就能进行很好的分类,譬如一个二维问题很可能变成一维也可以分类,如图1所示,把原来的样本向y轴投影就好了,用一个y分量就能完成分类。可见降维确实很有用,关键在于如何找到像y方向这么好的特征呢?
图1
2.当特征的维数上升后,样本的可分离性自然是会增加。但是,类别的可分离性和分类器的性能是完全不同的两码事。
G.F.Hughes给出了错误率跟每次试验中的训练样本数n和特征空间块数M之间的关系曲线,如图2所示。
图2
其中d为维数,l是每维分为的段数。则特征空间块数
由图可见随着维数的继续增加,错误率会持续上升。我们不能盲目增加维数来想当然提高分类性能。
3.维与维之间不一定是独立的,可能因为相关性而存在冗余。
4.维数大了计算量存储量就大了嘛。
用什么分类?
还是用距离。
点到点
设k为每个点的分量的下标,则点a到点b之间的距离为:
点到点集
假定点集内共有K个点,表示点集中第i个点的第k个分量:
类内距离
有一种定义类内距离的方法,它把类内所有点两两之间的距离的平均,作为类内距离。下面推导其表达式:
类内某点跟其他点之间的距离的平方:
再j令在集内变化,取平均,就得到类内距离,即:
由于和都取自同一类内,则有
各分量的方差的无偏估值为:
则有
这不是协方差的迹么?
于是得到结论:类内距离为类协方差矩阵迹的2倍。
推论:某类样本的协方差矩阵的迹很小,则类内距离小,说明数据抱团,很紧凑。
于是你会想,降维其实就是找个变换,让变换后的数据各个类别抱团更加紧凑就好了。就是这样没错。
那么,怎么降维?
刚刚已经给出了类内距离的概念。
针对这个概念,有人从完全不同的两个角度给出了方法。
这就是聚类变换与K-L变换。
欢迎参与讨论并关注本博客和微博以及知乎个人主页,后续内容继续更新哦~
转载请您尊重作者的劳动,完整保留上述文字以及本文链接,谢谢您的支持!
特征选择(一)-维数问题与类内距离相关推荐
- 数学-线性代数3(相关性、基、维数、四个基本子空间)
目录: 九.线性相关性.基.维数 1.线性无关与线性相关 1)背景知识 2)线性无关与线性相关 3)零空间的作用 4)生成空间 2.基 3.维数 4.总结 ---------------- ...
- 分类问题中的“维数灾难” - robotMax
分类问题中的"维数灾难" - robotMax 在看机器学习的论文时,经常会看到有作者提到"curse of dimensionality",中文译为" ...
- k 最近邻_k最近邻与维数的诅咒
k 最近邻 机器学习模型和维数的诅咒 (Machine Learning models and the curse of dimensionality) There is always a trade ...
- C++知识点杂记1——typedef、static_cast、const_cast、遍历二维数组、聚合类
1.typedef typedef一般是对某种类型的类型别名(不是变量别名) typedef double db;void mixtypename() {db d=1.2;cout<<d& ...
- javascript二维数组转置_VBA数组拆分及维数的转换
不以物喜,不以己悲,看庭前花开花落,宠辱不惊.淡然,是人生的最高境界,是对人生的态度,是一种风度,一种力量,一种原则.淡若清风,是现在需要的态度.静下心,为后疫情时代做知识的储备,后疫情时代将演绎一场 ...
- 机器学习笔记之降维(一)维数灾难
机器学习笔记之降维--维数灾难 引言 回顾:过拟合 维度灾难 从数值角度观察维数灾难 从几何角度观察维度灾难 示例1 示例2 引言 本节将介绍降维算法,并介绍降维算法的相关背景. 回顾:过拟合 我们在 ...
- 毕设前期准备——调制信号+聚类+信号预处理+类内类间识别+星座图模块
确定相关指标 1.调制信号的确定 2.聚类 3.信号预处理 1.码元速率估计 2.定时估计 4.类间和类内识别 5.星座图模块 1.调制信号的确定 不同的识别算法通过提取不同的特征值,适用的信号种类也 ...
- 生成二维码、识别二维码的工具类
笔者日常: 第一次用markdown写文章,有点手生~ 声明: 此工具类由本人二次整理改造后分享给大家,原编写者未知,虽然本人重写了大部分逻辑代码,但是核心部分仍然是采用的原来的代码.若涉及侵权问题, ...
- c语言中二维数组中维数的计算,数组指针字符串C语言程序设计-第4章.ppt
<数组指针字符串C语言程序设计-第4章.ppt>由会员分享,可在线阅读,更多相关<数组指针字符串C语言程序设计-第4章.ppt(132页珍藏版)>请在人人文库网上搜索. 1.程 ...
最新文章
- P4588 [TJOI2018]数学计算(线段树维护区间乘和单点修改)
- MYSQL 密码相关记录
- 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2
- linux改英语环境,CentOS6.8中/英文环境切换教程图解
- 机器学习中val_小波变换(七):小波变换在机器学习中的应用(下)
- ubuntu 安装 evpp
- RabbitMQ 高可用集群搭建及电商平台使用经验总结
- jzoj3059-雕塑【容斥,数论】
- origin怎么打开txt文本_【每日一学】差示扫描量热法(DSC)测量材料的比热容(3在Origin软件中计算间接法测得比热容的方法)...
- Oracle笔记-USRS01.DBF文件过大,解决办法
- mysql的入门基础操作
- 密码必须至少为6个字符_1081 检查密码 (15分)
- 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·004【标识列、外键、复制表】
- 为什么索引可以让查询变快?终于有人说清楚了!
- react-native-router-flux 页面跳转与传值
- endnotex8使用教程_EndnoteX8快速使用详细步骤
- 我和我的项目之整合腾讯云短信SDK
- 如何成为一个AI产品经理?
- javaSE之多线程vip插队
- OA之我的会议(会议排座送审)
热门文章
- 传统运动物体检测方法的Python实现
- Spark程序使用Scala进行单元测试
- 《当下即是生活》季羡林——读书笔记
- 活动报道 | 四家香港科大EMBA校友所在企业荣登“中国卓越管理公司”第三届榜单...
- 1646 获取生成数组中的最大值
- 无线传感器网络的时钟同步估计问题(Matlab代码实现)
- BigGAN代码解读(gpt3.5帮助)——生成器部分
- Hbase Coprocessor(协处理器)的使用
- idea 导入别人的项目后,显示包的名称错误does not correspond to the file path
- 实现Vue的登录页面