1、特征工程
特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。 在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。
特征工程的重要性有以下几点:
-
特征越好,灵活性越强。好的特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易和维护。
-
特征越好,构建的模型越简单。好的特征可以在参数不是最优的情况,依然得到很好的性能,减少调参的工作量和时间,也就可以大大降低模型复杂度。
-
特征越好,模型的性能越出色。特征工程的目的本来就是为了提升模型的性能。
特征工程在机器学习中的步骤
一个普通的机器学习过程是这样的一个过程:
-
(Task before here):一般是问题分析和定义
-
选择数据(Select Data): 整合数据,将数据去标准化成一个数据集,收集到一起.
-
数据预处理(Preprocess Data): 数据格式化,数据清理,采样等。
-
数据转换(Transform Data): 这个阶段做特征工程。
-
数据建模(Model Data): 建立模型,评估模型并逐步优化。
-
(Tasks after here…):一般是结果展示
我们发现,特征工程和数据转换其实是等价的。事实上,特征工程是一个迭代过程,我们需要不断的设计特征、选择特征、建立模型、评估模型,然后才能得到最终的model。下面是特征工程的一个迭代过程:
1.头脑风暴式特征:意思就是进你可能的从原始数据中提取特征,暂时不考虑其重要性,对应于特征构建;
2.设计特征:根据你的问题,你可以使用自动地特征提取,或者是手工构造特征,或者两者混合使用;
3.选择特征:使用不同的特征重要性评分和特征选择方法进行特征选择;
4.评估模型:使用你选择的特征进行建模,同时使用未知的数据来评估你的模型精度。
如何让机器自动地学习出有效的特征也是机器学习中的一项重要研究内容,称为特征学习,也叫表示学习。特征学习分为特征选择、特征提取。同时,特征学习是特征工程的子部分。
特征工程,它包括了对数据的预处理、特征提取、特征选择以及特征构建等几个步骤,可以说能否训练一个好的模型,除了选择合适的算法,准备好数据也是非常关键的!
2、数据预处理
3、特征处理
4、特征选择
5、特征提取
特征提取一般是在特征选择之前,它提取的对象是原始数据,目的就是自动地构建新的特征,将原始数据转换为一组具有明显物理意义(比如 Gabor、几何特征、纹理特征)或者统计意义的特征。
一般常用的方法包括降维(PCA、ICA、LDA等)、图像方面的SIFT、Gabor、HOG等、文本方面的词袋模型、词嵌入模型等,这里简单介绍这几种方法的一些基本概念。
特征提取和特征选择的区别
特征提取与特征选择都是为了从原始特征中找出最有效的特征。
它们之间的区别是特征提取强调通过特征转换的方式得到一组具有明显物理或统计意义的特征;
而特征选择是从特征集合中挑选一组具有明显物理或统计意义的特征子集。
两者都能帮助减少特征的维度、数据冗余,特征提取有时能发现更有意义的特征属性,特征选择的过程经常能表示出每个特征的重要性对于模型构建的重要性。
参考资料:
https://coladrill.github.io/2018/10/02/%E7%89%B9%E5%BE%81%E5%B7%A5%E7%A8%8B-%E6%96%87%E5%AD%97%E6%80%BB%E7%BB%93%E7%89%88/
https://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/