为什么回归中的分类预测变量需要重新编码为多个预测变量?

机器算法验证 回归 机器学习 分类 预测模型 scikit-学习
2022-03-23 21:39:52

我正在使用 Python 的库 scikit learn 学习机器学习,在他们的教程中,他们提到了一个color可以有值的分类变量purplebluered

使用 3 个布尔变量color#purple不是使用单个变量而是将映射, color#blue,的原因什么?color#redcolorpurplebluered123

做任何一种方式都会对回归拟合/预测产生任何影响吗?

2个回答

详细说明上面同事的答案:假设您将紫色,蓝色,红色映射到x=1,2,3. x代表帽子的颜色,并且y销售量。然后如果我们有一个带有截距的模型,调用它a和系数x, 叫它b,那么我们会说:

y=a+bx

我们只能选择一个b在这里,它必须迎合所有不同的颜色。想象一下蓝色的帽子比紫色的帽子卖的多,蓝色的帽子比红色的多,那么我们的模型就适合紫蓝色的关系(1b<2b),但不是蓝红关系2b<3b

如果我们使用虚拟变量,那么我们可能会有如下模型:

y=a+bredxred+bpurpxpurp

这不会遇到与第一个模型相同的排序问题。请注意,如果有截距,我们只需要两个虚拟变量,因为这成为蓝色的基线。

这取决于颜色代表什么数据。

如果颜色代表某些数据的比例,则可以将颜色用作单个变量,并在回归中用数字表示颜色。例如,紫色表示风速 10 m/s,蓝色表示 20 m/s,红色表示风速 30 m/s。因此,如果颜色为蓝色,我们可以说某些东西(例如风)比颜色为紫色时大两倍,依此类推。

如果无法对颜色进行定量比较,通常的做法是将每种颜色编码为用于回归的虚拟(布尔)变量。