【问题标题】:Categorical and ordinal feature data representation in regression analysis?回归分析中的分类和有序特征数据表示?
【发布时间】:2016-03-09 07:49:46
【问题描述】:

在进行回归分析时,我试图完全理解分类数据和有序数据之间的差异。现在,什么是清楚的:

分类特征和数据示例:
颜色:红、白、黑
为什么要分类:red < white < black 在逻辑上不正确

序数特征和数据示例:
条件:旧的、翻新的、新的
为什么序数:old < renovated < new 在逻辑上是正确

分类到数值和序数到数值的编码方法:
分类数据的 One-Hot 编码
序数数据的任意数

分类数据转数值:

data = {'color': ['blue', 'green', 'green', 'red']}

One-Hot 编码后的数值格式:

   color_blue  color_green  color_red
0           1            0          0
1           0            1          0
2           0            1          0
3           0            0          1

序数数据转数值:

data = {'con': ['old', 'new', 'new', 'renovated']}

使用映射后的数值格式:Old

0    0
1    2
2    2
3    1

在我的数据中,我有“颜色”功能。随着颜色从白色变为黑色,价格上涨。根据上述规则,我可能必须对分类“颜色”数据使用单热编码。但是为什么我不能使用序数表示。下面我提供了我的观察结果。

让我首先介绍线性回归的公式:
让我们看一下颜色的数据表示: 让我们使用两种数据表示的公式来预测第 1 件和第 2 件商品的价格:
单热编码: 在这种情况下,将存在不同颜色的不同 theta。我假设 thetas 已经从回归(20、50 和 100)中得出。预测将是:

Price (1 item) = 0 + 20*1 + 50*0 + 100*0 = 20$  (thetas are assumed for example)
Price (2 item) = 0 + 20*0 + 50*1 + 100*0 = 50$  

颜色的序号编码: 在这种情况下,所有颜色都有 1 个共同的 theta,但我分配的乘数(10、20、30)不同:

Price (1 item) = 0 + 20*10 = 200$  (theta assumed for example)
Price (2 item) = 0 + 20*20 = 400$  (theta assumed for example)

在我的模型中,价格为白色

【问题讨论】:

标签: machine-learning regression linear-regression categorical-data


【解决方案1】:

所以无论数据类型(分类或序数)如何,我都可以对回归使用任何编码吗?数据表示的这种划分只是约定和面向软件的表示的问题,而不是回归逻辑本身的问题?

可以做任何事。问题是什么可能会更好?答案是您应该使用嵌入有关数据结构的正确信息并且不嵌入错误假设的表示。这里是什么意思?

  • 如果您的数据是分类数据并且您使用数字格式,则嵌入 false 结构(因为分类数据没有排序)
  • 如果您的数据是原始数据并且您使用单锄编码,则您不要嵌入真正的结构(因为有一个排序而您忽略它)。

那么为什么在你的情况下这两种格式都“有效”?因为您的问题是微不足道的,实际上陈述不正确。您分析预测训练样本的效果如何,事实上,给定一些过拟合模型,无论表示是什么,您总是会在训练数据上获得满分。事实上,你所做的是表明存在使事情正确的 theta。是的,如果存在适用于原始模型的 theta(在线性模型中) - 总会有一个用于 one-hot。问题是 - 您在训练模型时更有可能错过它。这不是面向软件的问题,而是面向学习的问题

然而,在实践中,这不会发生。一旦您引入实际问题,包含大量数据,这些数据可能是嘈杂的、不确定的等。使用与问题的性质有关的表示(这里 - 原始)用更少的努力获得更好的分数 然后使用不包含它的表示(这里 - 一个热门)。为什么?因为可以从模型的数据中推断(学习)有序的这种知识,但是您需要更多的训练数据才能做到这一点。那么,如果您可以将这些信息直接嵌入到数据结构中从而导致更容易学习的问题,为什么要这样做呢?学习机器学习实际上很困难,不要让它变得更难。另一方面,请始终记住,您必须确保您嵌入的知识确实是真实的,因为可能很难从数据中学习关系,但更难从数据中学习真实的模式虚假关系。

【讨论】:

    猜你喜欢
    • 2016-03-08
    • 2020-05-27
    • 2016-03-04
    • 2015-05-10
    • 2018-08-08
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多