当前位置:网站首页>什么是one-hot encoding?Pytorch中,将label变成one hot编码的两种方式
什么是one-hot encoding?Pytorch中,将label变成one hot编码的两种方式
2022-07-03 14:53:00 【Hali_Botebie】
文章目录
1、one hot encoding(到原点的欧式距离等距)
独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。
独热编码(哑变量 dummy variable)是因为大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到圆点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。离散特征进行one-hot编码后,编码后的特征,其实每一维度的特征都可以看做是连续的特征。就可以跟对连续型特征的归一化方法一样,对每一维特征进行归一化。比如归一化到[-1,1]或归一化到均值为0,方差为1。
为什么特征向量要映射到欧式空间?
将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类等机器学习算法中,特征之间距离的计算或相似度的计算是非常重要的,而我们常用的距离或相似度的计算都是在欧式空间的相似度计算,计算余弦相似性,基于的就是欧式空间。
独热编码优缺点
- 优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。
- 缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。
什么情况下(不)用独热编码?
- 用:独热编码用来解决类别型数据的离散值问题
- 不用:将离散型特征进行one-hot编码的作用,是为了让距离计算更合理,但如果特征是离散的,并且不用one-hot编码就可以很合理的计算出距离,那么就没必要进行one-hot编码。有些基于树的算法在处理变量时,并不是基于向量空间度量,数值只是个类别符号,即没有偏序关系,所以不用进行独热编码。 Tree Model不太需要one-hot编码: 对于决策树来说,one-hot的本质是增加树的深度。
什么情况下(不)需要归一化?
- 需要: 基于参数的模型或基于距离的模型,都是要进行特征的归一化。
- 不需要:基于树的方法是不需要进行特征的归一化,例如随机森林,bagging 和 boosting等。
one-hot编码为什么可以解决类别型数据的离散值问题
首先,one-hot编码是N位状态寄存器为N个状态进行编码的方式
eg:高、中、低不可分,→ 用0 0 0 三位编码之后变得可分了,并且成为互相独立的事件
类似 SVM中,原本线性不可分的特征,经过project之后到高维之后变得可分了
GBDT处理高维稀疏矩阵的时候效果并不好,即使是低维的稀疏矩阵也未必比SVM好
Tree Model不太需要one-hot编码
对于决策树来说,one-hot的本质是增加树的深度
tree-model是在动态的过程中生成类似 One-Hot + Feature Crossing 的机制
- 一个特征或者多个特征最终转换成一个叶子节点作为编码 ,one-hot可以理解成三个独立事件
- 决策树是没有特征大小的概念的,只有特征处于他分布的哪一部分的概念
one-hot可以解决线性可分问题 但是比不上label econding
one-hot降维后的缺点:
降维前可以交叉的降维后可能变得不能交叉
2、multi hot encoding
参考:multi-hot编码原理
对于某个属性对应的分类特征,可能该特征下有多个取值,比如一个特征表示对哪些物品感兴趣,那么这个特征不是单个值,而是有多个取值,样本1 在该属性下取值有1,2两种特征, 样本2 在该属性下有2一种特征, 样本3 在该属性下有3,4 两种特征,如果以类似one-hot编码的形式来定义特征应为样本1 [1,1,0,0] 样本2 [0,1,0,0], 样本3 [0,0,1,1],但是这种变量不能够直接用embedding_lookup去做,embedding_lookup只接受只有一个1的one-hot编码,那么为了完成这种情况的embedding需要两个步骤:
将输入属性转化为类型one-hot编码的形式, 在tensorflow中这个过程是通过tf.SparseTensor来完成的,实际上就是构建了一个字典矩阵,key为坐标,value为1或者0表示是否有值,对于一个样本如样本1来说就是构建了一个矩阵[[1,1,0,0]]表示有物品1和2,这个矩阵的规模为[batch_size,num_items],这个过程即为multi-hot编码
将构建好的类似于one-hot编码的矩阵与embedding矩阵相乘, embedding矩阵的规模为[num_items, embedding_size],相乘之后得到的输出规模为[batchi_size, embedding_size],即对多维多属性的特征构建了embedding vector
3、Pytorch中,将label变成one hot编码的两种方式
Pytorch中,将label变成one hot编码的两种方式
由于Pytorch不像TensorFlow有谷歌巨头做维护,很多功能并没有很高级的封装,比如说没有tf.one_hot函数。本篇介绍将一个mini batch的label向量变成形状为[batch size, class numbers]的one hot编码的两种方法,涉及到
tensor.scatter_
tensor.index_select
边栏推荐
- 牛客 BM83 字符串变形(大小写转换,字符串反转,字符串替换)
- Zzuli:1044 failure rate
- Zzuli:1052 sum of sequence 4
- Zzuli:1041 sum of sequence 2
- To improve efficiency or increase costs, how should developers understand pair programming?
- Zzuli:1059 highest score
- Time conversion ()
- Yolov5 advanced seven target tracking latest environment construction (II)
- C language fcntl function
- Centos7 deployment sentry redis (with architecture diagram, clear and easy to understand)
猜你喜欢
[wechat applet] wxss template style
4-29——4.32
Code writing and playing method of tonybot humanoid robot at fixed distance
Detailed explanation of four modes of distributed transaction (Seata)
Qt—绘制其他东西
Zero copy underlying analysis
Byte practice surface longitude
Adc128s022 ADC Verilog design and Implementation
4-20-4-23 concurrent server, TCP state transition;
[engine development] rendering architecture and advanced graphics programming
随机推荐
Pytorch深度学习和目标检测实战笔记
mmdetection 学习率与batch_size关系
[opengl] geometry shader
B2020 分糖果
How does vs+qt set the software version copyright, obtain the software version and display the version number?
C language fcntl function
[ue4] Niagara's indirect draw
表单文本框的使用(一) 选择文本
[opengl] face pinching system
Awvs batch operation script
C language to implement a password manager (under update)
Zzuli:1057 prime number determination
Web server code parsing - thread pool
Vs+qt application development, set software icon icon
Tonybot humanoid robot starts for the first time 0630
dllexport和dllimport
Implement Gobang with C language
4-24--4-28
Global and Chinese market of marketing automation 2022-2028: Research Report on technology, participants, trends, market size and share
链表有环,快慢指针走3步可以吗