回归分析中的分类和序数特征数据表示?

时间:2015-12-04 11:27:14

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

我正在尝试在进行回归分析时完全理解分类和有序数据之间的差异。现在,很明显:

分类功能和数据示例:
颜色:红色,白色,黑色
为何选择分类:red < white < black逻辑不正确

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

分类到数字和序数到数字的编码方法:
分类数据的单热编码
有序数据的任意数字

分类数据到数字:

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']}

使用映射后的数字格式:旧&lt;翻新&lt;新→0,1,2

0    0
1    2
2    2
3    1

在我的数据中,我有&#39; color&#39;特征。随着颜色从白色变为黑色,价格上涨。从上面提到的规则,我可能不得不使用单热编码进行分类&#39;颜色&#39;数据。但为什么我不能使用序数表示。下面我提出了我的问题所在的观察结果。

首先介绍线性回归的公式: enter image description here
让我们看一下颜色的数据表示: enter image description here 让我们使用两种数据表示的公式来预测第一和第二项的价格:
单热编码: 在这种情况下,将存在不同颜色的不同色域。我假设这些已经来自回归(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个共同的θ,但我指定的乘数(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)

在我的模型中White&lt;红色&lt;价格黑。似乎这种相关性正常工作,在两种情况下都是逻辑预测。对于序数和分类表示。所以无论数据类型(分类或序数)如何,我都可以使用任何编码进行回归?数据表示中的这种划分只是约定和面向软件的表示,而不是回归逻辑本身的问题?

1 个答案:

答案 0 :(得分:5)

  

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

可以做任何事情。问题是什么可能会更好??答案是你应该使用代表,它包含有关数据结构的正确信息,并且不会包含错误的假设。这是什么意思?

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

那么为什么格式和#34;工作&#34;在你的情况下?因为你的问题很简单,实际上也是错误的。您可以分析预测训练样本的效果,实际上,给定一些过度拟合模型,无论表示何种表示,您都将获得完美的训练数据分数。事实上你所做的就是表明存在使事情正确的theta 。是的,如果存在适用于oridinal的theta(在线性模型中) - 那么一个热点总会有一个。问题是 - 在训练模型时你更有可能错过它。它不是面向软件的问题,而是一个学习型问题

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