什么是特征选择?

简单说,特征选择就是降维。

特征选择的任务

就是要从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变换。

欢迎参与讨论并关注本博客和微博以及知乎个人主页,后续内容继续更新哦~

转载请您尊重作者的劳动,完整保留上述文字以及本文链接,谢谢您的支持!

特征选择(一)-维数问题与类内距离相关推荐

  1. 数学-线性代数3(相关性、基、维数、四个基本子空间)

    目录: 九.线性相关性.基.维数 1.线性无关与线性相关 1)背景知识   2)线性无关与线性相关   3)零空间的作用   4)生成空间 2.基 3.维数 4.总结 ---------------- ...

  2. 分类问题中的“维数灾难” - robotMax

    分类问题中的"维数灾难" - robotMax 在看机器学习的论文时,经常会看到有作者提到"curse of dimensionality",中文译为" ...

  3. k 最近邻_k最近邻与维数的诅咒

    k 最近邻 机器学习模型和维数的诅咒 (Machine Learning models and the curse of dimensionality) There is always a trade ...

  4. C++知识点杂记1——typedef、static_cast、const_cast、遍历二维数组、聚合类

    1.typedef typedef一般是对某种类型的类型别名(不是变量别名) typedef double db;void mixtypename() {db d=1.2;cout<<d& ...

  5. javascript二维数组转置_VBA数组拆分及维数的转换

    不以物喜,不以己悲,看庭前花开花落,宠辱不惊.淡然,是人生的最高境界,是对人生的态度,是一种风度,一种力量,一种原则.淡若清风,是现在需要的态度.静下心,为后疫情时代做知识的储备,后疫情时代将演绎一场 ...

  6. 机器学习笔记之降维(一)维数灾难

    机器学习笔记之降维--维数灾难 引言 回顾:过拟合 维度灾难 从数值角度观察维数灾难 从几何角度观察维度灾难 示例1 示例2 引言 本节将介绍降维算法,并介绍降维算法的相关背景. 回顾:过拟合 我们在 ...

  7. 毕设前期准备——调制信号+聚类+信号预处理+类内类间识别+星座图模块

    确定相关指标 1.调制信号的确定 2.聚类 3.信号预处理 1.码元速率估计 2.定时估计 4.类间和类内识别 5.星座图模块 1.调制信号的确定 不同的识别算法通过提取不同的特征值,适用的信号种类也 ...

  8. 生成二维码、识别二维码的工具类

    笔者日常: 第一次用markdown写文章,有点手生~ 声明: 此工具类由本人二次整理改造后分享给大家,原编写者未知,虽然本人重写了大部分逻辑代码,但是核心部分仍然是采用的原来的代码.若涉及侵权问题, ...

  9. c语言中二维数组中维数的计算,数组指针字符串C语言程序设计-第4章.ppt

    <数组指针字符串C语言程序设计-第4章.ppt>由会员分享,可在线阅读,更多相关<数组指针字符串C语言程序设计-第4章.ppt(132页珍藏版)>请在人人文库网上搜索. 1.程 ...

最新文章

  1. P4588 [TJOI2018]数学计算(线段树维护区间乘和单点修改)
  2. MYSQL 密码相关记录
  3. 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2
  4. linux改英语环境,CentOS6.8中/英文环境切换教程图解
  5. 机器学习中val_小波变换(七):小波变换在机器学习中的应用(下)
  6. ubuntu 安装 evpp
  7. RabbitMQ 高可用集群搭建及电商平台使用经验总结
  8. jzoj3059-雕塑【容斥,数论】
  9. origin怎么打开txt文本_【每日一学】差示扫描量热法(DSC)测量材料的比热容(3在Origin软件中计算间接法测得比热容的方法)...
  10. Oracle笔记-USRS01.DBF文件过大,解决办法
  11. mysql的入门基础操作
  12. 密码必须至少为6个字符_1081 检查密码 (15分)
  13. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·004【标识列、外键、复制表】
  14. 为什么索引可以让查询变快?终于有人说清楚了!
  15. react-native-router-flux 页面跳转与传值
  16. endnotex8使用教程_EndnoteX8快速使用详细步骤
  17. 我和我的项目之整合腾讯云短信SDK
  18. 如何成为一个AI产品经理?
  19. javaSE之多线程vip插队
  20. OA之我的会议(会议排座送审)

热门文章

  1. 传统运动物体检测方法的Python实现
  2. Spark程序使用Scala进行单元测试
  3. 《当下即是生活》季羡林——读书笔记
  4. 活动报道 | 四家香港科大EMBA校友所在企业荣登“中国卓越管理公司”第三届榜单...
  5. 1646 获取生成数组中的最大值
  6. 无线传感器网络的时钟同步估计问题(Matlab代码实现)
  7. BigGAN代码解读(gpt3.5帮助)——生成器部分
  8. Hbase Coprocessor(协处理器)的使用
  9. idea 导入别人的项目后,显示包的名称错误does not correspond to the file path
  10. 实现Vue的登录页面