我正在尝试在进行回归分析时完全理解分类和有序数据之间的差异.目前,很明显:
分类特征和数据示例:
颜色:红色,白色,黑色
为什么分类: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']}
使用映射后的数字格式:旧 在我的数据中,我有'颜色'功能.随着颜色从白色变为黑色,价格上涨.从上面提到的规则我可能不得不使用单热编码来分类'颜色'数据.但为什么我不能使用序数表示.下面我提出了我的问题所在的观察结果. 让我首先介绍线性回归的公式:
颜色的序数编码:
在这种情况下,所有颜色都有1个共同的θ,但我指定的乘数(10,20,30)不同: 在我的模型中White 所以无论数据类型(分类或序数)如何,我都可以使用任何编码进行回归?数据表示中的这种划分只是约定和面向软件的表示而不是回归逻辑本身的问题? 你可以做任何事情.问题是什么可能会更好?答案是你应该使用代表,它包含有关数据结构的正确信息,并且不会使用错误的假设.这是什么意思?
如果您的数据是分类的并且您使用数字格式,则嵌入了错误的结构(因为没有分类数据的排序) 如果您的数据是oridinal并且您使用one-hoe编码,则不要嵌入真正的结构(因为有一个排序而你忽略它).
那么为什么两种格式都"适用"你的情况呢?因为你的问题很简单,实际上也是错误的.您可以分析预测训练样本的效果,事实上,给定一些过度拟合模型,无论表示何种表现形式,您都将获得完美的训练数据分数.事实上你所做的就是表明存在使事情正确的theta.是的,如果存在适用于oridinal的theta(在线性模型中) - 那么一个热点总会有一个.问题是 - 在训练你的模型时你会更容易错过它.它不是面向软件的问题,而是一个学习型问题. 然而,在实践中,它不会发生.一旦你引入实际问题,有大量数据,可能是嘈杂,不确定等等,你会得到更好的分数,使用表示与问题的本质(这里 - oridinal)有关,而不是努力,然后使用表示不包括它(这里 - 一个热).为什么?由于是序这方面的知识,可以infered由模型(学习)的数据,然而,你将需要更多的训练数据来这样做.那么,为什么要将这些信息直接嵌入到数据结构中,从而导致更容易学习?在ML学习实际上很难,不要让它变得更难.另一方面,请记住,你必须确保你所嵌入的知识确实是真的,因为从数据中学习关系可能很困难,但从虚假关系中学习真实模式更难.0 0
1 2
2 2
3 1
我们来看看颜色的数据表示:
让我们使用两个数据表示的公式来预测第1和第2项的价格:
单热编码:
在这种情况下,将存在不同颜色的不同组.我假设这些已经来自回归(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$
Price (1 item) = 0 + 20*10 = 200$ (theta assumed for example)
Price (2 item) = 0 + 20*20 = 400$ (theta assumed for example)
1> lejlot..: