文章目录

  • 选取特征子集
    • 1. 子集搜索(subset search)
    • 2. 子集评价(subset evaluation)
  • 特征选择方法
    • 1. 过滤式(Filter)
      • Relief
      • Relief-F
    • 2.包裹式(wrapper)
      • LVM
    • 3.嵌入式(embedding)
      • 岭回归(ridge regression)
      • LASSO

参考书为《机器学习》-周志华

选取特征子集

当前存在的问题

  • 从初始的特征集合选取包含所有重要信息的特征子集,若没有任何领域知识作为先验假设,那只好遍历所有可能的子集,这实际上并不可行,会遇到组合爆炸,特证数稍多就不行

  • 可行做法是产生一个"候选子集",评价出此好坏,基于评价结果产生下一个子集…

1. 子集搜索(subset search)

第一个环节是子集搜索(subset search)

给定特征集合{a1,a2,....,ad}\lbrace a_1, a_2 ,....,a_d \rbrace{a1,a2,....,ad} , 我们可将每个特征看作一个候选子集,对这ddd个候选单特征子集进行评价

  1. 假定{a2}\lbrace a_2 \rbrace{a2}最优,将{a2}\lbrace a_2 \rbrace{a2}作为第一轮的选定集;

  2. 然后,在上一轮的选定集中加入一个特征,构造包含两个特征候选子集,假定这d−1d-1d1个候选两特征子集(候选子集为{{a2,a1},{a2,a3},....,{a2,ad}})中,{a2,a4}\lbrace\lbrace a_2,a_1 \rbrace,\lbrace a_2,a_3 \rbrace,....,\lbrace a_2,a_d \rbrace \rbrace)中,\lbrace a_2,a_4\rbrace{{a2,a1},{a2,a3},....,{a2,ad}}),{a2,a4}最优,且优于{a2}\lbrace a_2 \rbrace{a2},于是将{a2,a4}\lbrace a_2,a_4 \rbrace{a2,a4}作为本轮选定集

⋯\cdots

  1. 在第k+1k+1k+1轮时,最优的候选(k+1)特征子集不如上一轮的选定集,则停止生成候选选定集,并将上一轮选定的kkk特征集合作为特征选择的结果
  • "前向"(forward)搜索:逐渐增加相关特征

  • 后向搜索(backward):从完整的特征集合开始,每次尝试去掉一个无关特征

  • 双向搜索(bidirectional):前向后向相结合,每一轮逐渐增加相关特征(后续不会被去除),同时减少无关特征

结论

上述策略都是贪心,仅考虑本轮最优。但很多问题只能穷举才可解决

2. 子集评价(subset evaluation)

给定数据集DDD,假定DDD中第iii类样本所占的比例为pi(i=1,2,...,∣Y∣)p_i(i=1,2,...,|Y|)pi(i=1,2,...,Y),假定样本属性为离散型

对属性子集AAA,假定根据其取值将DDD分成了VVV个子集{D1,D2,...,DV}\lbrace D^1,D^2,...,D^V \rbrace{D1,D2,...,DV},每个子集中的样本在AAA上取值相同,于是我们可计算属性子集AAA的信息增益

Gain(A)=Ent(D)−∑v=1VDvDEnt(Dv)(11.1)Gain(A) = Ent(D) - \sum_{v=1}^{V}\frac{D^v}{D}Ent(D^v)\tag{11.1}Gain(A)=Ent(D)v=1VDDvEnt(Dv)(11.1)

其中信息熵定义为

Ent(D)=−∑i=1∣Y∣pklog2pk(11.2)Ent(D) = -\sum_{i=1}^{|Y|}p_klog_2p_k\tag{11.2}Ent(D)=i=1Ypklog2pk(11.2)

总结

  • 信息增益越大,意味着特征子集A包含有助于分类的信息越多
  • 对每个候选特征子集,我们可基于训练数据集D 来计算其信息增益,以此作为评价准则.

将特征子集搜索与子集评价机制结合,即可得到特征选择方法
例如前向搜素+信息熵,这与决策树算法非常相似
事实上,决策树可用于特征选择,树结点的划分属性所组成的集合就是选择出的特征子集

特征选择方法

1. 过滤式(Filter)

过滤式方法是先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,这相当于先用特征选择过程先对初始特征进行过滤,再用过滤后的特征来训练模型

