我想使用sklearn构建和训练回归模型,假设它是LinearRegression
。
主要问题是,给定我的数据集,我(基于领域知识)知道可能存在一些代表不同组的变量(列),并且这些组应该分别建模 。
这是代表问题的示例数据集:
功能
['f1', 'f2']
-连续
['Group', 'SubGroup']
-分类(代表不同的组)
响应
['score']
-响应
+-------+-----------+----+----+-------+
| Group | Sub_Group | F1 | F2 | Score |
+-------+-----------+----+----+-------+
| G1 | 1 | 3 | 32 | 58 |
| G1 | 1 | 0 | 34 | 78 |
| G1 | 1 | 2 | 42 | 63 |
| G2 | 1 | 1 | 29 | 82 |
| G2 | 2 | 7 | 36 | 60 |
| G2 | 2 | 9 | 39 | 91 |
+-------+-----------+----+----+-------+
在这种情况下,这些是我需要分别建模的不同组:
组1: ('G1', 1)
+-------+-----------+----+----+-------+
| Group | Sub_Group | F1 | F2 | Score |
+-------+-----------+----+----+-------+
| G1 | 1 | 3 | 32 | 58 |
| G1 | 1 | 0 | 34 | 78 |
| G1 | 1 | 2 | 42 | 63 |
+-------+-----------+----+----+-------+
组2: ('G2', 1)
+-------+-----------+----+----+-------+
| Group | Sub_Group | F1 | F2 | Score |
+-------+-----------+----+----+-------+
| G2 | 1 | 1 | 29 | 82 |
+-------+-----------+----+----+-------+
组3: ('G2', 2)
+-------+-----------+----+----+-------+
| Group | Sub_Group | F1 | F2 | Score |
+-------+-----------+----+----+-------+
| G2 | 2 | 7 | 36 | 60 |
| G2 | 2 | 9 | 39 | 91 |
+-------+-----------+----+----+-------+
问题是:
我应该选择哪个选项来对这些不同的组进行建模?
选项1: One model for all groups.
使用完整的数据集训练一个大型模型,其中包含代表不同组的列。
在使用OneHotEncoder
进行训练/预测时,我将处理这些分类组列。
通常会针对给定的特征向量进行预测。
选项2: Different model for each group.
每个小组建立和训练不同的模型。
在这种情况下,我们将有3种不同的模型 在删除组列的同时在原始数据集的右侧进行训练。
预测将按组分别进行。
在模型评分(R2/RMSE/MSE
)上选择以上任何选项是否会有区别?
我认为应该有,因为将这些组表示为要素可能不正确,因为模型会将这些要素视为其他要素,并且它们最终可能没有真正应有的重要性。