处理训练和测试数据中的不同因子水平

时间:2016-11-10 20:15:19

标签: r machine-learning classification random-forest categorical-data

我有一个20列的训练数据集,所有这些都是我必须用于训练模型的因素,我已经获得了测试数据集,我必须将我的模型用于预测并提交。

我正在进行初始数据探索,只是出于好奇心检查了训练数据的水平和测试数据水平,因为我们正在处理所有分类变量。令我沮丧的是,大多数类别(变量)在训练和测试中都有不同的水平数据集。

例如

Select t2.Name as OriginalValue from 
tbl1 t1
inner join tblDefinitions t2 on t2.ID = t1.originalvalue
where field in ('Dept', 'Position', 'Seller') 

这里我在测试数据集中有一个额外的类别,如何处理这些情况,培训中c的额外类别非常低,所以我想根据其分布如何将该因素与其他因素合并使用因变量,但我仍然坚持如何处理测试中的额外级别。

更多例子

table(train$cap.shape) #training data column levels
  b    c    f    k    x 
196    4 2356  828 2300

table(test$cap.shape) #test data 

 b    f    s    x 
256  796   32 1356

在本专栏中,我们在测试中有2个额外的级别,测试数据集中包含大量实例。我该如何处理这些差异。

table(train$odor) #train
  c    f    m    n    p    s    y 
 189 2155   36 2150    2  576  576

table(test$odor) #test

  a    c    f    l    n    p 
400    3    5  400 1378  254

这里我们有额外的因素u

我是否应该首先在训练集上建立模型并找到重要的预测因子,然后担心因子水平?

1 个答案:

答案 0 :(得分:1)

拥有不同的功能集违反了机器学习的基本规则。训练和测试数据必须代表相同的数据空间。这些不;尽管每对都有一个共同的特征内核(维度),但要在同一模型上使用它们,您必须将每个集合仅减少为公共特征,或者将两者集合扩展到特征的并集,填充"不在乎"或者额外特征的语义空值。