类别型特征-dummy variable,one-hot,种类变量-及其问题

参考:
https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/6874046.html (种类变量问题)
https://www.cnblogs.com/lianyingteng/p/7792693.html(one-hot,dummy variable,及其问题)

  1. 种类变量:
    solve with category:
    Many learning algorithms either learn a single weight per feature, or they use distances between samples. The former is the case for linear models such as logistic regression, which are easy to explain.,(此处用回归分类进行解释)Suppose you have a dataset having only a single categorical feature "nationality", with values "UK", "French" and "US". Assume, without loss of generality, that these are encoded as 0, 1 and 2. You then have a weight w for this feature in a linear classifier, which will make some kind of decision based on the constraint w×x + b > 0, or equivalently w×x < b.
    problem:
    The problem now is that the weight w cannot encode a three-way choice. The three possible values of w×x are 0, w and 2×w. Either these three all lead to the same decision (they're all < b or ≥b) or "UK" and "French" lead to the same decision, or "French" and "US" give the same decision. There's no possibility for the model to learn that "UK" and "US" should be given the same label, with "French" the odd one out.(即种类变量,不能将两端的值区别于中间的值归于一类)
  2. dummy variable:
    哑变量编码直观的解释就是任意的将一个状态位去除。还是拿上面的例子来说,我们用4个状态位就足够反应上述5个类别的信息,也就是我们仅仅使用前四个状态位 [0,0,0,0] 就可以表达博士了。只是因为对于一个我们研究的样本,他已不是小学生、也不是中学生、也不是大学生、又不是研究生,那么我们就可以默认他是博士,是不是。(额,当然他现实生活也可能上幼儿园,但是我们统计的样本中他并不是,-)。所以,我们用哑变量编码可以将上述5类表示成:
    类别型特征-dummy variable,one-hot,种类变量-及其问题_第1张图片
    image.png
  3. one-hot:
    关于one-hot编码的具体介绍,可以参考我之前的一篇博客,博客地址:特征提取方法: one-hot 和 IF-IDF。这里,不再详细介绍。one-hot的基本思想:将离散型特征的每一种取值都看成一种状态,若你的这一特征中有N个不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一个取值只会使得一种状态处于“激活态”,也就是说这N种状态中只有一个状态位值为1,其他状态位都是0。举个例子,假设我们以学历为例,我们想要研究的类别为小学、中学、大学、硕士、博士五种类别,我们使用one-hot对其编码就会得到:
    类别型特征-dummy variable,one-hot,种类变量-及其问题_第2张图片
    image.png
  4. one-hot与dummy的区别及注意点:
    通过上面的例子,我们可以看出它们的“思想路线”是相同的,只是哑变量编码觉得one-hot编码太罗嗦了(一些很明显的事实还说的这么清楚),所以它就很那么很明显的东西省去了。这种简化不能说到底好不好,这要看使用的场景。下面我们以一个例子来说明:

    假设我们现在获得了一个模型
    image
    ,这里自变量满足
    image
    (因为特征是one-hot获得的,所有只有一个状态位为1,其他都为了0,所以它们加和总是等于1),故我们可以用
    image

    表示第三个特征,将其带入模型中,得到:
    类别型特征-dummy variable,one-hot,种类变量-及其问题_第3张图片
    image
    这时,我们就惊奇的发现
    image
    image
    这两个参数是等价的!那么我们模型的稳定性就成了一个待解决的问题。这个问题这么解决呢?有三种方法:
    (1)使用
    image
    正则化手段,将参数的选择上加一个限制,就是选择参数元素值小的那个作为最终参数,这样我们得到的参数就唯一了,模型也就稳定了。
    (2)把偏置项
    image

    去掉,这时我们发现也可以解决同一个模型参数等价的问题。
    类别型特征-dummy variable,one-hot,种类变量-及其问题_第4张图片
    image
    因为有了bias项,所以和我们去掉bias项的模型是完全不同的模型,不存在参数等价的问题。
    (3)再加上bias项的前提下,使用哑变量编码代替one-hot编码,这时去除了
    image
    ,也就不存在之前一种特征可以用其他特征表示的问题了。
  5. 使用总结:
    总结:我们使用one-hot编码时,通常我们的模型不加bias项 或者 加上bias项然后使用
    image
    正则化手段去约束参数;当我们使用哑变量编码时,通常我们的模型都会加bias项,因为不加bias项会导致固有属性的丢失

    选择建议:我感觉最好是选择正则化 + one-hot编码;哑变量编码也可以使用,不过最好选择前者。虽然哑变量可以去除one-hot编码的冗余信息,但是因为每个离散型特征各个取值的地位都是对等的,随意取舍未免来的太随意。

对于连续性变量的处理:
简单的说,使用连续变量的LR模型,模型表示为公式(1),而使用了one-hot或哑变量编码后的模型表示为公式(2)

类别型特征-dummy variable,one-hot,种类变量-及其问题_第5张图片
image
式中
image
表示连续型特征,
image
image
image
分别是离散化后在使用one-hot或哑变量编码后的若干个特征表示。这时我们发现使用连续值的LR模型用一个权值去管理该特征,而one-hot后有三个权值管理了这个特征,这样使得参数管理的更加精细,所以这样拓展了LR模型的非线性能力。
这样做除了增强了模型的 非线性能力外,还有什么好处呢?这样做了我们至少不用再去对变量进行归一化,也可以 加速参数的更新速度;再者使得一个很大权值管理一个特征,拆分成了许多小的权值管理这个特征多个表示,这样做降低了特征值扰动对模型为 稳定性影响,也降低了异常数据对模型的影响,进而使得模型具有更好的 鲁棒性

你可能感兴趣的:(类别型特征-dummy variable,one-hot,种类变量-及其问题)