【发布时间】:2019-11-26 07:55:15
【问题描述】:
我有 2 个类别的数据集,我必须对其执行二进制分类。我选择随机森林作为分类器,因为它在其他模型中给了我最好的准确性。 dataset-1 中的数据点数为 462,dataset-2 包含 735 个数据点。我注意到我的数据有轻微的类不平衡,所以我尝试优化我的训练模型并通过提供类权重来重新训练我的模型。我提供了以下类权重值。
cwt <- c(0.385,0.614) # Class weights
ss <- c(300,300) # Sample size
我使用以下代码训练了模型
tr_forest <- randomForest(output ~., data = train,
ntree=nt, mtry=mt,importance=TRUE, proximity=TRUE,
maxnodes=mn,sampsize=ss,classwt=cwt,
keep.forest=TRUE,oob.prox=TRUE,oob.times= oobt,
replace=TRUE,nodesize=ns, do.trace=1
)
使用选择的类权重提高了我的模型的准确性,但我仍然怀疑我的方法是正确的还是只是巧合。如何确保我的班级体重选择是完美的?
我使用以下公式计算班级权重:
正 1234562 的类权重 =(中的数据点数 dataset-1)/(总数据点)
负 1234562 的类权重 =(中的数据点数 dataset-2)/(总数据点))
For dataset-1 462/1197 = 0.385 For dataset-2 735/1197 = 0.614
这是一种可接受的方法吗,如果不是,为什么它会提高我的模型的准确性。请帮助我了解班级权重的细微差别。
【问题讨论】:
-
回答没有帮助?
-
@desertnaut Perfect 是可以用于您的答案的词。我的朋友真的很有帮助。谢谢。
-
不客气
标签: r machine-learning classification random-forest