1、欢迎来到特征工程!!
在这门课程中,你将学习到构建一个优秀的机器学习模型过程中最重要的一步:特征工程。你将学习如何:
- 使用互信息确定哪些特征最重要
- 在几个真实世界的问题领域中创造新的特征
- 使用目标编码对高基数分类进行编码
- 使用k-means聚类创建分割特征
- 使用主成分分析将数据集的变化分解为特征
动手练习将构建一个完整的笔记本,应用所有这些技术来提交房价预测的入门竞赛。完成这门课程后,你将有几个可以用来进一步提高你的性能的想法。
你准备好了吗?让我们开始吧!!
2、特征工程的目标
特征工程的目标就是使你的数据更适合手头的问题。
考虑一下"显而易见的温度"度量,如热指数和风寒指数。这些量试图根据我们可以直接测量的空气温度、湿度和风速来衡量人类感知的温度。你可以把显而易见的温度看作是一种特征工程的结果,试图使观察到的数据更相关于我们真正关心的问题:外面的感觉如何!!
你可能会进行特征工程来:
- 提高模型的预测性能
- 减少计算或数据需求
- 提高结果的可解释性
3、特征工程的指导原则
对于一个特征来说,它必须与你的模型能够学习的目标有关系。例如,线性模型只能学习线性关系。所以,当使用线性模型时,你的目标是转换特征,使它们与目标的关系变为线性。
这里的关键思想是,你应用于一个特征的转换本质上成为了模型本身的一部分。假设你正在试图从一边的长度预测正方形地块的价格。直接将线性模型拟合到长度会得到糟糕的结果:关系不是线性的。
使用线性模型仅以长度为特征时拟合较差。
如果我们将长度特征平方得到’面积’,然而,我们创建了一个线性关系。将面积添加到特征集意味着这个线性模型现在可以拟合一个抛物线。换句话说,平方一个特征,给了线性模型拟合平方特征的能力。
左图: 贴合区域要好得多。
右图: 这也使长度更适合。
这应该向你展示了为什么在特征工程上投入时间会有如此高的回报。你的模型无法学习的任何关系,你都可以通过转换自己提供。当你开发你的特征集时,思考一下你的模型可以使用什么信息来达到其最佳性能。
4、例子 - 混凝土配方
为了说明这些想法,我们将看到如何向数据集添加一些合成特征可以提高随机森林模型的预测性能。
混凝土数据集包含各种混凝土配方和最终产品的抗压强度,这是一个衡量这种混凝土可以承受多少负载的度量。这个数据集的任务是根据其配方预测混凝土的抗压强度。
In [1]:
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_scoredf <