数据分析:CART与随机森林模型比较

数据分析领域,模型的构建和验证是一个复杂的过程。曾参与一个模型的构建,虽然贡献不大,但对数据的图形化展示感到非常兴奋。尝试验证了模型的所有假设,最终在700个数据点上构建了5个简单的回归模型。整个练习复杂到足以让任何智商水平的人感到困惑。如今,当回顾那些建立在数百万观察值之上,背后运用复杂统计学的模型时,意识到机器学习与高级工具(如SAS、SPSS、R)的使用让工作变得多么简单。

数据集“鸢尾花”提供了50朵每种鸢尾花的萼片长度和宽度以及花瓣长度和宽度的测量值,分别以厘米为单位。数据集包含150个案例(行)和5个变量(列):萼片长度、萼片宽度、花瓣长度、花瓣宽度和物种。目标是基于4个花的特征变量来预测物种。

首先,将数据集加载到R中,然后查看一些关键统计数据。可以使用以下代码来实现:

data(iris) # 查看数据集 summary(iris) # 可视化数据集 qplot(Petal.Length, Petal.Width, colour=Species, data=iris)

三个物种似乎彼此分离得很好。预测边界案例的准确性决定了模型的预测能力。在这种情况下,将安装两个有用的包来制作CART模型。

library(rpart) library(caret)

加载库后,将人群分为两组:训练和验证。这样做是为了确保不会过度拟合模型。在这种情况下,使用50-50的比例来划分训练和验证。通常,保持训练更重,以确保捕捉到关键特征。可以使用以下代码来实现这种划分。

train.flag <- createDataPartition(y=iris$Species, p=0.5, list=FALSE) training <- iris[train.flag,] Validation <- iris[-train.flag,]

构建CART模型

一旦有了这两组数据,并且对数据有了基本的了解,现在就构建一个CART模型。使用了“caret”和“rpart”包来构建这个模型。然而,CART模型的传统表示在R上并不具有图形吸引力。因此,使用了一个名为“rattle”的包来构建这个决策树。“Rattle”构建的树更精美、更清晰,可以轻松解释。使用以下代码构建树并图形化检查这个树:

modfit <- train(Species~., method="rpart", data=training) library(rattle) fancyRpartPlot(modfit$finalModel)

现在,需要检查刚刚构建的CART模型的预测能力。在这里,以不匹配率(即树中的错误分类数量)作为决策标准。使用以下代码来实现相同的目标:

train.cart <- predict(modfit, newdata=training) table(train.cart, training$Species) # 错误分类率 = 3/75

在75个观察值中,只有3个错误分类,表明了良好的预测能力。通常,错误分类率低于30%的模型被认为是好模型。但是,好模型的范围取决于行业和问题的性质。一旦构建了模型,将在同一组数据上验证它。这样做是为了确保没有过度拟合模型。如果确实过度拟合了模型,验证将显示出预测能力的急剧下降。还建议对模型进行时间外验证。这将确保模型不是时间依赖的。例如,在节日期间构建的模型可能在常规时间不适用。为了简单起见,只进行时间内验证。使用以下代码进行时间内验证:

pred.cart <- predict(modfit, newdata=Validation) table(pred.cart, Validation$Species) # 错误分类率 = 4/75

从上述计算中,可以看到与训练相比,验证中的预测能力有所下降。这在大多数情况下通常是正确的。原因是,模型是在训练数据集上训练的,并且只是叠加在验证训练集上。但是,如果验证的预测能力低于或高于训练,这并不重要。需要检查的是它们是否足够接近。在这种情况下,确实看到错误分类率非常接近。因此,在这个案例研究中看到了一个稳定的CART模型。

现在,让尝试可视化预测错误的案例。以下是用来找到相同结果的代码:

correct <- pred.cart == Validation$Species qplot(Petal.Length, Petal.Width, colour=correct, data=Validation)

从图表中,可以看到预测错误的实际上是那些边界案例。已经讨论过,这些案例对于模型的比较至关重要。大多数模型都能够对彼此远离的观察值进行分类。需要一个模型足够敏锐,以区分这些边界案例。

在下一篇文章中,将使用随机森林算法解决相同的问题。希望随机森林能够为这些边界案例做出更好的预测。但是,永远不能概括CART和随机森林之间,或者任何预测算法的预测能力顺序。每个模型都有自己的优势。随机森林通常在训练人群中具有非常高的准确性,因为它使用许多不同的特征进行预测。但是,由于同样的原因,它有时会在数据上过度拟合模型。将在下一篇文章中图形化地看到这些观察结果,并更详细地讨论随机森林或CART成为更好预测模型的场景。

是否觉得这篇文章有用?这篇文章是否解决了任何疑问?是否在任何项目中比较过这两种模型?如果这样做了,请与分享对这个话题的想法。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485