我的机器学习笔记——特征工程

我的机器学习笔记——特征工程

  • 1.特征工程是什么?
  • 2.特征工程子问题
    • 2.1 特征选择Feature Selection
    • 2.2 特征提取Feature Extraction
    • 2.3 特征构建 Feature Construction
  • 3.特征工程处理过程
  • 4.总结

1.特征工程是什么?

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
特征:特征是对原始数据的抽象,是原始数据的抽象表示,通过使用数值表示原始数据。
特征工程:简而言之,特征工程就是一个把原始数据转变成特征的过程;其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用,特征处理是特征工程的核心部分。

2.特征工程子问题

大家通常会把特征工程看做是一个问题。事实上,在特征工程下面,还有许多的子问题,主要包括:特征选择、特征提取和特征构造,下面从这三个子问题来详细介绍。

2.1 特征选择Feature Selection

定义:从给定的特征集合中选出相关特征子集的过程称为特征选择(feature selection)。
1.对于一个学习任务,给定了属性集,其中某些属性可能对于学习来说很关键,但有些属性意义就不大。

对当前学习任务有用的属性或者特征,称为相关特征(relevant feature);
对当前学习任务没用的属性或者特征,称为无关特征(irrelevant feature)。
2.特征选择可能会降低模型的预测能力,因为被剔除的特征中可能包含了有效的信息,抛弃这部分信息一定程度上会降低模型的性能。但这也是计算复杂度和模型性能之间的取舍:

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

3.根据特征选择的形式可以将特征选择方法分为3种:

  1. Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  2. Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
  3. Embedded:集成法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

2.2 特征提取Feature Extraction

原则上来讲,特征提取应该在特征选择之前。特征提取的对象是原始数据(raw data),它的目的是自动地构建新的特征,将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征。比如通过变换特征取值来减少原始数据中某个特征的取值个数等。对于表格数据,你可以在你设计的特征矩阵上使用主要成分分析(PCA)来进行特征提取从而创建新的特征。对于图像数据,可能还包括了线或边缘检测。
常用的方法有:PCA、ICA、LDA 。

1.PCA(Principal Component Analysis,主成分分析)
PCA 是降维最经典的方法,它旨在是找到数据中的主成分,并利用这些主成分来表征原始数据,从而达到降维的目的。
PCA 的解法一般分为以下几个步骤:
1.对样本数据进行中心化处理;
2.求样本协方差矩阵;
3.对协方差矩阵进行特征值分解,将特征值从大到小排列;
4.取特征值前 n 个最大的对应的特征向量 W1, W2, ..., Wn ,这样将原来 m 维的样本降低到 n 维。
通过 PCA ,就可以将方差较小的特征给抛弃,这里,特征向量可以理解为坐标转换中新坐标轴的方向,特征值表示在对应特征向量上的方差,特征值越大,方差越大,信息量也就越大。

2.LDA(Linear Discriminant Analysis,线性判别分析)

LDA 是一种有监督学习算法,相比较 PCA,它考虑到数据的类别信息,而 PCA 没有考虑,只是将数据映射到方差比较大的方向上而已。
LDA 的优点如下:

  • 相比较 PCA,LDA 更加擅长处理带有类别信息的数据;
  • 线性模型对噪声的鲁棒性比较好,LDA 是一种有效的降维方法

3.ICA(Independent Component Analysis,独立成分分析)

PCA特征转换降维,提取的是不相关的部分,ICA独立成分分析,获得的是相互独立的属性。ICA算法本质寻找一个线性变换 z = Wx,使得 z 的各个特征分量之间的独立性最大。

通常先采用 PCA 对数据进行降维,然后再用 ICA 来从多个维度分离出有用数据。PCA 是 ICA 的数据预处理方法。下面两篇文章对ICA进行了细致的讲解:

https://blog.csdn.net/u012421852/article/details/80500940
https://www.cnblogs.com/jerrylead/archive/2011/04/19/2021071.html

2.3 特征构建 Feature Construction

==特征构建是指从原始数据中人工的构建新的特征。==需要花时间去观察原始数据,思考问题的潜在形式和数据结构,对数据敏感性和机器学习实战经验能帮助特征构建。

特征构建需要很强的洞察力和分析能力,要求我们能够从原始数据中找出一些具有物理意义的特征。假设原始数据是表格数据,一般你可以使用混合属性或者组合属性来创建新的特征,或是分解或切分原有的特征来创建新的特征。

特征构建非常需要相关的领域知识或者丰富的实践经验才能很好构建出更好的有用的新特征,相比于特征提取,特征提取是通过一些现成的特征提取方法来将原始数据进行特征转换,而特征构建就需要我们自己人为的手工构建特征,比如组合两个特征,或者分解一个特征为多个新的特征。

3.特征工程处理过程

那么问题来了,特征工程具体是在哪个步骤做呢?

具体的机器学习过程是这样的一个过程:

1.(Task before here)
2.选择数据(Select Data): 整合数据,将数据规范化成一个数据集,收集起来.
3.数据预处理(Preprocess Data): 数据格式化,数据清理,采样等.
4.数据转换(Transform Data): 这个阶段做特征工程.
5.数据建模(Model Data): 建立模型,评估模型并逐步优化.
(Tasks after here…)

我们发现,特征工程和数据转换其实是等价的。事实上,特征工程是一个迭代过程,我们需要不断的设计特征、选择特征、建立模型、评估模型,然后才能得到最终的model。

4.总结

emmm…说了这么多,大家可能对特征工程、特征选择、特征提取和特征构建有点混乱了,下面来简单的做个总结:

首先来说说这几个术语:

  • 特征工程:利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
  • 特征构建:是原始数据中人工的构建新的特征。
  • 特征提取:自动地构建新的特征,将原始特征转换为一组具有明显物理意义或者统计意义或核的特征。
  • 特征选择:从特征集合中挑选一组最具统计意义的特征子集,从而达到降维的效果

Feature engineering is a super-set of activities which include feature extraction, feature construction and feature selection. Each of the three are important steps and none should be ignored. We could make a generalization of the importance though, from my experience the relative importance of the steps would be feature construction > feature extraction > feature selection.
翻译过来就是:特征工程是一个超集,它包括特征提取、特征构建和特征选择这三个子模块。在实践当中,每一个子模块都非常重要,忽略不得。根据答主的经验,他将这三个子模块的重要性进行了一个排名,即:特征构建>特征提取>特征选择。

你可能感兴趣的:(学长的学习日记,机器学习)