机器学习实战----特征工程

一 什么是特征工程

       数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。其本质是一项工程活动,目的是最大限度的从原始数据中提取特征以供算法和模型使用。什么是“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限”?就像我们学习一本书,书中的数据和从书中能够获得的所有知识是这本书的知识上限,而我们通过各种学习方法获得的知识是接近这个上限。数据和特征就像一本书中的知识的上限,而模型和算法就是逼近这个上限。

二 为什么进行特征工程

       当你想要你的预测模型性能达到最佳时,你要做的不仅是要选取最好的算法,还要尽可能的从原始数据中获取更多的信息。

三 特征工程的过程

特征工程其实就是获取特征的一系列活动,当我们获取了原始数据,首先对原始数据进行了预处理之后,再进行提取特征,然后进行特征选择和特征降维,最后使用特征建立模型。如下图所示:

     机器学习实战----特征工程

1 预处理 

现实世界数据是“肮脏”的,好的数据能够带来好的结果,获得较好模型,进行较好的预测。对原始数据的清洗、过滤、缺失值处理、标准化、归一化等,使其更方便做后期的特征处理和机器学习。

常用预处理方法:

去重:去掉重复的数据;

过滤:把反常值(极高/极低)用平滑值代替;

标准化:把数据放缩到同样的范围。变换后各维特征有0均值,单位方差。也叫z-score规范化(零均值规范化)。计算方式是将特征值减去均值,除以标准差。

归一化:是将不同变化范围的值映射到相同的固定范围,常见的是[0,1]。Normalize 有L1和L2两个标准。

缺失值处理:用已有的数据补全丢掉的数据(如用均值补齐)

离散化:把数据按不同区间划分。特征二值化(Binarization) 

特征二值化:阈值的过程即将数值型数据转化为布尔型的二值数据,可以设置一个阈值(threshold)。即给定阈值,将特征转换为0/1。

总体来说预处理是对初始数据的初步处理。

2 特征提取

特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征。

提取方法:

1.分类变量特征提取:分类数据的独热编码方法。

2.机器学习问题中常见的文档特征向量:

(1)词库模型将文档转换成词块的频率构成的特征向量,用CountVectorizer类计算基本单词频次的二进制特征向量。
(2)通过停用词过滤(stop_word),词根还原,词形还原(wordNetLemmatizer)进一步优化特征向量,

(3)加入TF-IDF(TfidfVectorizer)权重调整文集常见词,消除文档长度对特征向量的影响。

3.图像特征提取的方法(skimage)

介绍了一个关于的手写数字识别的OCR问题,通过图像的像素矩阵扁平化来学习手写数字特征。这种方法非常耗费资源,于是引入兴趣点提取方法,通过SIFT和SURF进行优化。

3 特征选择

从特征集合中挑选一组最具统计意义的特征。

选择方法:

过滤法:(1)方差选择法:计算各个特征方差,选择方差大于阈值的特征(2)相关系数法:计算各个特征的pearson相关系数(3)互信息法:计算各个特征的信息增益。

封装法:递归消除法:使用基模型在训练中进行迭代,选择不同特征。

嵌入法:使用带惩罚项的基模型进行特征选择;树模型的特征选择(随机森林、决策树)

4 特征降维

线性降维:(1)主成分分析(PCA):选择方差最大的k个特征;(2)线性判别分析(LDA):选择分类型能最好的特征

机器学习实战----特征工程

非线性降维:(1)核主成分分析:带核函数的PCA; (2)局部线性嵌入(LLE):利用流行结构进行降维 (3)拉普拉斯图 (4)MDS

机器学习实战----特征工程

迁移成分分析:不同领域之间迁移学习降维

四 工具:

1 python中的Scikit-learn,可以特征选择、降维。

2  Maltab下的各种降维函数的使用

五  总结

      特征工程是构建任何智能系统的必要部分。特征工程是一门艺术也是一门科学,这就是为什么数据科学家在建模前通常花 70% 的时间用于准备数据。

引用文档:https://blog.****.net/Savinger/article/details/52876605

https://www.leiphone.com/news/201801/T9JlyTOAMxFZvWly.html