Relief

Relief是著名的过滤式特征选择方法,该方法设计了一个“相关统计量”来度量特征的重要性

流程

  1. 该统计量是一个向量,其中每个分量分别对应着一个初始特征,而特征子集的重要性由子集中每个特征所对应的相关统计量分量之和来决定
  2. 最终只需指定一个阈值τ\tauτ,选择比τ\tauτ大的相关统计量分量所对应的特征即可
  3. 也可指定欲选取的特征个数k,然后选择相关统计量分量最大的k个特征

Relief如何确定相关统计量

给定训练集{(x1,y1),(x2,y2),....,(xm,ym)}\lbrace (x_1,y_1),(x_2,y_2),....,(x_m,y_m) \rbrace{(x1,y1),(x2,y2),....,(xm,ym)},对每个示例xix_ixi

ReliefReliefRelief现在xix_ixi同类样本中寻找其最近邻xi,nhx_{i,nh}xi,nh,称为**“猜中近邻”(near-hit),再从xix_ixi异类样本**中寻找其最近邻
xi,nmx_{i,nm}xi,nm,称为"猜错近邻"(near-miss)

相关统计量对应于属性j的分量为
δj=∑i−diff(xij,xi,nhj)2+diff(xij,xi,nmj)2(11.3)\delta^j = \sum_{i}-diff(x_i^j,x_{i,nh}^{j})^2 + diff(x_i^j,x_{i,nm}^j)^2\tag{11.3}δj=idiff(xij,xi,nhj)2+diff(xij,xi,nmj)2(11.3)

  • xajx_a^jxaj是样本xax_axa在属性jjj上的取值
  • diff(xaj,xbj)diff(x_a^j,x_b^j)diff(xaj,xbj)取决于属性j的类型:
    • 若属性jjj离散型,则xaj=xbjx_a^j = x_b^jxaj=xbjdiff(xaj,xbj)=0diff(x_a^j,x_b^j) = 0diff(xaj,xbj)=0,否则为111
    • 若属性jjj连续性diff(xaj,xbj)=∣xaj−xbj∣diff(x_a^j,x_b^j) = |x_a^j - x_b^j|diff(xaj,xbj)=xajxbj
    • 注意xajx_a^jxaj,xbjx_b^jxbj已经规范化到[0,1][0,1][0,1]区间
    • iii指出用于平均的样本下标

上式中可以看出

  • xix_ixi与其猜中近邻xi,nhx_{i,nh}xi,nh在属性jjj上的距离小于xix_ixi与其猜错近邻xi,nmx_{i,nm}xi,nm的距离,则说明属性jjj对区分同类与异类是有益的增大属性jjj所对应的统计量分量

  • 反之,说明属性jjj起负作用,就减少统计量分量

  • 对基于不同样本得到的估计结果进行平均,就得到各属性的相关统计分量,分量值越大,则对应属性的分类能力越强

总结

  • Relief只需在数据集的采样上而不必在整个数据集上估计相关统计量
  • Relief的时间开销随着采样次数以及原始特征数线性增加,所以它是运行效率很高的过滤式特征选择算法
  • Relief只针对二分类问题

Relief-F

为Relief的扩展变体,处理多分类问题

假定数据集DDD中的样本来自∣Y∣|Y|Y个类别

对于示例xix_ixi,若它属于第kkk(k∈{1,2,...,∣Y∣})(k \in \lbrace 1,2,...,|Y| \rbrace)(k{1,2,...,Y}),则Relief-F先在kkk类的样本中寻找xix_ixi最近邻示例xi,nhx_{i,nh}xi,nh并将其作为猜中近邻

然后再kkk类之外每个类中找到一个xix_ixi的最近邻示例作为猜错近邻,记为xi,l,nm(l=1,2,...,∣Y∣,l≠k)x_{i,l,nm}(l = 1,2,...,|Y|,l \not = k)xi,l,nm(l=1,2,...,Y,l=k)

于是相关统计量对应于属性jjj的分量

δj=∑i−diff(xij,xi,nhj)2+∑l≠k(pl×diff(xij,xi,l,nm)2)(11.4)\delta^j = \sum_i -diff(x_i^j,x_{i,nh}^j)^2 + \sum_{l \not = k}(p_l \times diff(x_i^j,x_{i,l,nm})^2)\tag{11.4}δj=idiff(xij,xi,nhj)2+l=k(pl×diff(xij,xi,l,nm)2)(11.4)

