特征工程

将原始数据映射到特征

图 1 左侧表示来自输入数据源的原始数据,右侧表示特征矢量,也就是组成数据集中样本的浮点值集。 特征工程指的是将原始数据转换为特征矢量。进行特征工程预计需要大量时间。

机器学习模型通常期望样本表示为实数矢量。这种矢量的构建方法如下:为每个字段衍生特征,然后将它们全部连接到一起。


图 1. 程序工程将原始数据映射到机器学习特征。


映射数值

机器学习模型根据浮点值进行训练,因此整数和浮点原始数据不需要特殊编码。正如图 2 所示,将原始整数值 6 转换为特征值 6.0 是没有意义的:


映射字符串值

模型无法通过字符串值学习规律,因此您需要进行一些特征工程来将这些值转换为数字形式:

  1. 首先,为您要表示的所有特征的字符串值定义一个词汇表。对于 street_name 特征,该词汇表中将包含您知道的所有街道。

    注意所有其他街道都可以归入一个笼统的“其他”类别,该类别称为 OOV(未收录到词汇表中)桶。
  2. 然后,使用该词汇表创建一个独热编码,用于将指定字符串值表示为一个二元矢量。在该矢量(与指定的字符串值对应)中:

    • 只有一个元素设为 1
    • 其他所有元素均设为 0

    该矢量的长度等于词汇表中的元素数。

图 3 显示了某条特定街道 (Shorebird Way) 的独热编码。在此二元矢量中,代表 Shorebird Way 的元素的值为 1,而代表所有其他街道的元素的值为 0


映射分类(枚举)值

分类特征具有一组离散的可能值。例如,名为 Lowland Countries 的特征只包含 3 个可能值:

 
{'Netherlands', 'Belgium', 'Luxembourg'}

您可能会将分类特征(如 Lowland Countries)编码为枚举类型或表示不同值的整数离散集。例如:

  • 将荷兰表示为 0
  • 将比利时表示为 1
  • 将卢森堡表示为 2

不过,机器学习模型通常将每个分类特征表示为单独的布尔值。例如,Lowland Countries 在模型中可以表示为 3 个单独的布尔值特征:

  • x1:是荷兰吗?
  • x2:是比利时吗?
  • x3:是卢森堡吗?

采用这种方法编码还可以简化某个值可能属于多个分类这种情况(例如,“与法国接壤”对于比利时和卢森堡来说都是 True)。


转自:Google机器学习教程
https://developers.google.cn/machine-learning/crash-course/representation/feature-engineering

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值