r语言party包和rpart包的区别

Python0131

r语言party包和rpart包的区别,第1张

rpart包的处理方式:首先对所有变量和所有分割点进行评估,最佳的选择是使分割后组内的数据更为“一致”(pure)。这里的“一致”是指组内数据的因变量取值变异较小。rpart包对这种“一致”性的默认度量是Gini值。确定停止划分的参数有很多(参见rpart.control),确定这些参数是非常重要而微妙的,因为划分越细,模型越复杂,越容易出现过度拟合的情况,而划分过粗,又会出现拟合不足。处理这个问题通常是使用“剪枝”(prune)方法。即先建立一个划分较细较为复杂的树模型,再根据交叉检验(Cross-Validation)的方法来估计不同“剪枝”条件下,各模型的误差,选择误差最小的树模型。

party包的处理方式:它的背景理论是“条件推断决策树”(conditional inference trees):它根据统计检验来确定自变量和分割点的选择。即先假设所有自变量与因变量均独立。再对它们进行卡方独立检验,检验P值小于阀值的自变量加入模型,相关性最强的自变量作为第一次分割的自变量。自变量选择好后,用置换检验来选择分割点。用party包建立的决策树不需要剪枝,因为阀值就决定了模型的复杂程度。所以如何决定阀值参数是非常重要的(参见ctree_control)。较为流行的做法是取不同的参数值进行交叉检验,选择误差最小的模型参数。

数据集的行是游戏玩家们玩的每一次游戏,列是某个玩家玩游戏时的速度、能力和决策,都是数值型变量。

任务是根据这些表现的衡量指标来预测某个玩家当前被分配到8个联赛中的哪一个,输出变量(LeagueIndex)是一个有序的类别变量,序号从1到8,最后一个对应的是技术最高的玩家组成的联赛。

一种对待序号输出的可能方式是把它们当作一个数值型变量,作为回归任务来建模,并构建一个回归树。GameID列表示唯一的游戏标识符,跟模型无关,可以丢弃;另外TotalHours列被识别为字符型,需要修正为数值型。

Age、HoursPerWeek和TotalHours存在缺失值,直接删除带有缺失值的行。(虽然树模型可以自动处理缺失值,但是后面还会使用其他模型来对比,那些模型不一定能处理缺失值)

使用rpart包构建回归树模型。

对于输入特征,我们会关注它用在树里任何地方时产生的优化准则(例如偏差或SSE)里的约简,将树里所有分裂的这个量值汇总起来,就得到变量重要性的相对数量。

越重要的变量会越早用来分裂数据(离根节点更近),也会更常用到。如果一个变量从来没有用过,那么就是不重要的,通过这种方式,可以用来做特征选择,但是这种方法对特征中的相关性敏感。

rpart包,rpart包是官方推荐的一个包,它的功能就是实现递归分割和回归树。

party包,关于递归分割更为详细的包,它包含了Bagging方法,可以产生条件推断树(conditional inference tree)等;

randomForest包,实现了分类与回归树的随机森林(random forest)算法。