我是否应该为每个子集建立不同的模型

时间:2018-12-14 13:33:30

标签: machine-learning scikit-learn regression categorical-data

我有一个具有分类变量 class 的数据集,我正在尝试解决回归问题

我不知道是否应该在整个数据集上构建模型并将变量 class 视为输入变量之一,还是应该为每个类构建一个完全不同的模型。

什么是通用规则,可以帮助我在两种方法之间做出决定。

这是我的数据外观的一个示例

+------------+----+-----+-----------------+
|   Class    | X1 | X2  |     Speed       |
+------------+----+-----+-----------------+
| Class1     | 12 | 123 |              10 |
| Class2     | 14 | 120 |              32 |
| Class3     | 15 |  34 |              12 |
|   .        |  . |   . |               . |
|   .        |  . |   . |               . |
|   .        |    |     |                 |
|  Class 300 | 23 |  13 |              45 |
+------------+----+-----+-----------------+

Class是输入类别变量,我大约有300个类。输出变量为Speed。我正在尝试使用变量ClassX1X2来预测速度。

我应该分别为每个Class建立一个模型。因此,当我知道输入类型为Class1时,我将选择为Class1构建的模型。当输入类型为Class2时,我将使用为Class2构建的模型,依此类推。同样,Class变量中的值可以重复,意味着Class1可以出现4倍,Class2可以出现8倍,等等

我在想的另一种方法是将Class本身作为变量包含在内,并仅构建一个模型。

我不知道哪种是正确的方式

1 个答案:

答案 0 :(得分:1)

没有公认的正确方法。大多数人会告诉您尝试两种方法,然后使用最适合您数据的方法。不过,请注意以下几点:

  • 每个类是否都有足够的数据点来构建准确的模型?如果不是这样,将所有类(或类似的类)组合在一起可能是更好的方法。

  • 如果确实需要组合类,那么如果其他任何参数的规模都不相同,则可能需要规范化数据。 (请参阅Feature scaling作为参考。)

在不了解数据性质的情况下很难说更多话。