Различные результаты tree () и rpart () в одном наборе данных с одинаковыми параметрами управления - PullRequest
0 голосов
/ 21 июня 2020

Добрый день,

Я хотел бы понять разницу между моделями деревьев, созданными tree () и rpart () в R.

Я изо всех сил старался установить то же самое параметры в каждой функции, чтобы иметь возможность копировать функции и получать одинаковые выходные данные на основе одного и того же набора данных. Я не могу сразу увидеть причины, по которым каждая функция дает разный результат. Следует ли отдавать предпочтение одному подходу перед другим?

Спасибо!

library(rpart)
library(rpart.plot)
library(tree)
library(tidyverse)


# Data is the training data set from https://www.kaggle.com/c/titanic/data?select=train.csv
titanic = read_csv('titanic.csv', col_names = TRUE)
titanic = titanic %>%
  select(Survived,Pclass,Sex,Age,SibSp,Parch,Fare,Embarked) 

titanic$Pclass = as.factor(titanic$Pclass)
titanic$Survived = as.factor(titanic$Survived)
titanic$Sex = as.factor(titanic$Sex)
titanic$Embarked = as.factor(titanic$Embarked)
titanic$Parch = as.integer(titanic$Parch)
titanic$SibSp = as.integer(titanic$SipSp)
str(titanic)

titanic_comp = na.omit(titanic)
set.seed(5076)
ind = sample(1:nrow(titanic_comp), 0.8*nrow(titanic_comp))
train = titanic_comp[ind,]
test = titanic_comp[-ind,]

tree_normal_control = tree.control(nrow(train), mincut = 5, minsize = 10, mindev = 0)
tree_normal = tree(Survived ~ ., data = train, split = "gini", control = tree_normal_control)
summary(tree_normal) 
tree_normal
plot(tree_normal)
text(tree_normal, cex=0.9)

tree_rpart_control = rpart.control(minsplit = 5, minbucket = 10, cp = 0)
tree_rpart = rpart(Survived ~ ., data = train, parms = list(split = "Gini"), control = tree_rpart_control)
summary(tree_rpart) 
tree_rpart
rpart.plot(tree_rpart)
...