回归分析中的分类和有序特征数据差异?
Categorical and ordinal feature data difference in regression analysis?
我试图在进行回归分析时完全理解分类数据和顺序数据之间的区别。现在,什么是明确的:
分类特征和数据示例:
颜色:红、白、黑
为什么分类:red < white < black
在逻辑上是 不正确的
序数特征和数据示例:
条件:旧的,翻新的,新的
为什么序数:old < renovated < new
在逻辑上是 正确的
Categorical-to-numeric和ordinal-to-numeric编码方式:
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 < refriended < new → 0, 1, 2
0 0
1 2
2 2
3 1
在我的数据中,价格随着条件从 "old" 变为 "new" 而上涨。数字中的 "Old" 被编码为“0”。数字中的 'New' 被编码为“2”。因此,随着条件的提高,价格也会上涨。正确。
现在让我们看看 'color' 特性。就我而言,不同的颜色也会影响价格。例如,'black' 会比 'white' 贵。但是从上面提到的分类数据的数字表示来看,我没有看到像 'condition' 特征那样增加依赖性。这是否意味着如果使用 one-hot 编码,颜色的变化不会影响回归模型中的价格?如果无论如何都不影响价格,为什么要使用 one-hot 编码进行回归?你能澄清一下吗?
问题更新:
首先我介绍一下线性回归的公式:
让我们看一下颜色的数据表示:
让我们使用两种数据表示的公式来预测第 1 项和第 2 项的价格:
One-hot编码:
在这种情况下,将存在不同颜色的不同 theta,预测将是:
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)
颜色的序数编码:
在这种情况下,所有颜色都有共同的 theta 但乘数不同:
Price (1 item) = 0 + 20*10 = 200$ (theta assumed for example)
Price (2 item) = 0 + 20*20 = 400$ (theta assumed for example)
在我的模型中,白色 < 红色 < 黑色的价格。似乎在这两种情况下都是合乎逻辑的预测。对于序数和分类表示。因此,无论数据类型(分类或顺序)如何,我都可以对回归使用任何编码吗?这种划分只是约定和 software-oriented 表示的问题,而不是回归逻辑本身的问题?
您将看到没有增加依赖性。这种区分的全部意义在于颜色不是您可以有意义地放置在连续体上的特征,正如您已经指出的那样。
one-hot encoding使得软件分析这个维度非常方便。您没有具有列出值的特征 "colour",而是具有一组布尔(存在/不存在)特征。例如,您上面的第 0 行具有特征 color_blue = true、color_green = false 和 color_red = false。
您获得的预测数据应该将其中的每一个显示为一个单独的维度。例如,color_blue 的存在可能价值 200 美元,而绿色是 - 100 美元。
总结:不要在(不存在的)颜色轴上寻找线性回归线 运行;相反,寻找 color_* 因素,每种颜色一个。就您的分析算法而言,这些是完全独立的功能; "one-hot" 编码(数字电路设计中的一个术语)只是 我们的 处理此问题的惯例。
这对您的理解有帮助吗?
在您编辑问题后 02:03 Z 2015 年 12 月 4 日:
不,你的假设不正确:这两种表示法不仅仅是为了方便。颜色顺序适用于此示例——因为效果恰好是所选编码的简洁线性函数。正如您的示例所示,您的更简单的编码假定白到红到黑的定价是线性的。当绿色、蓝色和棕色都是 25 美元,稀有的黄色价值 500 美元,而透明色降价 1,000 美元时,你会怎么做?
还有,你是怎么提前知道黑比白贵,又比红贵的?
考虑以小学区为单位的房价,该地区有50个区。如果您使用数字编码——学区编号、字母顺序位置或其他任意顺序——回归软件将很难找到该数字与房价之间的相关性。 PS 107 比 PS 32 或 PS 15 贵吗? Addington 和 Bendemeer 是否优于 Union City 和 Ventura?
根据 one-hot 原则将这些分成 50 个不同的特征,将特征与编码分离,并允许分析软件以数学上有意义的方式处理它们。它无论如何都不是完美的——例如,从 20 个特征扩展到 70 个意味着需要更长的时间才能收敛——但我们确实 为学区取得了有意义的结果。
如果您愿意,您现在可以 以预期的值顺序对该特征进行编码,并获得合理的拟合,同时几乎没有准确性损失和更快的模型预测(更少变量)。
您不能对顺序无关紧要的分类变量使用序数编码。建立回归模型的主要目的是查看一个变量的变化有多大对响应变量有多大影响。当您获得回归公式时,您会这样理解它:“变量 X 的 1 个单位变化导致 theta_x
响应变量的变化”。
例如,假设您建立了一个房价回归模型,您得到了这个:price = 1000 + (-50)*age_of_house
。这意味着房子的年龄增加 1 年导致价格下降 50。
当你有一个分类变量时,你不能在该变量中提及单位变化。您不能在颜色中说 1 个单位 increase/decrease...等等。因此,正如 Prune
在 his/her 答案中所说的那样,单热编码只是处理分类变量的一种约定。它允许您解释结果,例如,如果房子是白色的,当您的最终模型中 color_white 的系数为 +200 时,它会增加 200 美元的价值。如果房子不是白色的,该变量对您的响应变量没有影响,因为该值将为 0。
不要忘记 "Linear Regression" 模型只能解释变量之间的线性关系。
希望对您有所帮助。
我试图在进行回归分析时完全理解分类数据和顺序数据之间的区别。现在,什么是明确的:
分类特征和数据示例:
颜色:红、白、黑
为什么分类:red < white < black
在逻辑上是 不正确的
序数特征和数据示例:
条件:旧的,翻新的,新的
为什么序数:old < renovated < new
在逻辑上是 正确的
Categorical-to-numeric和ordinal-to-numeric编码方式:
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 < refriended < new → 0, 1, 2
0 0
1 2
2 2
3 1
在我的数据中,价格随着条件从 "old" 变为 "new" 而上涨。数字中的 "Old" 被编码为“0”。数字中的 'New' 被编码为“2”。因此,随着条件的提高,价格也会上涨。正确。
现在让我们看看 'color' 特性。就我而言,不同的颜色也会影响价格。例如,'black' 会比 'white' 贵。但是从上面提到的分类数据的数字表示来看,我没有看到像 'condition' 特征那样增加依赖性。这是否意味着如果使用 one-hot 编码,颜色的变化不会影响回归模型中的价格?如果无论如何都不影响价格,为什么要使用 one-hot 编码进行回归?你能澄清一下吗?
问题更新:
首先我介绍一下线性回归的公式:
让我们看一下颜色的数据表示:
One-hot编码:
在这种情况下,将存在不同颜色的不同 theta,预测将是:
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)
颜色的序数编码: 在这种情况下,所有颜色都有共同的 theta 但乘数不同:
Price (1 item) = 0 + 20*10 = 200$ (theta assumed for example)
Price (2 item) = 0 + 20*20 = 400$ (theta assumed for example)
在我的模型中,白色 < 红色 < 黑色的价格。似乎在这两种情况下都是合乎逻辑的预测。对于序数和分类表示。因此,无论数据类型(分类或顺序)如何,我都可以对回归使用任何编码吗?这种划分只是约定和 software-oriented 表示的问题,而不是回归逻辑本身的问题?
您将看到没有增加依赖性。这种区分的全部意义在于颜色不是您可以有意义地放置在连续体上的特征,正如您已经指出的那样。
one-hot encoding使得软件分析这个维度非常方便。您没有具有列出值的特征 "colour",而是具有一组布尔(存在/不存在)特征。例如,您上面的第 0 行具有特征 color_blue = true、color_green = false 和 color_red = false。
您获得的预测数据应该将其中的每一个显示为一个单独的维度。例如,color_blue 的存在可能价值 200 美元,而绿色是 - 100 美元。
总结:不要在(不存在的)颜色轴上寻找线性回归线 运行;相反,寻找 color_* 因素,每种颜色一个。就您的分析算法而言,这些是完全独立的功能; "one-hot" 编码(数字电路设计中的一个术语)只是 我们的 处理此问题的惯例。
这对您的理解有帮助吗?
在您编辑问题后 02:03 Z 2015 年 12 月 4 日:
不,你的假设不正确:这两种表示法不仅仅是为了方便。颜色顺序适用于此示例——因为效果恰好是所选编码的简洁线性函数。正如您的示例所示,您的更简单的编码假定白到红到黑的定价是线性的。当绿色、蓝色和棕色都是 25 美元,稀有的黄色价值 500 美元,而透明色降价 1,000 美元时,你会怎么做?
还有,你是怎么提前知道黑比白贵,又比红贵的?
考虑以小学区为单位的房价,该地区有50个区。如果您使用数字编码——学区编号、字母顺序位置或其他任意顺序——回归软件将很难找到该数字与房价之间的相关性。 PS 107 比 PS 32 或 PS 15 贵吗? Addington 和 Bendemeer 是否优于 Union City 和 Ventura?
根据 one-hot 原则将这些分成 50 个不同的特征,将特征与编码分离,并允许分析软件以数学上有意义的方式处理它们。它无论如何都不是完美的——例如,从 20 个特征扩展到 70 个意味着需要更长的时间才能收敛——但我们确实 为学区取得了有意义的结果。
如果您愿意,您现在可以 以预期的值顺序对该特征进行编码,并获得合理的拟合,同时几乎没有准确性损失和更快的模型预测(更少变量)。
您不能对顺序无关紧要的分类变量使用序数编码。建立回归模型的主要目的是查看一个变量的变化有多大对响应变量有多大影响。当您获得回归公式时,您会这样理解它:“变量 X 的 1 个单位变化导致 theta_x
响应变量的变化”。
例如,假设您建立了一个房价回归模型,您得到了这个:price = 1000 + (-50)*age_of_house
。这意味着房子的年龄增加 1 年导致价格下降 50。
当你有一个分类变量时,你不能在该变量中提及单位变化。您不能在颜色中说 1 个单位 increase/decrease...等等。因此,正如 Prune
在 his/her 答案中所说的那样,单热编码只是处理分类变量的一种约定。它允许您解释结果,例如,如果房子是白色的,当您的最终模型中 color_white 的系数为 +200 时,它会增加 200 美元的价值。如果房子不是白色的,该变量对您的响应变量没有影响,因为该值将为 0。
不要忘记 "Linear Regression" 模型只能解释变量之间的线性关系。
希望对您有所帮助。