131.003 数据预处理之Dummy Variable & One-Hot Encoding
@(131 - Machine Learning | 机器学习)
Demo
直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制
{sex:{male, female}}
得到独热码为{100}男性 ,{010}女性
Dummy Variable
虚拟变量的含义
虚拟变量又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的质变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到俩个方程的作用,而且接近现实。
虚拟变量的作用
最开始用树的模型没有考虑过要处理类别型变量,但是SVM貌似必须是数值型的,所以没法子,这块内容还是要看看的~
- 分离异常因素的影响,例如分析我国GDP的时间序列,必须考虑“文革”因素对国民经济的破坏性影响,剔除不可比的“文革”因素。
- 检验不同属性类型对因变量的作用,例如工资模型中的文化程度、季节对销售额的影响。
- 提高模型的精度,相当与将不同属性的样本合并,扩大了样本容量(增加了误差自由度,从而降低了误差方差)
虚拟变量的设置原则
在模型中引入多个虚拟变量时,虚拟变量的个数应按下列原则确定:
如果有m种互斥的属性类型,在模型中引入(m-1)个虚拟变量。
例如,性别有2个互斥的属性,引用2-1=1个虚拟变量;再如,文化程度分小学、初中、高中、大学、研究生5类,引用4个虚拟变量。
【该原则的解释会在dummy variable 和 one-hot encoding中差异中提及。】
One-Hot Encoding(独热编码)
也是处理类别型变量的一种方法,举例而言:如果变量X表示文化程度,共有{初中,高中,本科}三种取值。那么虚拟变量可以是X_初中,X_高中。而One-Hot为X_初中,X_高中,X_本科。各个新生成变量的取值为{0,1}。
One-Hot编码的含义
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
One-Hot 作用
解决了分类器不好处理属性数据的问题
在一定程度上也起到了扩充特征的作用
两者的差别
从上面的介绍上看,onehot会比dummy多生成一个变量。是否对模型有不同的影响呢?
这部分参看知乎上的回答,虽然不大明白,但是先把他们的回答贴在这里,备查&有空再学习下。
以线性回归为例,在使用onehot的时候,新生成的变量实际上是线性相关的,即同一个样本,同一个变量生成的onehot变量的和为1。即在上文的例子中,X_初中+X_高中+X_本科=1 。这样会导致【知乎中王赟的回答】存在的问题:
“如果你不使用regularization,那么one-hot encoding的模型会有多余的自由度。这个自由度体现在你可以把某一个分类型变量各个值对应的权重都增加某一数值,同时把另一个分类型变量各个值对应的权重都减小某一数值,而模型不变。在dummy encoding中,这些多余的自由度都被统摄到intercept里去了。这么看来,dummy encoding更好一些。
如果你使用regularization,那么regularization就能够处理这些多余的自由度。此时,我觉得用one-hot encoding更好,因为每个分类型变量的各个值的地位就是对等的了。”
评论中穆文的解释还算明白,摘抄于此:
以线性模型举例, 分类超平面是 wx+b =0,dummy下的话 w 有唯一解,one-hot 下 w 有无穷解 (就是答主说的 一部分权重增加点,另一部分权重减少点),这样每个变量的权重就没有解释意义了,也使得模型没有真正的预测效果。加了正则化之后,相当于约束了 w 的解空间,使得 w 相对有意义
one-hot无穷解的原因我自己猜测下:如果从线性回归最终是解一个方程的角度来理解可能方便些。方程的系数矩阵存在线性相关的变量,假设原模型中有两个类别型变量x1,x2,经过one-hot转化为x1_1,x1_2,x2_1,x2_2,且x1_1+x1_2=x2_1+x2_2=1,那么可以对这四个变量的系数做相应的变化,如x1的系数统一变成1.5倍,而x2的系数变为原来的0.5倍,并且方程等式关系依旧成立,但是导致会出现无穷解的情况。
其实线性回归的前提假设中就包含了变量独立性的要求。
至于正则化和约束解空间我还是不清楚,等学习到了在来填坑。安利下《ISLR》,回归讲的挺清楚的,比统计课本好的感觉。
实现
>>> import pandas as pd
>>> s = pd.Series(list('abca'))
>>> pd.get_dummies(s)
a b c
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
131.003 数据预处理之Dummy Variable & One-Hot Encoding的更多相关文章
- 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)
在<定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)>一文中,我们可以看到虚拟变量(Dummy Var ...
- 第一章:AI人工智能 の 数据预处理编程实战 Numpy, Pandas, Matplotlib, Scikit-Learn
本课主题 数据中 Independent 变量和 Dependent 变量 Python 数据预处理的三大神器:Numpy.Pandas.Matplotlib Scikit-Learn 的机器学习实战 ...
- 数据准备<3>:数据预处理
数据预处理是指因为算法或者分析需要,对经过数据质量检查后的数据进行转换.衍生.规约等操作的过程.整个数据预处理工作主要包括五个方面内容:简单函数变换.标准化.衍生虚拟变量.离散化.降维.本文将作展开介 ...
- 时间序列预测——深度好文,ARIMA是最难用的(数据预处理过程不适合工业应用),线性回归模型简单适用,预测趋势很不错,xgboost的话,不太适合趋势预测,如果数据平稳也可以使用。
补充:https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-15-276 如果用arima的话,还不如使用随机森 ...
- 数据预处理:独热编码(One-Hot Encoding)和 LabelEncoder标签编码
一.问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 离散特征的编码分为两种情况: 1.离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one- ...
- 数据预处理之独热编码(One-Hot Encoding)(转载)
问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male", "female"] ["from ...
- 机器学习——Day 1 数据预处理
写在开头 由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客. 学习教程来源于github的Avik-Jain的100-Days-Of-MLCode 英文版:https:// ...
- 借助 SIMD 数据布局模板和数据预处理提高 SIMD 在动画中的使用效率
原文链接 简介 为发挥 SIMD1 的最大作用,除了对其进行矢量化处理2外,我们还需作出其他努力.可以尝试为循环添加 #pragma omp simd3,查看编译器是否成功进行矢量化,如果性能有所提升 ...
- R语言进行数据预处理wranging
R语言进行数据预处理wranging li_volleyball 2016年3月22日 data wrangling with R packages:tidyr dplyr Ground rules ...
随机推荐
- #PHP# 华为云 API 方式发送短信
使用给华为云 消息 服务 API 方式发送短信 代码来自华为云,已通过测试 <?php /** * 华为云发送短信示例代码 * 本段代码需要使用自己的配置信息才能正常运行,出配置信息外,不需要改 ...
- golang (5) ---工程管理
1. go mod 添加本地package依赖 go mod 作为golang新的版本管理工具,减少了对GOPATH的依赖. 但是对本地文件的依赖的时候,提示 build server: cannot ...
- Vue 混入(mixins)
详细参考官方文档 基础 混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式.混入对象可以包含任意组件选项.当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项. ...
- 比特 字节 兆 GB转换
bit:比特byte:拜特(字节) 1字节=8比特k:千KB:千字节 1KB = 1024 byteMB:兆字节GB:千兆字节 //少用 Kb:千比特 Mb:兆比特 Gb:千兆比特
- 64位WIN7上安装11G R2 ,PLSQL的配置方法
64位WIN7上安装11G R2 ,PLSQL的配置方法:1. 1.1. 去http://www.oracle.com/technetwork/topics/winsoft-085727. ...
- 何为cookie?
何为cookie HTTP Cookie(也叫Web Cookie或浏览器Cookie)是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上 ...
- js if和switch,==和===
今天改插件BoxScroll的时候,因为if里面的条件判断多于两个,于是立马想着改写switch.改到一半,忽然记起来JSHint等代码质量检测工具中的一个要求,用===替换==,不用不可靠的强制转型 ...
- cmd sc命令进行服务操作
sc 命令可以注册.删除和查询系统服务 sc可供选择的参数有很多,这里不详细描述.只介绍简单的最基本的sc使用方式. 1. sc create 创建windows服务 eg: sc \\myserve ...
- Scrum 冲刺博客第三篇
一.当天站立式会议照片一张 二.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中 昨天已完成的工作 基本的页面设计 各个页面之间的跳转 背景音乐模块设计 今天计划完成的工作 ...
- Oracle中的自连接(self join)-当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自连接。
http://blog.163.com/wkyuyang_001/blog/static/10802122820091751049479/ 当表中的某一个字段与这个表中另外字段的相关时,我们可能用到自 ...