zoukankan      html  css  js  c++  java
  • 表示法--特征工程

    传统编程的关注点是代码。在机器学习项目中,关注点变成了表示。也就是说,开发者通过添加和改善特征来调整模型。


    将原始数据映射到特征

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

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

    image

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

    映射数据

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

    image

    图2 将整数值映射到浮点值

    映射字符串值

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

    1. 首先,为您要表示的所有特征的字符串定义一个词汇表,对于street_name特征,该词汇表中将包含您知道的所有街道。
    注意:所有其他街道都可以归入一个笼统的“其他”类别,该类别称为OOV(未收录到词汇表中)桶。
    
    1. 然后,使用该词汇表创建一个独热编码,用于将制定的字符串表示为一个二元矢量。在该矢量中:
    • 只有一个元素设置为1.
    • 其它所有元素均设置为0.

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

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

    image

    图3 通过独热编码映射字符串

    映射分类(枚举)值

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

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

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

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

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

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

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


    引用

    表示 (Representation):特征工程

  • 相关阅读:
    Logstash使用mongodb插件报错: ArgumentError: wrong number of arguments (given 2, expected 1)
    Vim注释行的方法
    设计模式之单例模式
    ssh命令的常用使用场景
    Flask 和Django
    Git 常用命令大全
    实例 静态 类
    python的各种推导式(列表推导式、字典推导式、集合推导式)
    MongoDB
    MySql变量说明
  • 原文地址:https://www.cnblogs.com/taro/p/8643175.html
Copyright © 2011-2022 走看看