精华内容
下载资源
问答
  • 特征选择与特征提取

    万次阅读 多人点赞 2019-03-02 15:09:05
    一、特征选择和特征提取 特征选择(feature selection)和特征提取(Feature extraction)都属于降维(Dimension reduction) 这两者达到的效果是一样的,就是试图去减少特征数据集中的属性(或者称为特征)的数目...

    一、特征选择和特征提取

      特征选择(feature selection)和特征提取(Feature extraction)都属于降维(Dimension reduction)

    这两者达到的效果是一样的,就是试图去减少特征数据集中的属性(或者称为特征)的数目;但是两者所采用的方式方法却不同。
    特征提取的方法主要是通过属性间的关系,如组合不同的属性得到新的属性,这样就改变了原来的特征空间。
    特征选择的方法是从原始特征数据集中选择出子集,是一种包含的关系,没有更改原始的特征空间。

    二、特征提取的主要方法:
          PCA,LDA,SVD等。(SVD本质上是一种数学的方法, 它并不是一种什么机器学习算法,但是它在机器学习领域里有非常广泛的应用)

    三、特征选择的方法
    1、Filter方法
          其主要思想是:对每一维的特征“打分”,即给每一维的特征赋予权重,这样的权重就代表着该维特征的重要性,然后依据权重排序。

          主要的方法有:Chi-squared test(卡方检验),ID3(信息增益),correlation coefficient scores(相关系数)

    2、Wrapper方法:
          其主要思想是:将子集的选择看作是一个搜索寻优问题,生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题,这里有很多的优化算法可以解决,尤其是一些启发式的优化算法,如GA,PSO,DE,ABC等,详见“优化算法——人工蜂群算法(ABC)”,“优化算法——粒子群算法(PSO)”。

          主要方法有:recursive feature elimination algorithm(递归特征消除算法)

    3、Embedded方法
          其主要思想是:在模型既定的情况下学习出对提高模型准确性最好的属性。这句话并不是很好理解,其实是讲在确定模型的过程中,挑选出那些对模型的训练有重要意义的属性。

          主要方法:正则化。如岭回归就是在基本线性回归的过程中加入了正则项。

    三、特征选择的目标
          引用自吴军《数学之美》上的一句话:一个正确的数学模型应当在形式上是简单的。构造机器学习的模型的目的是希望能够从原始的特征数据集中学习出问题的结构与问题的本质,当然此时的挑选出的特征就应该能够对问题有更好的解释,所以特征选择的目标大致如下:
          提高预测的准确性
          构造更快,消耗更低的预测模型
          能够对模型有更好的理解和解释

    最后总结之:

          特征提取是从杂乱无章的世界中,去到更高层的世界去俯瞰原始世界,你会发现很多杂乱无章的物理现象中背后暗含的道理是想通的,这时候你想用一个更加普世的观点和理论去解释原先的理论,这个是特征提取要做的事情。

          而你仍呆在原始世界中,只是想对现有的“取其精华,去其糟粕”,这个是所谓特征选择。只是对现有进行筛选。

          特征提取和特征选择统称为降维。(Dimension Reduction)

    参考文章:
    机器学习中的特征——特征选择的方法以及注意点
    数据降维(特征提取)和特征选择有什么区别?
    ---------------------

    转自:https://blog.csdn.net/u014593570/article/details/80137405

    展开全文
  • 特征提取与特征选择

    千次阅读 2017-10-18 03:07:23
    它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。  特征的定义   至今为止特征...
    特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。 

    特征的定义 
            至今为止特征没有万能和精确的定义。特征的精确定义往往由问题或者应用类型决定。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。因此特征提取最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。 
            特征提取是图象处理中的一个初级运算,也就是说它是对一个图像进行的第一个运算处理。它检查每个像素来确定该像素是否代表一个特征。假如它是一个更大的算法的一部分,那么这个算法一般只检查图像的特征区域。作为特征提取的一个前提运算,输入图像一般通过高斯模糊核在尺度空间中被平滑。此后通过局部导数运算来计算图像的一个或多个特征。 
           有时,假如特征提取需要许多的计算时间,而可以使用的时间有限制,一个高层次算法可以用来控制特征提取阶层,这样仅图像的部分被用来寻找特征。 
           由于许多计算机图像算法使用特征提取作为其初级计算步骤,因此有大量特征提取算法被发展,其提取的特征各种各样,它们的计算复杂性和可重复性也非常不同。 

    边缘 
            边缘是组成两个图像区域之间边界(或边缘)的像素。一般一个边缘的形状可以是任意的,还可能包括交叉点。在实践中边缘一般被定义为图像中拥有大的梯度的点组成的子集。一些常用的算法还会把梯度高的点联系起来来构成一个更完善的边缘的描写。这些算法也可能对边缘提出一些限制。 
            局部地看边缘是一维结构。 

    角 
            角是图像中点似的特征,在局部它有两维结构。早期的算法首先进行边缘检测,然后分析边缘的走向来寻找边缘突然转向(角)。后来发展的算法不再需要边缘检测这个步骤,而是可以直接在图像梯度中寻找高度曲率。后来发现这样有时可以在图像中本来没有角的地方发现具有同角一样的特征的区域。 

    区域 
           与角不同的是区域描写一个图像中的一个区域性的结构,但是区域也可能仅由一个像素组成,因此许多区域检测也可以用来监测角。一个区域监测器检测图像中一个对于角监测器来说太平滑的区域。区域检测可以被想象为把一张图像缩小,然后在缩小的图像上进行角检测。 

    脊 
            长条形的物体被称为脊。在实践中脊可以被看作是代表对称轴的一维曲线,此外局部针对于每个脊像素有一个脊宽度。从灰梯度图像中提取脊要比提取边缘、角和区域困难。在空中摄影中往往使用脊检测来分辨道路,在医学图像中它被用来分辨血管。 

    特征抽取 
            特征被检测后它可以从图像中被抽取出来。这个过程可能需要许多图像处理的计算机。其结果被称为特征描述或者特征向量。 
    常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。 


    一 颜色特征 
    (一)特点:颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜色特征不能很好地捕捉图像中对象的局部特征。另外,仅使用颜色特征查询时,如果数据库很大,常会将许多不需要的图像也检索出来。颜色直方图是最常用的表达颜色特征的方法,其优点是不受图像旋转和平移变化的影响,进一步借助归一化还可不受图像尺度变化的影响,基缺点是没有表达出颜色空间分布的信息。 
    (二)常用的特征提取与匹配方法 
    (1) 颜色直方图 
            其优点在于:它能简单描述一幅图像中颜色的全局分布,即不同色彩在整幅图像中所占的比例,特别适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。其缺点在于:它无法描述图像中颜色的局部分布及每种色彩所处的空间位置,即无法描述图像中的某一具体的对象或物体。 
             最常用的颜色空间:RGB颜色空间、HSV颜色空间。 
             颜色直方图特征匹配方法:直方图相交法、距离法、中心距法、参考颜色表法、累加颜色直方图法。 
    (2) 颜色集 
            颜色直方图法是一种全局颜色特征提取与匹配方法,无法区分局部颜色信息。颜色集是对颜色直方图的一种近似首先将图像从 RGB颜色空间转化成视觉均衡的颜色空间(如 HSV 空间),并将颜色空间量化成若干个柄。然后,用色彩自动分割技术将图像分为若干区域,每个区域用量化颜色空间的某个颜色分量来索引,从而将图像表达为一个二进制的颜色索引集。在图像匹配中,比较不同图像颜色集之间的距离和色彩区域的空间关系 
    (3) 颜色矩 
            这种方法的数学基础在于:图像中任何的颜色分布均可以用它的矩来表示。此外,由于颜色分布信息主要集中在低阶矩中,因此,仅采用颜色的一阶矩(mean)、二阶矩(variance)和三阶矩(skewness)就足以表达图像的颜色分布。 
    (4) 颜色聚合向量 
           其核心思想是:将属于直方图每一个柄的像素分成两部分,如果该柄内的某些像素所占据的连续区域的面积大于给定的阈值,则该区域内的像素作为聚合像素,否则作为非聚合像素。 

    (5) 颜色相关图 


    二 纹理特征 
    (一)特点:纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响,从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。 
            例如,水中的倒影,光滑的金属面互相反射造成的影响等都会导致纹理的变化。由于这些不是物体本身的特性,因而将纹理信息应用于检索时,有时这些虚假的纹理会对检索造成“误导”。 
            在检索具有粗细、疏密等方面较大差别的纹理图像时,利用纹理特征是一种有效的方法。但当纹理之间的粗细、疏密等易于分辨的信息之间相差不大的时候,通常的纹理特征很难准确地反映出人的视觉感觉不同的纹理之间的差别。

    (二)常用的特征提取与匹配方法 
      纹理特征描述方法分类 
    (1)统计方法统计方法的典型代表是一种称为灰度共生矩阵的纹理特征分析方法Gotlieb 和 Kreyszig 等人在研究共生矩阵中各种统计特征基础上,通过实验,得出灰度共生矩阵的四个关键特征:能量、惯量、熵和相关性。统计方法中另一种典型方法,则是从图像的自相关函数(即图像的能量谱函数)提取纹理特征,即通过对图像的能量谱函数的计算,提取纹理的粗细度及方向性等特征参数 
    (2)几何法 
            所谓几何法,是建立在纹理基元(基本的纹理元素)理论基础上的一种纹理特征分析方法。纹理基元理论认为,复杂的纹理可以由若干简单的纹理基元以一定的有规律的形式重复排列构成。在几何法中,比较有影响的算法有两种:Voronio 棋盘格特征法和结构法。 
    (3)模型法 
            模型法以图像的构造模型为基础,采用模型的参数作为纹理特征。典型的方法是随机场模型法,如马尔可夫(Markov)随机场(MRF)模型法和 Gibbs 随机场模型法 
    (4)信号处理法 
            纹理特征的提取与匹配主要有:灰度共生矩阵、Tamura 纹理特征、自回归纹理模型、小波变换等。 
            灰度共生矩阵特征提取与匹配主要依赖于能量、惯量、熵和相关性四个参数。Tamura 纹理特征基于人类对纹理的视觉感知心理学研究,提出6种属性,即:粗糙度、对比度、方向度、线像度、规整度和粗略度。自回归纹理模型(simultaneous auto-regressive, SAR)是马尔可夫随机场(MRF)模型的一种应用实例。 


    三 形状特征 

    (一)特点:各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③许多形状特征仅描述了目标局部的性质,要全面描述目标常对计算时间和存储量有较高的要求;④许多形状特征所反映的目标形状信息与人的直观感觉不完全一致,或者说,特征空间的相似性与人视觉系统感受到的相似性有差别。另外,从 2-D 图像中表现的 3-D 物体实际上只是物体在空间某一平面的投影,从 2-D 图像中反映出来的形状常不是 3-D 物体真实的形状,由于视点的变化,可能会产生各种失真。 
    (二)常用的特征提取与匹配方法 
    Ⅰ几种典型的形状特征描述方法 
            通常情况下,形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征。图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。 
    几种典型的形状特征描述方法: 
    (1)边界特征法该方法通过对边界特征的描述来获取图像的形状参数。其中Hough 变换检测平行直线方法和边界方向直方图方法是经典方法。Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法,其基本思想是点—线的对偶性;边界方向直方图法首先微分图像求得图像边缘,然后,做出关于边缘大小和方向的直方图,通常的方法是构造图像灰度梯度方向矩阵。 
    (2)傅里叶形状描述符法 
            傅里叶形状描述符(Fourier shape deors)基本思想是用物体边界的傅里叶变换作为形状描述,利用区域边界的封闭性和周期性,将二维问题转化为一维问题。 
            由边界点导出三种形状表达,分别是曲率函数、质心距离、复坐标函数。 
    (3)几何参数法 
            形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法(shape factor)。在 QBIC 系统中,便是利用圆度、偏心率、主轴方向和代数不变矩等几何参数,进行基于形状特征的图像检索。 
            需要说明的是,形状参数的提取,必须以图像处理及图像分割为前提,参数的准确性必然受到分割效果的影响,对分割效果很差的图像,形状参数甚至无法提取。 
    (4)形状不变矩法 
    利用目标所占区域的矩作为形状描述参数。 
    (5)其它方法 
            近年来,在形状的表示和匹配方面的工作还包括有限元法(Finite Element Method 或 FEM)、旋转函数(Turning )和小波描述符(Wavelet Deor)等方法。 


    Ⅱ 基于小波和相对矩的形状特征提取与匹配 
            该方法先用小波变换模极大值得到多尺度边缘图像,然后计算每一尺度的 7个不变矩,再转化为 10 个相对矩,将所有尺度上的相对矩作为图像特征向量,从而统一了区域和封闭、不封闭结构。 


    四 空间关系特征 

    (一)特点:所谓空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间位置,但表达相对空间位置信息常比较简单。 
            空间关系特征的使用可加强对图像内容的描述区分能力,但空间关系特征常对图像或目标的旋转、反转、尺度变化等比较敏感。另外,实际应用中,仅仅利用空间信息往往是不够的,不能有效准确地表达场景信息。为了检索,除使用空间关系特征外,还需要其它特征来配合。 
    (二)常用的特征提取与匹配方法 
            提取图像空间关系特征可以有两种方法:一种方法是首先对图像进行自动分割,划分出图像中所包含的对象或颜色区域,然后根据这些区域提取图像特征,并建立索引;另一种方法则简单地将图像均匀地划分为若干规则子块,然后对每个图像子块提取特征,并建立索引。 
    姿态估计问题就是:确定某一三维目标物体的方位指向问题。姿态估计在机器人视觉、动作跟踪和单照相机定标等很多领域都有应用。 
            在不同领域用于姿态估计的传感器是不一样的,在这里主要讲基于视觉的姿态估计。 
            基于视觉的姿态估计根据使用的摄像机数目又可分为单目视觉姿态估计和多目视觉姿态估计。根据算法的不同又可分为基于模型的姿态估计和基于学习的姿态估计。 


    一基于模型的姿态估计方法 

            基于模型的方法通常利用物体的几何关系或者物体的特征点来估计。其基本思想是利用某种几何模型或结构来表示物体的结构和形状,并通过提取某些物体特征,在模型和图像之间建立起对应关系,然后通过几何或者其它方法实现物体空间姿态的估计。这里所使用的模型既可能是简单的几何形体,如平面、圆柱,也可能是某种几何结构,也可能是通过激光扫描或其它方法获得的三维模型。 
            基于模型的姿态估计方法是通过比对真实图像和合成图像,进行相似度计算更新物体姿态。目前基于模型的方法为了避免在全局状态空间中进行优化搜索,一般都将优化问题先降解成多个局部特征的匹配问题,非常依赖于局部特征的准确检测。当噪声较大无法提取准确的局部特征的时候,该方法的鲁棒性受到很大影响。 


    二基于学习的姿态估计方法 
            基于学习的方法借助于机器学习(machine learning)方法,从事先获取的不同姿态下的训练样本中学习二维观测与三维姿态之间的对应关系,并将学习得到的决策规则或回归函数应用于样本,所得结果作为对样本的姿态估计。基于学习的方法一般采用全局观测特征,不需检测或识别物体的局部特征,具有较好的鲁棒性。其缺点是由于无法获取在高维空间中进行连续估计所需要的密集采样,因此无法保证姿态估计的精度与连续性。 
            基于学习的姿态估计方法源于姿态识别方法的思想。姿态识别需要预先定义多个姿态类别,每个类别包含了一定的姿态范围;然后为每个姿态类别标注若干训练样本,通过模式分类的方法训练姿态分类器以实现姿态识别。 
            这一类方法并不需要对物体进行建模,一般通过图像的全局特征进行匹配分析,可以有效的避免局部特征方法在复杂姿态和遮挡关系情况下出现的特征匹配歧义性问题。然而姿态识别方法只能将姿态划分到事先定义的几个姿态类别中,并不能对姿态进行连续的精确的估计。 
            基于学习的方法一般采用全局观测特征,可以保证算法具有较好的鲁棒性。然而这一类方法的姿态估计精度很大程度依赖于训练的充分程度。要想比较精确地得到二维观测与三维姿态之间的对应关系,就必须获取足够密集的样本来学习决策规则和回归函数。而一般来说所需要样本的数量是随状态空间的维度指数级增加的,对于高维状态空间,事实上不可能获取进行精确估计所需要的密集采样。因此,无法得到密集采样而难以保证估计的精度与连续性,是基于学习的姿态估计方法无法克服的根本困难。 
            和姿态识别等典型的模式分类问题不同的是,姿态估计输出的是一个高维的姿态向量,而不是某个类别的类标。因此这一类方法需要学习的是一个从高维观测向量到高维姿态向量的映射,目前这在机器学习领域中还是一个非常困难的问题。 
            特征是描述模式的最佳方式,且我们通常认为特征的各个维度能够从不同的角度描述模式,在理想情况下,维度之间是互补完备的。 
            特征提取的主要目的是降维。特征抽取的主要思想是将原始样本投影到一个低维特征空间,得到最能反应样本本质或进行样本区分的低维样本特征。 
            一般图像特征可以分为四类:直观性特征、灰度统计特征、变换系数特征与代数特征。 
            直观性特征主要指几何特征,几何特征比较稳定,受人脸的姿态变化与光照条件等因素的影响小,但不易抽取,而且测量精度不高,与图像处理技术密切相关。 
            代数特征是基于统计学习方法抽取的特征。代数特征具有较高的识别精度,代数特征抽取方法又可以分为两类:一种是线性投影特征抽取方法;另外一种是非线性特征抽取方法。 
            习惯上,将基于主分量分析和Fisher线性鉴别分析所获得的特征抽取方法,统称为线性投影分析。 
           基于线性投影分析的特征抽取方法,其基本思想是根据一定的性能目标来寻找一线性变换,把原始信号数据压缩到一个低维子空间,使数据在子空间中的分布更加紧凑,为数据的更好描述提供手段,同时计算的复杂度得到大大降低。在线性投影分析中,以主分量分析(PCA,或称K-L变换)和Fisher线性鉴别分析(LDA)最具代表性,围绕这两种方法所形成的特征抽取算法,已成为模式识别领域中最为经典和广泛使用的方法。 
            线性投影分析法的主要缺点为:需要对大量的已有样本进行学习,且对定位、光照与物体非线性形变敏感,因而采集条件对识别性能影响较大。 
            非线性特征抽取方法也是研究的热点之一。“核技巧”最早应用在SVM中,KPCA和KFA是“核技巧”的推广应用。 
            核投影方法的基本思想是将原样本空间中的样本通过某种形式的非线性映射,变换到一个高维甚至无穷维的空间,并借助于核技巧在新的空间中应用线性的分析方法求解。由于新空间中的线性方向也对应原样本空间的非线性方向,所以基于核的投影分析得出的投影方向也对应原样本空间的非线性方向。 
            核投影方法也有一些弱点:几何意义不明确,无法知道样本在非显式映射后变成了什么分布模式;核函数中参数的选取没有相应选择标准,大多数只能采取经验参数选取;不适合训练样本很多的情况,原因是经过核映射后,样本的维数等于训练样本的个数,如果训练样本数目很大,核映射后的向量维数将会很高,并将遇到计算量上的难题。 
             就应用领域来说,KPCA远没有PCA应用的广泛。如果作为一般性的降维KPCA确实比PCA效果好,特别是特征空间不是一般的欧式空间的时候更为明显。PCA可以通过大量的自然图片学习一个子空间,但是KPCA做不到。 
            变换系数特征指先对图像进行Fourier变换、小波变换等,得到的系数后作为特征进行识别
    再opencv的CHM帮助文件中解释:
    目标检测方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]对这一方法进行了改善. 首先,利用样本(大约几百幅样本图片)的 harr 特征进行分类器训练,得到一个级联的boosted分类器。训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本(例如人脸或汽车等),反例样本指其它任意图片,所有的样本图片都被归一化为同样的尺寸大小(例如,20x20)。
    分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的尺寸)的检测。检测到目标区域(汽车或人脸)分类器输出为1,否则输出为0。为了检测整副图像,可以在图像中移动搜索窗口,检测每一个位置来确定可能的目标。 为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸改变,这样比改变待检图像的尺寸大小更为有效。所以,为了在图像中检测未知大小的目标物体,扫描程序通常需要用不同比例大小的搜索窗口对图片进行几次扫描。
    分类器中的“级联”是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检窗口依次通过每一级分类器, 这样在前面几层的检测中大部分的候选区域就被排除了,全部通过每一级分类器检测的区域即为目标区域。 目前支持这种分类器的boosting技术有四种: Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。"boosted" 即指级联分类器的每一层都可以从中选取一个boosting算法(权重投票),并利用基础分类器的自我训练得到。基础分类器是至少有两个叶结点的决策树分类器。 Haar特征是基础分类器的输入,主要描述如下。目前的算法主要利用下面的Harr特征。
    ?
    每个特定分类器所使用的特征用形状、感兴趣区域中的位置以及比例系数(这里的比例系数跟检测时候采用的比例系数是不一样的,尽管最后会取两个系数的乘积值)来定义。例如在第三行特征(2c)的情况下,响应计算为复盖全部特征整个矩形框(包括两个白色矩形框和一个黑色矩形框)象素的和减去黑色矩形框内象素和的三倍 。每个矩形框内的象素和都可以通过积分图象很快的计算出来。(察看下面和对cvIntegral的描述).
    通过HaarFaceDetect 的演示版可以察看目标检测的工作情况。
    下面只是检测部分的参考手册。 haartraining是它的一个单独的应用,可以用来对系列样本训练级联的 boosted分类器。
    展开全文
  • 文章目录机器学习中的特征特征的重要性特征提取特征选择去除方差较小的特征单变量特征选择 (Univariate feature selection)F检验信息其他特征选择方法重复性特征删除:用模型选择:并入pipeline 机器学习中的...

    机器学习中的特征

    在机器学习和模式识别中,特征是在观测现象中的一种独立、可测量的属性。选择信息量大的、有差别性的、独立的特征是模式识别、分类和回归问题的关键一步。
    最初的原始特征数据集可能太大,或者信息冗余,因此在机器学习的应用中,一个初始步骤就是选择特征的子集,或构建一套新的特征集,减少功能来促进算法的学习,提高泛化能力和可解释性。
    在机器视觉中,一幅图像是一个观测,但是特征可能是图中的一条线;在自然语言处理中,一个文本是一个观测,但是其中的段落或者词频可能才是一种特征;在语音识别中,一段语音是一个观测,但是一个词或者音素才是一种特征。

    特征的重要性

    在特征选择时, 经常根据重要性, 将重要的特征选择出来放入训练集合. 相关系数和独立变量方法是常用的方法。
    在构建模型的过程中, 有时候也会用到一些复杂的预测模型进行特征的重要性评价和选择, 例如多元自适应回归样条法( Multivariate Adaptive Regression Splines, MARS), 随机森林( Random Forest), 梯度提升机( Gradient Boosted Machines)等.

    特征提取和特征选择

    • 特征提取
      对原始观测进行降维以便于建模的过程, 对于表格式的数据, 可以用主成分分析PCA, 聚类等方法; 对于图像数据, 可以用线(line)/边缘(edge)提取, 对于视频, 音频数据, 很多数字信号处理的方法都可以用于特征提取.
    • 特征选择
      特征选择是自动地选择出对于问题最重要的特征子集的过程. 由于不同特征对模型准确度的影响程度不同, 特征选择算法用评分排序, 或者用反复实验来搜索出特征子集, 自动创建并评估模型得到最佳特征子集. 另外还有一些方法将特征选择作为模型的附加功能, 例如逐步回归法( stepwise regression)
      sklearn的feature_selection模块在特征选择和样本集合降维上, 用来提高模型的正确率或者提高他们在高维度数据上的表现.

    特征选择的方法可以大致分为:

    1. Filter: 过滤法, 按照方差或者相关性对特征评分, 根据阈值选择特征
    2. Wrapper: 包装法, 根据目标函数(预测效果评分), 选择/排除若干特征

    特征选择的目的:

    1. 降维, 增强模型泛化能力, 减少过拟合
    2. 便于理解特征和标签之间的关系

    去除方差较小的特征

    VarianceThreshold是一个简单的特征选择基准方法, 该方法就是去除所有没有达到指定阈值的特征. 默认是去除所有零方差的数据, 例如那些在所有样本中都一样的特征.

    举例来说, 我们有一个数据集合, 所有的数据都是布尔值, 我们想去掉80%的概率上不是0就是1的特征维度, 对于布尔型的数据来说, 服从伯努利分布, 理论方差为:
    Var[X]=p(1-p)

    from sklearn.feature_selection import VarianceThreshold
    X=[[0 0 1], [0 1 0], [1 0 0], [0 1 1], [0 1 0], [0 1 1]]
    sel =  VarianceThreshold(threshold=(0.8*(1-0.8)))
    sel.fit_transform(X)
    
    

    单变量特征选择 (Univariate feature selection)

    单变量特征选择是对每个变量单独做统计分析, 之后再根据统计指标来判断变量是否重要.

    问题类型 统计指标
    分类问题 卡方检验, f_classif, 互信息( mutual_info_classif)
    回归问题 皮尔逊相关系数(f_regression), 互信息回归(mutual_info_regression)

    其他形式:

    • SelectKBest: 仅保留得分K名以内的所有特征(TOP k)
    • SelectPercentile 仅保留指定前k百分比的数据(TOP k%)
    • 单变量检验, 例如假阳性比例SelectFpr, 伪发现率 SelectFdr, 族系误差率SelectFwe.
    • GenericUnivariateSelect 允许设置特征选择参数, 不同的选择策略可以使用超参数调优, 从而找到最佳单变量特征选择策略.

    总的来说, 基于F检验的算法是用F检验估计来计算不同变量之间的线性依赖度(degree of linear dependency), 基于互信息的算法可以捕获到任意一种统计依赖关系, 但是作为一种非参数检验方法, 需要大量的样本才能得到比较准确的结果.

    如果数据的稀疏性很强, 可以选择chi2, mutual_info_regression, mutual_info_classif 这些特征选择方法.

    F检验与互信息

    sklearn的官方教程给出了关于F检验和互信息区别的说明. 假设有3个特征 x1, x2, x3 都服从[0,1]正态分布,
    目标函数如下:
    y=x_1+sin(6pix_2)+0.1*N(0,1)
    显然, y的取值与x_3完全不相关. 下面这段代码用了F检验和互信息两种方法给出了x与y之间的依赖关系.

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.feature_selection import f_regression, mutual_info_regression
    
    np.random.seed(0)
    X = np.random.rand(1000, 3)
    y = X[:, 0] + np.sin(6*np.pi*X[:,1]) + 0.1*np.random.randn(1000)
    
    f_test, _ = f_regression(X, y)
    f_test /= np.max(f_test)
    
    mi = mutual_info_regression(X, y)
    mi = mi/np.max(mi)
    
    plt.figure(figsize=(15,15))
    for ii in range(3):
    	plt.subplot(1, 3, ii+1)
    	plt.scatter(X[:,ii], y, edgecolor=’black’, s=20)
    	plt.xlabel(“$x_{}$”.format(ii+1), fontsize=14)
    	if ii in range(3):
    		plt.ylabel(“$y$”, fontsize=14)
    	plt.title(“F-test={:.2f}, mi={:.2f}.format(f_test[i], mi[i]), fontsize=16)
    plt.show()
    

    在这里插入图片描述

    图中依次绘制了x_1, x_2, x_3与y之间的依赖关系, 图上标题是对应特征的统计指数(F-score和互信息), 可以看到, F-test更适合与线性关系的特征, 而互信息系数在非线性
    F检验得到的是数据之间的线性关系, 因此, F-test将x_1标记为最具有识别力的参数(discriminative), 互信息可以识别变量之间任意形式(非线性的)依赖关系, 因此互信息将x_2标记为最具有识别力的参数(或者说重要特征).

    下面给出了一个F 检验(ANOVA 方差检验) 与SVM的例子, 在SVM之前, 先用anova对数据做了降维.

    """
    =================================================
    SVM-Anova: SVM with univariate feature selection
    =================================================
    
    This example shows how to perform univariate feature selection before running a
    SVC (support vector classifier) to improve the classification scores.
    """
    print(__doc__)
    
    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn import svm, datasets, feature_selection
    from sklearn.cross_validation import cross_val_score
    from sklearn.pipeline import Pipeline
    
    ###############################################################################
    # Import some data to play with
    digits = datasets.load_digits()
    y = digits.target
    # Throw away data, to be in the curse of dimension settings
    y = y[:200]
    X = digits.data[:200]
    n_samples = len(y)
    X = X.reshape((n_samples, -1))
    # add 200 non-informative features
    X = np.hstack((X, 2 * np.random.random((n_samples, 200))))
    
    ###############################################################################
    # Create a feature-selection transform and an instance of SVM that we
    # combine together to have an full-blown estimator
    #feature_selection.f_classif:计算所提供样本的方差分析F-值anova:方差分析
    #feature_selection.SelectPercentile(k):只留下k值最高的一组特征,返回最终的估计器
    transform = feature_selection.SelectPercentile(feature_selection.f_classif)
    #anova:Analysis of Variance(方差分析)
    clf = Pipeline([('anova', transform), ('svc', svm.SVC(C=1.0))])
    
    ###############################################################################
    # Plot the cross-validation score as a function of percentile of features
    score_means = list()
    score_stds = list()
    percentiles = (1, 3, 6, 10, 15, 20, 30, 40, 60, 80, 100)
    
    for percentile in percentiles:
        #clf.set_params:设置此估计器的参数。
        #使用网格搜索(grid search)和交叉验证(cross validation)来选择参数.
        #对方差分析中的参数percentile进行调节,实现多重比较检验
        #用于确定控制变量的不同水平对观测变量的影响程度如何
        clf.set_params(anova__percentile=percentile)
        # Compute cross-validation score using 1 CPU
        #http://scikit-learn.org/dev/modules/generated/sklearn.model_selection.
        #cross_val_score.html#sklearn.model_selection.cross_val_score
        #cross_val_score:最简单的交叉验证方法,cv选择折数,默认是3折交叉验证
        this_scores = cross_val_score(clf, X, y, n_jobs=1)
        score_means.append(this_scores.mean())
        score_stds.append(this_scores.std())
    #plt.errorbar以折线形式画出均值和方差
    plt.errorbar(percentiles, score_means, np.array(score_stds))
    
    plt.title(
        'Performance of the SVM-Anova varying the percentile of features selected')
    plt.xlabel('Percentile')
    plt.ylabel('Prediction rate')
    
    plt.axis('tight')
    

    其他特征选择方法

    重复性特征删除:

    from sklearn.feature_selection import RFE

    print(__doc__)
    
    from sklearn.svm import SVC
    from sklearn.datasets import load_digits
    from sklearn.feature_selection import RFE
    import matplotlib.pyplot as plt
    
    # Load the digits dataset
    digits = load_digits()
    X = digits.images.reshape((len(digits.images), -1))
    y = digits.target
    
    # Create the RFE object and rank each pixel
    svc = SVC(kernel="linear", C=1)
    rfe = RFE(estimator=svc, n_features_to_select=1, step=1)
    rfe.fit(X, y)
    ranking = rfe.ranking_.reshape(digits.images[0].shape)
    
    # Plot pixel ranking
    plt.matshow(ranking, cmap=plt.cm.Blues)
    plt.colorbar()
    plt.title("Ranking of pixels with RFE")
    plt.show()
    

    神经影像分析中常用的searchlight方法,本质上也是一种recursive feature selection方法.

    用模型选择:

    from sklearn.feature_selection import SelectFromModel

    >>> from sklearn.svm import LinearSVC
    >>> from sklearn.datasets import load_iris
    >>> from sklearn.feature_selection import SelectFromModel
    >>> iris = load_iris()
    >>> X, y = iris.data, iris.target
    >>> X.shape
    (150, 4)
    >>> lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
    >>> model = SelectFromModel(lsvc, prefit=True)
    >>> X_new = model.transform(X)
    >>> X_new.shape
    (150, 3)
    

    并入pipeline

    特征选择可以作为数据处理pipeline中的一个环节, 在核心模型之前进行数据降维和特征提取.

    clf = Pipeline([
      ('feature_selection', SelectFromModel(LinearSVC(penalty="l1"))),
      ('classification', RandomForestClassifier())
    ])
    clf.fit(X, y)
    
    

    参考:
    特征工程: https://blog.csdn.net/jasonding1354/article/details/47171115
    https://blog.csdn.net/sqiu_11/article/details/58719935
    scikit learn 文档: https://scikit-learn.org/stable/modules/feature_selection.html

    展开全文
  • 降维:特征选择与特征提取

    千次阅读 2018-09-24 01:48:46
    特征选择: 不改变变量的含义,仅仅只是做出筛选,留下对目标影响较大的变量。 Backward Elimination(反向淘汰) Forward Selection(正向选择) Bidirectional Elimination(双向淘汰) Score Comparison(信息量...

    对于降维,我看可以简单理解为减少数据的维度,说白了就是减少变量个数。文末的视频墙裂推荐观看一下。
    特征选择: 不改变变量的含义,仅仅只是做出筛选,留下对目标影响较大的变量。

    • Backward Elimination(反向淘汰)
    • Forward Selection(正向选择)
    • Bidirectional Elimination(双向淘汰)
    • Score Comparison(信息量比较)

    前面三种机制差不多,反向淘汰其实之前的文章写过实例应用的:反向淘汰
    对于正向选择,其实大致就是反向淘汰的逆过程。每个变量在加入模型前进行显著水平与设置的显著阈值进行比较,小于则加入模型,否则不加入。
    双向淘汰是反向淘汰结合正向淘汰,因此需要设置两个水平显著值,一个用于反向淘汰判断变量是否该剔除出模型,一个用于正向选择判断变量是否应该加入模型。
    信息量比较也写过实例:信息量比较

    特征提取: 从数据集中的m个变量中提取p个新的变量(p<=m),这p个变量可以很好的解释自变量的差异性(数学上的表现为方差),这一步相当于数据预处理的一步,与因变量无关,因而是个无监督问题。常用到PCA(主成分分析)和KernelPCA(核函数主成分分析)-特殊PCA
    PCA工作其实是在寻找最大方差所属的方向------摘自某套教程的解释。
    并且PCA中特征缩放是必须的,因为必须保证变量在同一个数量级,否则,数值大的贡献很大,导致我们可能忽略了数值小却很至关重要的特征。
    在这里插入图片描述
    PCA基本工作步骤:

    1. 将X记为包含了m个自变量的矩阵,对x进行特征缩放
    2. 计算x的方差矩阵,记作A
    3. 计算矩阵A的特征值和特征向量,对特征值进行自大到小排序
    4. 选择需要解释方差的百分比P,借此进行特征选择p个(这里的特征是我们提取到的,区别于m中的任意一个变量)
    5. 这里的p个特征就是我们留下的新特征了
    from sklearn.preprocessing import StandardScaler
    ss = StandardScaler()
    x = ss.fit_transform(x)
    from sklearn.model_selection import train_test_split
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state = 0)
    
    from sklearn.decomposition import PCA
    pca = PCA(n_components=None)    #当为None时我们只是取p = m,并没有进行取舍。
    x_train = pca.fit_transform(x_train)
    x_test = pca.transform(x_test)
    print('各个变量的解释方差能力:'+str(pca.explained_variance_))     #这个步骤会自动得出每个变量的解释方差的能力,并自大到小排序。方便我们进行取舍。  
    

    假设我们的P设置为80%,则我们需要用到上述代码的结果的p个变量解释方差达到80%。这里就确定了p的取值。接下来可以在运用一次:

    from sklearn.decomposition import PCA
    pca = PCA(n_components=p)  	#这里的p时上个代码片得出的p
    x_train = pca.fit_transform(x_train)
    x_test = pca.transform(x_test)
    

    注意重新生成的变量是我们高度概括的结果。区别于原来的变量。
    核函数PCA也差不多一样的步骤,不过用到的是别的包:

    from sklearn.decomposition import KernelPCA
    

    核函数PCA可以将原本线性不可分的变量,投射到更高维的空间,从而变得线性可分,在将结果投射回低维。关于这个过程,这里有一个youtebe的演示视频,可以很好的帮助理解。
    链接:https://pan.baidu.com/s/1NQG5QGDZId-IcEUs1HcwfA 密码:a7m0
    详细用法可以自行查看官方的文档。

    展开全文
  • 特征选择和特征提取

    千次阅读 2020-06-27 19:33:42
    特征选择 从原有特征中进行选择最重要的特征 从原始特征数据集中选择出子集,是一种包含的关系,没有更改原始的特征空间 比较有名的特征选择有过滤法(Filter),包裹法(Wrapper),嵌入法(Embedded) 特征提取...
  • 漫谈机器学习经典算法—特征提取与特征选择

    万次阅读 多人点赞 2014-10-27 00:35:18
    模式识别 机器学习 特征提取特征选择
  • 特征选择/特征提取

    千次阅读 2016-05-20 23:14:18
    特征选择:从一组特征中选择一组具有统计意义的特征。也叫特征子集选择。 两者都能实现降维效果。但特征提取关注数据和特征的转换;特征选择关注特征在统计意义上的选择。 特征提取包括:PCA,SVD。 特征选择包括...
  • 特征提取与选择的基本任务: 是研究如何从众多特征中求出那些对分类识别最有效的特征,从而实现特征空间维数的压缩,即获取一组“少而精”且分类错误概率小的分类待征. 目的: 使在最小维数特征空间中异类模式点...
  • 一、降维技术主要分为两大类:特征选择和特征提取。 基本概念:特征选择:我们可以选出原始特征的一个子集。特征提取:通过现有信息进行推演,构造出一个新的特征子空间。 为什么要降维: (1)数据的多重共线性...
  • 特征选择和特征提取区别
  • 特征选择与特征提取(降维)1、相同点不同点2、特征选择2.1 过滤型(Filter)2.2 包裹型(Wrapper)2.3 嵌入型(Embedded)3、特征提取(降维)3.1 主成分分析法(PCA)3.2 线性判别分析法(LDA) 1、相同点不同...
  • 特征选择(区别于特征提取

    千次阅读 2018-12-20 10:58:22
    特征选择和特征提取的异同 先来看一张特征工程的图。 特征选择和特征提取都是特征工程下,对于多特征的预处理。 其共同的目的是: 提高模型预测的准确率 减少模型运行的时间,提高学习模型的性能 降低维度...
  • 图像特征提取与特征选择基本方法总结

    万次阅读 多人点赞 2014-09-18 11:19:05
    图像特征的提取和选择是图像处理过程中很重要的环节,对后续图像分类有着重要的影响,并且对于图像数据具有样本少,维数高的特点,要从图像中提取有用的信息,必须对图像特征进行降维处理,特征提取与特征选择就是最...
  • 特征提取特征选择

    千次阅读 2016-08-27 16:32:00
    特征提取特征选择都是从原始特征中找出最有效(同类样本的不变性、不同样本的鉴别性、对噪声的鲁棒性)的特征。 区别联系 特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不...
  • 特征选择提取(一)

    千次阅读 2018-01-19 19:48:35
    特征选择提取是模式识别中的一个关键问题:前面讨论分类器设计的时候,一直假定已给出了特征向量维数确定的样本集,其中各样本的每一维都是该样本的一个特征;这些特征的选择是很重要的,它强烈地影响到分类器的...
  • 近红外光谱特征选择、特征提取区别及稀疏表示

    千次阅读 多人点赞 2019-11-29 10:12:40
    但是实际分析过程中所采集的数据都是高维、复杂的数据信号,如何从复杂的信号中选择出建模所需要的基本数据就是所谓的近红外光谱数据特征筛选或特征选择,特征提取特征选择从数学角度来讲是两种不同的方法。...
  • 特征选择(Feature Selection)2.特征提取(Feature Extraction)3.优点深度特征学习方法 数据的特征表示 1.原始特征(Raw Feature)需要为向量形式。其存在以下不足: 1)特征比较单一,需要进行(非线性的)组合...
  • 特征选择提取是模式识别中的一个关键问题 前面讨论分类器设计的时候,一直假定已给出了特征向量维数确定的样本集,其中各样本的每一维都是该样本的一个特征; 这些特征的选择是很重要的,它强烈地影响到分类器的...
  • 特征选择和特征提取,及其分类

    千次阅读 2019-02-20 11:19:42
    特征选择:从大规模的特征空间中提取与所需任务相关的特征。 特征提取:结合任务本身的特点,通过结合和转换原始的特征集,构造出新的特征。   基于特征的选择的机制,特征选择可以分为四类: 1)Filter 方法 ...
  • 一、什么是特征降维与特征选择? 一般经过特征处理和生成后,会产生大量的特征,而这些特征中有的特征是很重要的,但不是每一项特征都对模型有用,因此,要将这类没用的特征剔除掉。所以,特征降维与特征选择的主要...
  • 文本中的特征提取与特征选择

    万次阅读 2017-03-27 17:09:44
    特征提取Bag of Words 分词 计算每个词出现的次数 from sklearn.feature_extraction.text import CountVectorizer vectorizer = CountVectorizer(min_df=1) corpus = [ 'This is the first document.', 'This is ...
  • 关于图像特征提取

    万次阅读 多人点赞 2010-01-17 19:30:00
    它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。 特征的定义 至今为止特征没有万能和...
  • 分类特征选择提取

    万次阅读 2013-11-03 23:42:27
    对遥感图像进行分类特征选择提取,目的是求出一组对分类最有效的特征,它直接关系到分类结果的优劣,而且分类器的性能也在很大程度上依赖于特征选择与特征提取,依赖于特征是否能够精确地描述对象的本质。...
  • 模式识别第4章—特征选择提取

    千次阅读 2019-02-03 14:25:39
    特征选择提取是模式识别中的一个关键问题: 前面讨论分类器设计的时候,一直假定已给出了特征向量维数确定的样本集,其中各样本的每一维都是该样本的一个特征; 这些特征的选择是很重要的,它强烈地影响到分类器...
  • 文本的表示及其特征项的选取是文本挖掘、信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息。将它们从一个无结构的原始文本转化为结构化的计算机可以识别处理的信息,即对文本进行科学的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,369
精华内容 45,747
关键字:

信息的特征选择与提取