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

    one-hot是比较常用的文本特征特征提取的方法。

    one-hot编码,又称“独热编码”。其实就是用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且这些寄存器位中只有一位有效,说白了就是只能有一个状态。

    下面举例说明:

    有四个样本,每个样本有三种特征:

          feature1   feature2   feature3
    sample1   1      4     3
    sample2   2      3     2
    sample3   1      2     2
    sample4   2      1     1
    上图用十进制数对每种特征进行了编码,feature1有两种可能的取值,feature2有4种可能的取值,feature3有3种可能的取值。比如说feature3有3种取值,或者说有3种状态,那么就用3个状态位来表示,以保证每个样本中的每个特征只有1位处于状态1,其他都是0。

    1->001

    2->010

    3->100

    其他的特征也都这么表示:

          feature1   feature2   feature3
    sample1   01     1000    100
    sample2   10     0100    010
    sample3   01     0010    010
    sample4   10     0001    001
    这样,4个样本的特征向量就可以这么表示:

    sample1 -> [0,1,1,0,0,0,1,0,0]

    sample2 -> [1,0,0,1,0,0,0,1,0]

    sample3 -> [0,1,0,0,1,0,0,1,0]

    sample4 -> [1,0,0,0,0,1,0,0,1]

    接下来看看怎么应用one-hot:

    one-hot在特征提取上属于词袋模型(bag of words),假设语料库中有三句话:

    我爱中国
    爸爸妈妈爱我
    爸爸妈妈爱中国
    首先,将语料库中的每句话分成单词,并编号:

    1:我      2:爱      3:爸爸      4:妈妈      5:中国

    然后,用one-hot对每句话提取特征向量:(图来源于网络)

    所以最终得到的每句话的特征向量就是:

    我爱中国 -> 1,1,0,0,1
    爸爸妈妈爱我 -> 1,1,1,1,0
    爸爸妈妈爱中国 -> 0,1,1,1,1
    那么这样做的优点和缺点都有什么?

    优点:

    解决了分类器处理离散数据困难的问题
    一定程度上起到了扩展特征的作用(上例中从3扩展到了9)
    缺点:

    one-hot是一个词袋模型,不考虑词与词之间的顺序问题,而在文本中,次的顺序是一个很重要的问题
    one-hot是基于词与词之间相互独立的情况下的,然而在多数情况中,词与词之间应该是相互影响的
    one-hot得到的特征是离散的,稀疏的

  • 相关阅读:
    【Swing】简单的计算器
    【SQL】嵌套查询与子查询
    【网络协议抓包分析】TCP传输控制协议(连接建立、释放)
    【网络协议抓包分析】IP互联网协议
    ******常见数据库笔试题*****
    OSI参考模型 VS TCP/IP参考模
    TCP/IP四层模型
    数组实现栈的功能
    子网掩码怎么计算
    C# 启动和结束一个线程
  • 原文地址:https://www.cnblogs.com/lzc978/p/10742712.html
Copyright © 2011-2022 走看看