特征工程(完)

机器学习入门系列(2)–如何构建一个完整的机器学习项目,第六篇!

该系列的前五篇文章:

这也是特征工程系列最后一篇文章,介绍特征提取、特征选择、特征构建三个工作,通常特征工程被认为分为这三方面的内容,只是我将前面的数据&特征预处理部分都加入到这个系列。

实际上,特征工程其实是非常需要通过实践才能更好掌握这个技能的,单纯看理论,理解不够深入,实际应用到项目或者比赛中的时候,才会有更深入的理解。


3.4 特征选择

定义:从给定的特征集合中选出相关特征子集的过程称为特征选择(feature selection)。

1.对于一个学习任务,给定了属性集,其中某些属性可能对于学习来说很关键,但有些属性意义就不大。

  • 对当前学习任务有用的属性或者特征,称为相关特征(relevant feature);
  • 对当前学习任务没用的属性或者特征,称为无关特征(irrelevant feature)。

2.特征选择可能会降低模型的预测能力,因为被剔除的特征中可能包含了有效的信息,抛弃这部分信息一定程度上会降低模型的性能。但这也是计算复杂度和模型性能之间的取舍:

  • 如果保留尽可能多的特征,模型的性能会提升,但同时模型就变复杂,计算复杂度也同样提升;
  • 如果剔除尽可能多的特征,模型的性能会有所下降,但模型就变简单,也就降低计算复杂度。

3.常见的特征选择分为三类方法:

  • 过滤式(filter)
  • 包裹式(wrapper)
  • 嵌入式(embedding)
3.4.1 特征选择原理

1.采用特征选择的原因:

  • 维数灾难问题。因为属性或者特征过多造成的问题,如果可以选择重要的特征,使得仅需要一部分特征就可以构建模型,可以大大减轻维数灾难问题,从这个意义上讲,特征选择和降维技术有相似的动机,事实上它们也是处理高维数据的两大主流技术。
  • 去除无关特征可以降低学习任务的难度,也同样让模型变得简单,降低计算复杂度

2.特征选择最重要的是确保不丢失重要的特征,否则就会因为缺少重要的信息而无法得到一个性能很好的模型。

  • 给定数据集,学习任务不同,相关的特征很可能也不相同,因此特征选择中的不相关特征指的是与当前学习任务无关的特征
  • 有一类特征称作冗余特征(redundant feature),它们所包含的信息可以从其他特征中推演出来。
    • 冗余特征通常都不起作用,去除它们可以减轻模型训练的负担;
    • 但如果冗余特征恰好对应了完成学习任务所需要的某个中间概念,则它是有益的,可以降低学习任务的难度。

3.在没有任何先验知识,即领域知识的前提下,要想从初始特征集合中选择一个包含所有重要信息的特征子集,唯一做法就是遍历所有可能的特征组合。

但这种做法并不实际,也不可行,因为会遭遇组合爆炸,特征数量稍多就无法进行。

一个可选的方案是:

  • 产生一个候选子集,评价出它的好坏。
  • 基于评价结果产生下一个候选子集,再评价其好坏。
  • 这个过程持续进行下去,直至无法找到更好的后续子集为止。

这里有两个问题:如何根据评价结果获取下一个候选特征子集?如何评价候选特征子集的好坏?

3.4.1.1 子集搜索

1.子集搜索方法步骤如下:

  • 给定特征集合 A={A1,A2,…,Ad} ,首先将每个特征看作一个候选子集(即每个子集中只有一个元素),然后对这 d 个候选子集进行评价。

    假设 A2 最优,于是将 A2 作为第一轮的选定子集。

  • 然后在上一轮的选定子集中加入一个特征,构成了包含两个特征的候选子集。

    假定 A2,A5 最优,且优于 A2 ,于是将 A2,A5 作为第二轮的选定子集。

  • 假定在第 k+1 轮时,本轮的最优的特征子集不如上一轮的最优的特征子集,则停止生成候选子集,并将上一轮选定的特征子集作为特征选择的结果。

2.这种逐渐增加相关特征的策略称作前向 forward搜索

类似地,如果从完整的特征集合开始,每次尝试去掉一个无关特征,这种逐渐减小特征的策略称作后向backward搜索

3.也可以将前向和后向搜索结合起来,每一轮逐渐增加选定的相关特征(这些特征在后续迭代中确定不会被去除),同时减少无关特征,这样的策略被称作是双向bidirectional搜索

4该策略是贪心的,因为它们仅仅考虑了使本轮选定集最优。但是除非进行穷举搜索,否则这样的问题无法避免。

3.4.1.2 子集评价

1.子集评价的做法如下:

给定数据集 D,假设所有属性均为离散型。对属性子集 A,假定根据其取值将 D 分成了 V 个子集: D 1 , D 2 , ⋯   , D V {D_1, D_2, \cdots, D_V} D1,D2,,DV

可以计算属性子集 A 的信息增益:
g ( D , A ) = H ( D ) − H ( D ∣ A ) = H ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ H ( D v ) g(D, A) = H(D) - H(D|A)=H(D)-\sum^V_{v=1}\frac{|D_v|}{|D|}H(D_v) g<

  • 30
    点赞
  • 254
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

spearhead_cai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值