1

我是苏打水和机器学习的新手,

我用两个数据集构建了 GBM 模型,手动分为训练和测试。任务是具有所有数字属性的分类(响应列转换为枚举类型)。代码在 Scala 中。

val gbmParams = new GBMParameters()
  gbmParams._train = train
  gbmParams._valid = test
  gbmParams._response_column = "response"
  gbmParams._ntrees = 50
  gbmParams._max_depth = 6

val gbm = new GBM(gbmParams)
val gbmModel = gbm.trainModel.get

在模型摘要中,我得到了四种不同的结果——一种在训练数据上,另一种在测试数据上,然后再构建带有预测的单个树。结果在每种情况下的预测值为 1 - 这是用于测试数据:

CM: Confusion Matrix (vertical: actual; across: predicted):
       0    1   Error       Rate
    0  0  500  1,0000  500 / 500
    1  0  300  0,0000    0 / 300
Totals 0  800  0,6250  500 / 800

第二个混淆矩阵与训练数据的预测值相似,在每种情况下都为 1。构建树后的第三和第四混淆矩阵给出了正常结果,其值分布在矩阵的所有部分。

我需要解释第一个和第二个矩阵。为什么苏打水会这样做?我可以使用这些结果还是只是中间步骤?

谢谢你。

4

1 回答 1

0

解释由下式给出的矩阵:

CM: Confusion Matrix (vertical: actual; across: predicted):
       0    1   Error       Rate
    0  0  500  1,0000  500 / 500
    1  0  300  0,0000    0 / 300
Totals 0  800  0,6250  500 / 800

我们可以看到,所有 800 个观察值都被标记为1,由行中的数字给出Totals

正在测试的模型预测了0500 次,而1行给出了 300 次。0.625这给你一个62.5%的总体误差。

这告诉我们两件事:

  • 该数据集中的数据完全不平衡,有利于 class 1
  • 该模型做得很糟糕

这两个初始矩阵是否有可能代表未经训练的模型的总结,本质上是随机选择类别?而后两个矩阵代表了训练模型的总结?

于 2017-04-24T16:20:41.770 回答