zoukankan      html  css  js  c++  java
  • 虚拟变量和独热编码的区别(Difference of Dummy Variable & One Hot Encoding)

    在《定量变量和定性变量的转换(Transform of Quantitative & Qualitative Variables)》一文中,我们可以看到虚拟变量(Dummy Variable)与独热编码( One Hot Encoding)非常相似,其不同之处在于:在虚拟编码方案中,当特征具有 m 个不同类别标签时,我们将得到 m-1 个二进制特征,作为基准的特征被完全忽略;而在独热编码方案中,我们将得到个二进制特征。

    可以看到,独热编码( One Hot Encoding)比虚拟变量(Dummy Variable)多生成了一个变量,这对模型有什么影响呢?之前在《虚拟变量陷阱(Dummy Variable Trap)》一文中,我们阐述了使用独热编码会导致共线性问题,也就是自变量之间存在高度相关关系,从而使模型参数估计不准确。(另外,独热编码的截距表示均值,回归系数是与均值之间的差距;而虚拟变量的截距是参照类的值,回归系数表示与参照类的差距。)因此,如果线性模型有截距项,那么请使用虚拟变量;如果线性模型无截距项,那么使用独热编码。此外,如果线性模型有截距项,但在加了正则化之后,也可以使用独热编码,因为这相当于约束了 w 的解的空间。

    (注:为了模型稳定性的缘故,线性模型通常都是要有截距项的。)

    除此之外,虚拟变量(Dummy Variable)与独热编码( One Hot Encoding)之间还有什么区别呢?1,如果有N个特征,已知前N-1个特征的特征值之后,第N个特征的特征值也就知道了,因此独热编码有冗余,虚拟变量没有冗余;2独热编码可以直接从激活状态看出所对应的类别,而虚拟变量需要进行推论,因此独热编码比较直观,虚拟变量没有那么直观

    总结:如果使用正则化,那么推荐使用独热编码,因为regularization能够处理多余的自由度,使用正则化手段去约束参数,同时类别型变量的各个值的地位是对等的。如果不使用正则化,那么使用虚拟变量(这样多余的自由度都被统摄到截距项intercept里去了)。

    参考:https://www.cnblogs.com/lianyingteng/p/7792693.html

  • 相关阅读:
    Linux下的输入/输出重定向
    strcpy与strncpy的区别
    C++的函数重载
    gtest 学习二
    gtest 学习一
    char* wchar* char wchar转换
    iconv 编译不通过问题
    嵌入式常用库
    驱动编程class_create说明
    libiconv 交叉编译
  • 原文地址:https://www.cnblogs.com/HuZihu/p/9692554.html
Copyright © 2011-2022 走看看