虚拟变量陷阱(Dummy Variable Trap):指当原特征有m个类别时,如果将其转换成m个虚拟变量,就会导致变量间出现完全共线性的情况。

假设我们有一个特征“性别”,包含男性和女性两个类别,如果将此特征转换为2个虚拟变量,就是:男x1=[1,0],女x2=[0,1],意思就是:变量x1,当性别为男时,x1=1,否则x1=0;变量x2,当性别为女时,x2=1,否则x2=0。这样,目标y=w1x1+w2x2+b。因为x1+x2=1,因此,变量x1和变量x2之间存在线性关系,同时使用这两个变量将会导致共线性问题,使得模型参数无法估计。

解决的办法是:把目标y变成y=w1(x1+x2)+(w2-w1)x2+b=(w2-w1)x2+w1+b,意思就是把其中一个变量作为基准(这里是把“男”作为基准),将其从目标方程式中删去,这样只通过一个变量x2就能推导出所有信息,x2=1就表示性别为女,x2=0则表示性别为男。

需要注意的是,针对二元定性变量到虚拟变量的转换,直接对类别进行数字编码(男:0,女:1)和将其转换为虚拟变量(男:[0],女:[1])看似一样,但这只是一个巧合而已,这两种方法有本质的区别。前者是直接将类别型变量转变成离散值进行表示,后者是减少一个变量(作为基准),只留取一个变量,在此基础上对另一个变量进行推论。一定要注意不要搞混了。

总结来说就是:当原特征有m个类别时,我们需要将其转换成m-1个虚拟变量。

还有一点需要注意的是,基准类别该如何选择?如果基准类别选择不合理,虚拟变量之间仍然会存在共线性的问题。这里直接给出结论:选择占比最大的类别作为基准类别。假设有a,b,c三个类别,如果基准类别a占比太少,那么即使把a去除,b和c之和也会接近于1。

参考:https://cloud.tencent.com/info/a018bd66948cd1ac84665f6fafc2082a.html

最新文章

  1. SurfaceView 绘制分形图
  2. MySQL MHA 搭建&测试
  3. RTTI
  4. Android 如何通过代码模拟按钮点击 延时函数
  5. 58种jQuery模拟CSS3过渡页面切换特效
  6. Android--ViewPager制作APP引导页
  7. Ninject学习笔记<一>
  8. Angular2 从0到1 (一)
  9. 初学HTML5系列二:HTML5新增的事件属性
  10. java学习面向对象之内部类
  11. 泛泰A900 刷4.4专用中文TWRP2.7.1.1版 支持自己主动识别手机版本号(全球首创)
  12. JMM内存管理
  13. 第二棵树:Splay
  14. AJAX扩展-POST传递参数并跳转页面
  15. Python Learning - Two
  16. 多对多manytomany
  17. [翻译] Visual Studio 2019 RC版发布
  18. Aurelia binding
  19. 利用SHAPEIT将vcf文件进行基因型(genotype)定相(phasing):查看两个突变是否来源于同一条链(染色体或父本或母本),two mutations carried by the same read
  20. 读书笔记 enum枚举之位标志属性(Flags)浅析

热门文章

  1. 【1】TOPK最小的K个数(多种方法比较)
  2. C# Socket keeplive 心跳检测实例
  3. .NET Core入门
  4. C# vb .net实现玻璃桌子效果滤镜
  5. Ubuntu中使用sanp一键安装安装Notepad ++
  6. Assignment 2: UDP Pinger[课后作业]
  7. 单词dyamaund钻石dyamaund英语
  8. OSX - Mac OS 10.12后Caps lock(大写键)无法使用的解决办法
  9. trackingjs+websocket+百度人脸识别API,实现人脸签到
  10. centos7 上Docker安装与启动