plp_lpl为第lll类样本再数据集DDD中所占比例

2.包裹式(wrapper)

与过滤式不考虑后续学习器不同,包裹式特征选择直接把最终将要使用的学习器的性能作为特征子集的评价标准,即,包裹式特征选择的目的就是为给定学习器选择最有利于其性能、"量身定做"的特征子集

特点

  • 包裹式特征选择比过滤式特征选择更好
  • 包裹式在特征选择过程中需要多次训练学习器,因此包裹式特征选择的计算开销通常比过滤式特征选择大得多

LVM

LVW(Las Vegas Wrapper)是典型的包裹式特征选择方法
拉斯维加斯方法(Las Vegas method)框架下使用随机策略来进行子集搜索,并以最终分类器得误差为特征子集评价准则


上图第888行是通过在数据集DDD上,使用交叉验证法来估计学习器£的误差,注意这个误差是在仅考虑特征子集A′A^{\prime}A时得到的,即特征子集A′A^{\prime}A上的误差.
若它比当前特征子集AAA上的误差更小,或误差相当但A′A^{\prime}A中包含的特征数更少,则将A′A^{\prime}A保留下来.

需注意的是,由于LVWLVWLVW 算法中特征子集搜索采用了随机策略,而每次特征子集评价都需训练学习器,计算开销很大.因此算法设置了停止条件控制参数TTT.

然而,整个LVWLVWLVW 算法是基于拉斯维加斯方法框架,若初始特征数很多(即∣A∣|A|A很大)、TTT设置较大,则算法可能运行很长时间都达不到停止条件.

换言之,若有运行时间限制,则有可能给不出解

3.嵌入式(embedding)

上面个两种方式中,特征选择过程与学习器训练过程有明显的分别;嵌入式特征选择将特征选择过程与学习器训练过程融为一体,两者在同意优化过程中完成,即在学习器训练过程中自动地进行了特征选择

基于L1L_1L1正则化的学习方法就是一种嵌入式特征选择方法

数据集D={(x1,y1),(x2,y2),....,(xm,ym)}D = \lbrace (x_1,y_1),(x_2,y_2),....,(x_m,y_m) \rbraceD={(x1,y1),(x2,y2),....,(xm,ym)},其中x∈Rdx \in R^dxRd,y∈Ry \in RyR,

使用线性回归模型,平方误差为损失函数,优化目标是
minw∑i=1m(yi−wTxi)2(11.5)min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2\tag{11.5}minwi=1m(yiwTxi)2(11.5)

岭回归(ridge regression)

引入L2L_2L2范数正则化,则有
minw∑i=1m(yi−wTxi)2+λ∣∣w∣∣22(11.6)min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2+\lambda||w||_2^2\tag{11.6}minwi=1m(yiwTxi)2+λw22(11.6)

  • λ>0\lambda > 0λ>0,上式称为"岭回归"(ridge regression)

LASSO

将正则化项中的L2L_2L2范数替换为LpL_pLp范数,p=1,即采用L1L_1L1范数,则有

minw∑i=1m(yi−wTxi)2+λ∣∣w∣∣1(11.7)min_{w}\sum_{i=1}^{m}(y_i - w^T x_i)^2+\lambda||w||_1\tag{11.7}minwi=1m(yiwTxi)2+λw1(11.7)

  • λ>0\lambda > 0λ>0,上式称为"LASSO"(Least Absolute Shrinkage and selection Operator)(最小绝对收缩选择算子)

附注

L1L_1L1范数比L2L_2L2范数更容易获得"稀疏"(sparse)解,即它求得的www会有更少的非零分量

www施加"稀疏约束"(即希望w的非零分量尽可能少)最自然的是使用L0L_0L0范数,但是其不连续,难以优化求解,因此常用L1L_1L1范数来近似

