我正在使用R来绘制不同机器学习算法的“决策边界表面”。
首先,我模拟了一些数据:
#load librarylibrary(RSSL)#generate datad <- generateCrescentMoon(1000,2,1)
然后,我在这个数据上训练了一些不同的机器学习算法:
#load librarylibrary(mlr)#specify dataaa = makeClassifTask(data = d, target = "Class")#specify and train machine learning algorithmslearners = list( makeLearner("classif.svm", kernel = "linear"), makeLearner("classif.svm", kernel = "polynomial"), makeLearner("classif.svm", kernel = "radial"), "classif.rpart", "classif.randomForest", "classif.knn")
现在,当我决定可视化结果时:
plotLearnerPrediction(learner = learners[[5]], task = aa) plotLearnerPrediction(learner = learners[[4]], task = aa)
对于左侧的图表(rpart),能否请有人帮助我理解“浅色区域”的含义?我明白“蓝色”应该代表“三角形类”,“红色”应该代表“圆形类”——但是“粉红色”和“浅蓝色”区域是什么?这些区域是否代表重叠区域?
请有人帮助我理解这一点?
回答:
根据plotLearnerPrediction
的文档:
…通过颜色alpha混合展示后验概率。
…
prob.alpha
(logical(1)
) 对于分类:将背景的alpha值设置为预测类的概率吗?允许可视化预测的“confidence”。如果没有,则仅在背景中显示预测标签的常量颜色。默认值为TRUE
。
您的模型对这些区域的确定性较低,给出了远离0和1的估计概率。
要了解更多细节,看起来我们需要深入研究源代码。在那里我们找到了以下代码片段:
if (taskdim == 2L) { p = ggplot(grid, aes_string(x = x1n, y = x2n)) if (hasLearnerProperties(learner, "prob") && prob.alpha) { # max of rows is prob for selected class prob = apply(getPredictionProbabilities(pred.grid, cl = td$class.levels), 1, max) grid$.prob.pred.class = prob p = p + geom_raster(data = grid, mapping = aes_string(fill = target, alpha = ".prob.pred.class"), show.legend = TRUE) + scale_fill_discrete(drop = FALSE) p = p + scale_alpha(limits = range(grid$.prob.pred.class)) } else { p = p + geom_raster(mapping = aes_string(fill = target)) }...
因此,颜色的alpha值根据获胜类的预测概率设置。如果您真的需要深入了解这是如何完成的,您需要比我更了解ggplot
;作为开始,请查看geom_raster
、aes_string
和scale_alpha
的文档页面。