zoukankan      html  css  js  c++  java
  • 独热编码

    在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等。
    这些特征值并不是连续的,而是离散的,无序的。通常我们需要对其进行特征数字化。

    那什么是特征数字化呢?例子如下:

    性别特征:["男","女"]----[0,1]
    祖国特征:["中国","美国,"法国"]----[0,1,2]
    运动特征:["足球","篮球","羽毛球","乒乓球"]----[0,1,2,3]

    现在有'某人'={
                "男"
                "中国"
                "乒乓球"
                }
    

    那么这个人数字化特征就是[0,0,4]来表示,但是这样的特征处理并不能直接放入机器学习算法中。因为类别之间是无序的(运动数据就是任意排序的),也就是算法识别的0无序,所以无法的值特征是哪一个?如此执意训练,造成负训练效果

    独热编码又称为一位有效编码

    —————————————————————————————————————————————————
    性别:

    男 => 10
    女 => 01

    祖国特征:["中国","美国,"法国"](这里N=3):

    中国 => 100
    美国 => 010
    法国 => 001

    运动特征:["足球","篮球","羽毛球","乒乓球"](这里N=4):

    足球 => 1000
    篮球 => 0100
    羽毛球 => 0010
    乒乓球 => 0001

    所以,当一个样本为["男","中国","乒乓球"]的时候,完整的特征数字化的结果为:

    [1,0,1,0,0,0,0,0,1]

    为什么使用one-hot编码来处理离散型特征?

    —————————————————————————————————————————————
    将离散型特征使用one-hot编码,确实会让特征之间的距离计算更加合理。

    比如,有一个离散型特征,代表工作类型,该离散型特征,共有三个取值,不使用one-hot编码,其表示分别是

    x_1 = (1)
    x_2 = (2)
    x_3 = (3)

    两个工作之间的距离是:

    d(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).即每两个工作之间的距离是一样的,显得更合理

  • 相关阅读:
    (五)TortoiseSVN 客户端-----安装
    (四)svn 服务器端的使用之创建工程目录
    (三)svn 服务器端之创建仓库
    (二)svn服务端安装配置
    (一)svn介绍
    JFinal常量配置学习笔记
    继承、多态、重载和重写
    聊聊基本类型(内置类型)
    日期和时间的处理
    设计模式——享元模式
  • 原文地址:https://www.cnblogs.com/thgpddl/p/12907369.html
Copyright © 2011-2022 走看看