机器学习之特征选择(feature_selection)相关推荐

  1. python特征选择后显示选取的特征名_特征选择 (feature_selection)

    特征选择 (feature_selection) 本文主要参考sklearn(0.18版为主,部分0.17)的1.13节的官方文档,以及一些工程实践整理而成. 当数据预处理完成后,我们需要选择有意义的 ...

  2. 【机器学习】特征选择方法—Filter,Wrapper,Embedded

    [机器学习]特征选择方法 什么是特征选择? 为什么需要特征选择? 特征选择的两个关键环节 常见的特征选择方法 参考链接: 什么是特征选择? Feature Selection 是在模型构建过程中选择最 ...

  3. 机器学习中特征选择怎么做?这篇文章告诉你

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 来源 | AI开发者 简  介 据<福布斯>报道,每天大约会有 250 万 ...

  4. 机器学习:特征选择和降维实例

    https://www.toutiao.com/a6672721847512990216/ "特征选择是选择用于模型构建的相关特征的子集的过程",或者换句话说,选择最重要的特征. ...

  5. python利用特征进行可视化样本显示_利用Python进行机器学习之特征选择

    毫无疑问,解决一个问题最重要的是恰当选取特征.甚至创造特征的能力,这叫做特征选取和特征工程.对于特征选取工作,我个人认为分为两个方面: 1)利用python中已有的算法进行特征选取. 2)人为分析各个 ...

  6. Python中机器学习的特征选择工具

    特征选择,即在数据集中查找和选择最有用的特征的过程,是机器学习的关键步骤.不必要的特征会降低训练速度.模型的可解释性,最重要的是会降低测试集的泛化性能. 我对临时的特征选择方法感到很失望,但是在解决机 ...

  7. Python中机器学习的特征选择技术

    Introduction 介绍 Feature selection is the selection of reliable features from the bundle of large num ...

  8. 机器学习中特征选择概述

    1. 背景 1.1 问题 在机器学习的实际应用中,特征数量可能较多,其中可能存在不相关的特征,特征之间也可能存在相关性,容易导致如下的后果: (1) 特征个数越多,分析特征.训练模型所需的时间就越长, ...

  9. 机器学习(特征选择与稀疏学习)

    在做图像识别的程序中,我们经常遇到特征这个词语,也常有特征提取作为识别的前序工作,通常我们可以根据提取到的特征,根据应有特征进行对比,最终完成对物体缺陷等的识别.那么在提取到的众多特征中,如何有效的提 ...

  10. 机器学习中特征选择与稀疏学习的一些知识

    我们将属性称为"特征" (feature) ,对当前学习任务有 用的属性称为"相关特征" (relevant feature) .没什么用的属性称为" ...

最新文章

  1. linux 网络状态表 /proc/net/tcp 各项参数说明
  2. python行业中性_市场风险中性假设的r0只是等效r的其中之一
  3. 《剑指offer》数组中只出现一次的数字
  4. 25/100. Palindrome Linked List
  5. linux连接http报301解决,https下不加www的301强制跳转
  6. java判断线程是否wait_Java并发编程之线程间通讯(上)wait/notify机制
  7. Javascript正则
  8. 如何为水晶报表rpt文件添加数据连接
  9. 安装CAD2006出现html,win10系统安装cad2006出现已终止CAd2006-simplifieng安装的设置教程...
  10. Laravel 部署到阿里云 / 腾讯云
  11. 《生物信息学:导论与方法》----序列对比----听课笔记(三)
  12. 论文阅读-A Fast Learning Algorithm for Deep Belief Nets
  13. 国内十大优质黄金期货交易平台排名榜单(最新版一览)
  14. 数学思想:4、数学归纳法
  15. 数据结构与算法学习(第一天)
  16. 地图的经纬度数据下载
  17. matlab 插入标尺,Matlab如何设置自定义的画图标尺scale
  18. About 不以物喜 不以己悲
  19. 简单介绍长短期记忆网络 - LSTM
  20. 极速PEu盘启动盘制作工具(2003内核)V06.6官方版

热门文章

  1. DLL中的自定义类型含有非导出公开字段,从而产生Release版本运行异常
  2. 关于PHOTO SHOP CS9.0无法启动adobe updater 请重新安装应用程序和组件解决方法!
  3. 24个能给你的博客带来流量的网站
  4. Linux操作系统中df和du命令常见用法
  5. C/C++编程语言中char** a和char* a[]介绍
  6. cdq分治 陌上花开(内无题解)
  7. leetcode 1037. 有效的回旋镖(Valid Boomerang)
  8. SingalR 构建 推送服务器初探
  9. Redis入门指南--五种类型及其基本指令
  10. php 连接redis服务器