我正在尝试在进行回归分析时完全理解分类数据和有序数据之间的差异。现在,很明显:
分类功能和数据示例:
颜色:红色,白色,黑色
为何选择分类: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
在我的数据价格上涨时,条件从“旧”变为“新”。数字中的“旧”编码为“0”。数字中的“新”编码为“2”。因此,随着条件的增加,价格也会上涨。正确的。
现在让我们来看看'颜色'功能。在我的情况下,不同的颜色也会影响价格。例如,'black'比'white'贵。但是从上面提到的分类数据的数字表示,我没有看到增加依赖性,因为它与'条件'功能一样。这是否意味着如果使用单热编码,颜色变化不会影响回归模型中的价格?如果不影响价格,为什么要使用单热编码进行回归?你能澄清一下吗?
更新问题:
首先我介绍线性回归的公式:
让我们看一下颜色的数据表示:
让我们使用两个数据表示的公式来预测第一和第二项的价格:
单热编码:
在这种情况下,将存在不同颜色的不同thetas,并且预测将是:
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$ (thetas are assumed for example)
颜色的序数编码: 在这种情况下,所有颜色都有共同的θ,但乘数不同:
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;价格黑。似乎在两种情况下都是逻辑预测。对于序数和分类表示。所以无论数据类型(分类或序数)如何,我都可以使用任何编码进行回归?这种划分只是约定和面向软件的表示,而不是回归逻辑本身的问题?
答案 0 :(得分:3)
您将看到不会增加依赖性。这种歧视的全部意义在于,颜色不是不是你可以有意义地放在连续体上的一个特征,正如你已经注意到的那样。
单热编码使软件分析此维度非常方便。而不是有一个功能&#34;颜色&#34;使用列出的值,您有一组布尔(当前/不存在)功能。例如,上面的第0行包含color_blue = true,color_green = false和color_red = false。
您获得的预测数据应将每个预测数据显示为单独的维度。例如,color_blue的价值可能是200美元,绿色则是100美元。
总结:不要寻找在(不存在的)颜色轴上运行的线性回归线;相反,寻找color_ *因子,每种颜色一个。就您的分析算法而言,这些是完全独立的特征; &#34; one-hot&#34;编码(来自数字电路设计的术语)仅仅是我们处理这个问题的惯例。
编辑问题02:03 Z 04 2015年12月:
不,你的假设不正确:这两种表述不仅仅是为了方便。颜色的排序适用于此示例 - 因为效果恰好是所选编码的整齐线性函数。如您的示例所示,您的简单编码假设白色到红色到黑色的定价是线性进展。绿色,蓝色和棕色都是25美元,罕见的黄色价值500美元,而透明价格减少1000美元,你会怎么做?
另外,你怎么预先知道黑人比白人更有价值,反过来比红人更值钱?
考虑基于小学区的住房价格,该地区有50个区。如果您使用数字编码 - 学区编号,按字母顺序排序或其他任意顺序 - 回归软件将很难找到该数字与住房价格之间的相关性。 PS 107比PS 32或PS 15更贵吗? Addington和Bendemeer是否更喜欢Union City和Ventura?
在这一热点原则下将这些特征拆分为50个不同的特征将特征与编码分离,并允许分析软件以数学上有意义的方式处理它们。它无论如何都不完美 - 从20个功能扩展到70个意味着它需要更长的时间才能融合 - 但我们做会为学区带来有意义的结果。< / p>
如果您愿意, 现在可以按照预期的价值顺序对该功能进行编码,并获得合理的拟合,几乎不会丢失准确度,并且可以更快地从模型中预测(更少的变量)。
答案 1 :(得分:2)
对于无关紧要的分类变量,您不能使用序数编码。构建回归模型的主要目的是查看一个变量的多少变化对响应变量的影响程度。当您获得回归公式时,这就是您阅读它的方式:“变量X中的1个单位变化导致响应变量中的theta_x
变化”。
例如,假设你建立了一个关于房价的回归模型,你得到了这个:price = 1000 + (-50)*age_of_house
。这意味着房屋年龄增加1年导致价格下降50。
如果您有分类变量,则无法提及该变量的单位变化。你不能说颜色的单位增加/减少......等等。因此,在他/她的答案中所说的单{hot}编码仅仅是处理分类变量的惯例。它允许您解释结果,如果房子是白色的话,当最终模型中的color_white系数为+200时,它会增加200美元。如果房子不是白色,那么该变量对您的响应变量没有影响,因为该值将为0。
不要忘记“线性回归”模型只能解释变量之间的线性关系。
我希望这会有所帮助。