zoukankan      html  css  js  c++  java
  • 特征选择(一)- 维数问题与类内距离

    原文地址:http://blog.csdn.net/ycheng_sjtu/article/details/25343043

    什么是特征选择?

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

    特征选择的任务

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

  • 相关阅读:
    【转载】java调用C++写的DLL
    【转载】Java实现word转pdf
    【原创】由一件匪夷所思的事情所想到的
    【原创】不定字段的数据库表设计思路
    【原创】IBM Websphere 报错:JSPG0120E: 为 pageEncoding 属性和匹配 URI 模式的配置元素指定不同的值是非法的。
    weblogic <BEA-000438>
    svn报错 400 Bad Request
    实习技术知识点
    重写HashMap
    QUnit利用代理测试不同PHP开发服务器的json服务
  • 原文地址:https://www.cnblogs.com/stevenlk/p/6543496.html
Copyright © 2011-2022 走看看