总结
本系列是机器学习课程的系列课程,主要介绍机器学习中特征工程部分。
参考
机器学习之特征工程详解
特征工程(Feature Engineering)
特征工程是指使用专业的背景知识和技巧处理数据,使得特征能在机器学习算法上发生更好的作用的过程。更好的特征意味着更强的灵活性,只需简单模型就能得到更好的结果,因此,特征工程在机器学习中占有相当重要的地位,可以说是决定结果成败的最关键和决定性的因素。
1.特征工程的基本定义
维基百科中给特征工程做出了简单定义:
特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的特征的过程。
简而言之,特征工程就是一个把原始数据转变成特征的过程,这些特征可以很好的描述这些数据,并且利用它们建立的模型在未知数据上的表现性能可以达到最优(或者接近最佳性能)。
从数学的角度来看,特征工程简单讲就是发现对因变量y有明显影响作用的特征,通常称自变量x为特征,特征工程就是人工地去设计输入变量X,特征工程的目的是发现重要特征。
“feature engineering is manually designing what the input x’s should be.”
“you have to turn your inputs into things the algorithm can understand.”
如何能够分解和聚合原始数据,以更好的表达问题的本质?这是做特征工程的目的。
特征工程是数据挖掘模型开发中最耗时、最重要的一步。
机器学习算法很多都是由于建立一个学习器能够理解的工程化特征而获得成功的。”——ScottLocklin,in “Neglected machine learning ideas”
数据中的特征对预测的模型和获得的结果有着直接的影响。可以这样认为,特征选择和准备越好,获得的结果也就越好。这是正确的,但也存在误导。预测的结果其实取决于许多相关的属性:比如说能获得的数据、准备好的特征以及模型的选择。 **
英文解释能帮助我们更好地理解特征工程:
Feature Engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models,resulting in improved model accuracy on unseen data.
特征工程是将原始数据转换为特征的过程,这些特征能更好地代表预测模型的潜在问题,从而提高模型对未知数据的准确性。
以性别判断为例做一个形象的比喻:
如何提取特征,能更准确地判断一个人的性别?
如果以这个人戴不戴眼镜为特征数据,显然这是一个相关性很低的数据,我们很难从这个特征中得出性别结果;
如果以有无喉结为特征数据,一般来说有喉结的为男性,反之为女性,这个特征能判定绝大多数情况,误差相对较小;
如果以Y染色体为特征数据,那么拥有Y染色体的为男性,没有Y染色体的为女性,这个特征能判定所有情况,误差为零。
可见,特征的选取对模型的性能表现十分重要。
剔除无关数据,选取更贴切的特征展示和描述数据,使之与结果具有高相关性的过程,就是特征工程。
因此,特征工程其实是一个如何展示和表现数据的问题,在实际工作中需要把数据以“良好”的方式展示出来,使得能够使用各种各样的机器学习模型来得到更好的结果。
如何从原始数据中去除不佳的数据,展示合适的数据成了特征工程的关键问题。
2.特征工程的意义
·特征越好,灵活性越强
只要特征选得好,即使是一般的模型(或算法)也能获得很好的性能,因为大多数模型(或算法)在好的数据特征下表现的性能都还不错。好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护。
·特征越好,构建的模型越简单
有了好的特征,即便你的参数不是最优的,你的模型性能也能仍然会表现的很nice,所以你就不需要花太多的时间去寻找最有参数,这大大的降低了模型的复杂度,使模型趋于简单。
·特征越好,模型的性能越出色
特征工程的最终目的就是提升模型的性能。
3.特征与属性的区别?
属性(attribute)和特征(Property)
并不是所有的属性都可以看做特征,区分它们的关键在于看这个属性对解决这个问题有没有影响!可以认为特征是对于建模任务有用的属性。
表格式的数据是用行来表示一个实例,列来表示属性和变量。
每一个属性可以是一个特征。特征与属性的不同之处在于,特征可以表达更多的跟问题上下文有关的内容。
特征是一个对于问题建模有意义的属性。
我们使用有意义(有用的)来区别特征和属性,认为如果一个特征没有意义是不会被认为是特征的,如果一个特征对问题没有影响,那就不是这个问题的一部分。
在计算机视觉领域,一幅图像是一个对象,但是一个特征可能是图像中的一行;
在自然语言处理中每一个文档或者一条微博是一个对象,一个短语或者单词的计数可以作为特征;在语音识别中,一段声音是一个实例,一个特征可能是单个词或者发音。
上图参考:踩实底子|每日学习|02-特征工程和文本特征提取【下】
4.什么是特征重要性?
特征重要性,可以被认为是一个选择特征重要的评价方法。特征可以被分配一个分值,然后按照这个分值排序,那些具有较高得分的特征可以被选出来包含在训练集中,同时剩余的就可以被忽略。
特征重要性得分可以帮助我们抽取或者构建新的特征。挑选那些相似但是不同的特征作为有用的特征。 如果一个特征与因变量(被预测的事物)高度相关,那么这个特征可能很重要。相关系数和其他单变量的方法(每一个变量被认为是相互独立的)是比较通用的评估方法。 更复杂的方法是通过预测模型算法来对特征进行评分。这些预测模型内部有这样的特征选择机制,比如MARS,随机森林,梯度提升机。这些模型也可以得出变量的重要性。
5. 特征工程的工作流程
特征工程的基本工作流程可以分为四步:
·特征使用 (数据选择,可用性)
·特征获取 (特征来源,特征存储)
·特征处理 (数据清洗,特征预处理)
· 特征监控 (现有特征,新特性)
特征工程也可分为如下四个任务
Feature:An attribute useful for your modeling task.
特征:对建模任务有用的属性。
Feature Selection:From many features to a few that are useful
特征选择:从许多特征到一些有用的
Feature Extraction:The automatic construction of new features from raw data.
特征提取:从原始数据自动构建新特征。
Feature Construction:The manual construction of new features from raw data. Feature Importance:An estimate of the usefulness of a feature.
特征构造:根据原始数据手动构造新特征。特征重要性:对特征有用性的估计。
特征工程案例
https://www.heywhale.com/mw/project/62c3d965913a54a6603ea361?token=f9b6cf93b4b0d17b&shareby=5c05dcf1d30e5c00362c86d5#
我分享了一个项目给你《【特征工程系列】特征工程理论与代码实现》,快来看看吧