zoukankan      html  css  js  c++  java
  • one-hot编码

    1、为什么要用这个编码?

    将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是x_1 = (1), x_2 = (2), x_3 = (3)。两个工作之间的距离是,(x_1, x_2) = 1, d(x_2, x_3) = 1, d(x_1, x_3) = 2。那么x_1和x_3工作之间就越不相似吗?显然这样的表示,计算出来的特征的距离是不合理。那如果使用one-hot编码,则得到x_1 = (1, 0, 0), x_2 = (0, 1, 0), x_3 = (0, 0, 1),那么两个工作之间的距离就都是sqrt(2).即每两个工作之间的距离是一样的,显得更合理。

    2、什么情况下使用one-hot编码(独热编码)?

    在很多学习任务中,特征并不总是连续值,而有可能是分类值。

    离散特征的编码分为两种情况:

      1、离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码

      2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}

    3、为了解决上述问题,其中一种可能的解决方法是采用独热编码(One-Hot Encoding)。

    独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。

    例如:

    自然状态码为:000,001,010,011,100,101(6种状态)

    独热编码为:000001,000010,000100,001000,010000,100000(6位二元特征值)

    可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。

    这样做的优点:

    1. 解决了分类器不好处理属性数据的问题

    2. 在一定程度上也起到了扩充特征的作用(稀疏性) 

    3. 它的值只有0和1,不同的类型存储在垂直的空间

     缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。

  • 相关阅读:
    唱歌循序渐进
    523法则
    南北朝鲜
    全名K歌
    《如何进行接口mock测试》
    vue动态添加路由,跳转页面时,页面报错路由重复:vue-router.esm.js?8c4f:16 [vue-router] Duplicate named routes definition: { name: "Login", path: "/login" }
    npm install -g 和npm install --save-dev的关系
    vue项目安装依赖项的时候总是报错
    聊聊 OAuth 2.0 的 Token 续期处理
    Spring Security OAuth 格式化 token 输出
  • 原文地址:https://www.cnblogs.com/h694879357/p/13379647.html
Copyright © 2011-2022 走看看