特征工程综述

        在之前学习机器学习技术中,很少关注特征工程(Feature Engineering),然而,单纯学习机器学习的算法流程,可能仍然不会使用这些算法(现在大部分的算法网上也都有源码),尤其是应用到实际问题的时候,常常不知道怎么提取特征来建模,因此这里着重理解一下特征工程

一、特征工程的意义

         我们知道,影响分类/聚类结果的因素有:源数据特征的提取模型的选择。大多数据模型现在基本都比较成熟,因此优质的特征可以使得学习结果更加理想。

二、特征工程的定义

         特征工程:Kaggle Blog中有一个很好的定义,意思是说用目标问题所在的特定领域知识或者自动化的方法来生成、提取、删减或者组合变化得到特征,这些特征可能显而易见(如商品的品牌)---直接特征,也有可能需要通过一个复杂的模型计算得到(如FaceBook中两用户的亲密程度)---间接特征。

三、特征的提取

         一些观测数据如果直接建模,其原始状态的数据太多,像图像、音频、视频和文本数据,如果将其看做是表格数据,则包含了数据以千计的属性。特征的提取(Feature Extraction)则是对原始数据观测、降维,使其特征集合小到可以进行建模的过程。对表格式数据, 可以使用主元素分析(Principal Component Analysis)聚类等映射方法;对于图像数据,可以进行线(line)或边缘(edge)的提取;根据相应的领域,图像、视频和音频数据可以有很多数字信号处理的方法对其进行处理

四、特征选择

        特征选择的目标是寻找最优特征子集。特征选择能剔除不相关(irrelevant)或冗余(redundant )的特征,从而达到减少特征个数,提高模型精确度,减少运行时间的目的。另一方面,选取出真正相关的特征简化模型,协助理解数据产生的过程。

        判别特征的重要性是对特征进行选择的预先指标 ,特征根据重要性被分配分数,然后根据分数不同进行排序,其中高分数据可以选择出来当作特征放入训练数据集。那么如何判断特征的重要性呢?即与因变量高度相关,则这个特征可能很重要,常用的方法有相关系数独立变量

        特征选择算法可以使用评分的方法来进行排序;还有些方法通过反复试验来搜索出特征子集,自动地创建并评估模型以得到客观的、预测效果最好的特征子集;还有一些方法,将特征选择作为模型的附加功能,像逐步回归法(Stepwise regression)就是一个在模型构建过程中自动进行特征选择的算法。还有一些复杂的预测模型会在算法内部进行特征重要性的评价和选择,如多元自适应回归样条法(Multivariate Adaptive Regression Splines, MARS)随机森林(Random Forest)梯度提升机(Gradient Boosted Machines)。这些模型在模型准备阶段会进行变量重要性的确定。

        总结特征的选择产生特征子集方法如下:

(1)完全搜索

广度优先搜索( Breadth First Search )广度优先遍历特征子空间。枚举所有组合,穷举搜索,实用性不高;

分支限界搜索( Branch and Bound )穷举基础上加入分支限界。例如:剪掉某些不可能搜索出比当前最优解更优的分支;

其他,如定向搜索 (Beam Search )最优优先搜索 ( Best First Search )

(2)启发式搜索

序列前向选择( SFS , Sequential Forward Selection ):也称下向搜索算法,即从空集开始,每次加入一个选最优。依次在当前集合中加入一个其中没有的属性,然后用交叉验证等方法对新集合进行搜索的评估,找出评估结果最佳的属性加入当前集合;不断重复上面的步骤,直到加入任何新的属性都不能提高评估,算法停止(由此可见该算法是一个典型的贪心算法,可能找到局部最优的属性集,但不一定是全局最优的);

1.Initialize ;
2.repeat{

(a)  for i=1,…,n

       if ,let  

       then 交叉验证评估特征集  (泛化误差最小的)

(b)    找出步骤(a)中最佳特征子集F

}

序列后向选择( SBS , Sequential Backward Selection ):也称反向搜索算法,即从全集开始,每次减少一个选最优。与正向搜索恰恰相反,它是假设所有的特征都在集合内,逐步减少属性,直到(局部)最优属性集;

【以上两个算法称为封装模型特征选择算法,因为该方法在执行过程中,不断重复的运行学习算法去评估属性集的好坏。封装模型特征选择算法通常比较有效,但是需要反复的运行学习算法,产生大量的计算】

增L去R选择算法 ( LRS , Plus-L Minus-R Selection ):从空集开始,每次加入L个,减去R个,选最优(L>R)或者从全集开始,每次减去R个,增加L个,选最优(L<R);

相比于以上算法,在选择特征子集过程中,计算量较少。过滤特征选择算法(FFS,Filter-Feature-Selection):基本思想是制定一个衡量标准S(i),用来衡量每个特征Xi,对标签值Y的影响程序,最后再选择得分是高的一批特征,在实际操作中通过采用互信息来度量Xi和Y的关联程度:


其他如双向搜索( BDS , Bidirectional Search )序列浮动选择( Sequential Floating Selection )

(3)随机搜索

随机产生序列选择算法(RGSS, Random Generation plus Sequential Selection):随机产生一个特征子集,然后在该子集上执行SFS与SBS算法;
模拟退火算法( SA, Simulated Annealing ):以一定的概率来接受一个比当前解要差的解,而且这个概率随着时间推移逐渐降低;
遗传算法( GA, Genetic Algorithms ):通过交叉、突变等操作繁殖出下一代特征子集,并且评分越高的特征子集被选中参加繁殖的概率越高;

随机算法共同缺点:依赖随机因素,有实验结果难重现。

五、特征工程的流程

机器学习中数据的转换过程:

    1. 选择数据:收集整合数据,将数据规划化为一个数据集
    2. 预处理数据:对数据进行清洗、格式化、采样
    3. 转换数据:特征工程所在
    4. 对数据建模:构建模型、评估模型、调整模型
特征工程的迭代过程:

    1. 对特征进行头脑风暴:深入分析问题,观察数据特点,参考其他问题的有关特征工程的方法并应用到自己问题中
    2. 特征的设计:你可以自动提取特征,手动构造特征,或将两者相结合
    3. 特征选择:使用不同的特征重要性评分方法或特征选择方法
    4. 评估模型:利用所选择的特征对测试数据进行预测,评估模型准确性


文章写到这里只是目前对特征工程的理解,后面随着知识的积累会逐步善本文内容


参考资料:

Wiki:Feature Learning

Discover Feature Engineering, How to Engineer Features and How to Get Good at It

 斯坦福大学机器学习——特征选择(Feature selection)

机器学习中的数据清洗与特征处理综述

斯坦福大学机器学习——特征选择(Feature selection)

关于推荐系统中的特征工程

特征工程技术与方法

Kaggle上一篇关于特征工程的文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值