特征工程入门:应该保留和去掉那些特征

简介: 特征工程入门:应该保留和去掉那些特征

在特征/列上执行的任何能够帮助我们根据数据进行预测的操作都可以称为特征工程。这将包括以下内容:

添加新功能去掉一些讲述同样内容的特征将几个特性结合在一起将一个特性分解为多个特性

640.png

添加新特征

假设您想预测冰淇淋、手套或伞的销售。这些东西有什么共同之处?这些商品的销售取决于“天气”和“地点”。冰淇淋在夏天或更热的地方卖得更多,手套在天气更冷(冬天)或更冷的地方卖得更多,当下雨的时候我们肯定需要一把雨伞。因此,如果您拥有所有这些产品的历史销售数据,那么在每个数据级别上添加天气和销售区域将有助于您的模型更深入地了解这些模式。

去掉一些讲述同样内容的特征

为了解释,我制作了一个样本数据集,它包含了不同手机品牌的数据,如下图所示。让我们分析这些数据,并找出为什么我们应该删除/消除一些列-

640.png

现在在这个数据集中,如果我们仔细看,有一列是品牌名称,一列是型号名称,还有一列是手机(它基本上包含了品牌和型号名称)。因此,如果我们看到这种情况,我们不需要列Phone,因为这一列中的数据已经出现在其他列中,并且在这种情况下,分割数据比聚合数据更好。

还有另一列没有向“数据集-内存”规模添加任何值。所有的内存值都是以“GB”为单位的,因此没有必要保留一个不能显示数据集中任何变化的附加列,因为它不会帮助我们的模型学习不同的模式。

结合几个特性来创建新特性

这意味着我们可以使用2-3个特征或者行,然后创建一个新的特征来更好地解释数据。例如,在上面的数据集中,我们可以创建的一些特征可以是-计数的手机在每个品牌,每个手机在各自品牌的%份额,计数的手机在不同的内存大小,每单位内存的价格,等等。这将帮助模型在细粒度级别上理解数据。

将一个特性分解为多个特性

这个片段中最常见的例子是日期和地址。一个日期主要由年、月、日组成,比如以“07/28/2019”的形式。如果我们将日期列分解成2019年,7或7月28日,它会帮助我们加入各种其他表的表在一个更简单的方法,也会容易操作数据,因为现在而不是日期格式,我们必须处理数字容易得多。

为了同样方便的数据操作和数据连接,我们将地址数据(721 Main St., Apt 24, Dallas, TX-75432)分解为-街道名称(721 Main St.)、公寓号码/门牌号(Apt 24)、城市(Dallas)、州(TX/Texas)、邮政编码(75432)。

特征工程的常用方法

现在我们知道了什么是特征工程,让我们来看看我们可以通过哪些技术来进行特征工程。特性工程有各种各样的方法,但我将讨论一些最常见的技术和实践,我在我的常规问题中使用。

时滞——这意味着为以前的时间戳记录创建列(销售前一天、销售后一个月等等,基于用例)。这个功能可以帮助我们了解,例如,iPhone 1天前的销量是多少,2天前的销量是多少等等。这一点很重要,因为大多数机器学习算法都是逐行查看数据的,除非我们在同一行中没有前几天的记录,否则模型将无法有效地在当前和以前的日期记录之间创建模式。

类别的统计——这可以是任何简单的事情,比如统计每个品牌的手机数量,统计购买iPhone 11pro的人数,统计购买三星Galaxy和iPhone的不同年龄段的人数。

总和/平均值/中位数/累积总和/总和-任何数字特征,如工资,销售额,利润,年龄,体重,等等。

分类转换技术(替换值、单热编码、标签编码等)——这些技术用于将分类特性转换为各自的数字编码值,因为有些算法(如xgboost)不能识别分类特性。正确的技术取决于每列中的类别数量、分类列的数量等等。

标准化/标准化技术(最小-最大,标准缩放,等等)-可能有一些数据集,你有数字特征,但它们以不同的比例(kg, $, inch, sq.ft等)。因此,对于一些像聚类这样的机器学习方法来说,我们必须在一个尺度上拥有所有的数字(我们将在以后的博客中讨论更多关于聚类的内容,但是现在我们把它理解为基于相似性在空间中创建数据点的组)。

这些是创建新特性的一些非常普遍的方法,但是大多数特性工程很大程度上依赖于对图片中的数据集进行头脑风暴。例如,如果我们有员工的数据集,和如果我们有一般事务的数据集,特征工程将以不同的方式进行。

我们可以使用各种panda函数手动创建这些列。除此之外,还有一个名为FeatureTools的包,可以通过结合不同级别的数据集来创建新的列。

640.png

一旦我们对数据进行了预处理,我们就需要开始研究不同的ML技术来说明问题。我们将在接下来的文章中讨论这些。希望你们都发现这个文章有趣和有用!:)

目录
相关文章
|
14天前
|
机器学习/深度学习 自然语言处理 算法
【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标
【CV大模型SAM(Segment-Anything)】真是太强大了,分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标
|
1月前
时间序列分析实战(十一):ECM误差修正模型
时间序列分析实战(十一):ECM误差修正模型
|
6月前
|
机器学习/深度学习 数据挖掘 Python
统计回归模型中的一些概念解释
统计回归模型中的一些概念解释
|
7月前
|
机器学习/深度学习
LSTM长时间序列预测问题解决方案,多特征输出实战 完整代码数据+视频讲解
LSTM长时间序列预测问题解决方案,多特征输出实战 完整代码数据+视频讲解
100 0
|
10月前
|
机器学习/深度学习 算法 数据挖掘
书写自动智慧文本分类器的开发与应用:支持多分类、多标签分类、多层级分类和Kmeans聚类
书写自动智慧文本分类器的开发与应用:支持多分类、多标签分类、多层级分类和Kmeans聚类
书写自动智慧文本分类器的开发与应用:支持多分类、多标签分类、多层级分类和Kmeans聚类
|
10月前
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
113 0
|
11月前
|
数据采集 机器学习/深度学习 自然语言处理
实现文本数据数值化、方便后续进行回归分析等目的,需要对文本数据进行多标签分类和关系抽取
实现文本数据数值化、方便后续进行回归分析等目的,需要对文本数据进行多标签分类和关系抽取
161 0
|
机器学习/深度学习 算法
【论文写作分析】之五《融合类别特征扩展与N-gram子词过滤的fastText短文本分类》
【论文写作分析】之五《融合类别特征扩展与N-gram子词过滤的fastText短文本分类》
【论文写作分析】之五《融合类别特征扩展与N-gram子词过滤的fastText短文本分类》
|
机器学习/深度学习 数据挖掘
【论文写作分析】之一 《基于混合注意力Seq2seq模型的选项多标签分类》
【论文写作分析】之一 《基于混合注意力Seq2seq模型的选项多标签分类》
【论文写作分析】之一 《基于混合注意力Seq2seq模型的选项多标签分类》