Curso de Data Science
Aula 10 – Data Science – R – Caso do Titanic – Kaggle
Continuação da aula 09, agora rodando os comandos no RStudio
Continuando com o problema do Titanic proposto pelo Kaggle.
CONSTRUÇÃO DO MODELO
- Random Forest é um método de aprendizado sobre conjuntos de dados (ensemble learning) para construir modelos de classificação, regressão e outras tarefas;
- Gera múltiplas árvores de decisão que depois são utilizadas na classificação de novos objetos;
- Consegue lidar com bases que apresentam muitos atributos e poucos exemplos;
Para a construção do modelo, alguns campos podem ser deixados de lado e outros não.
Como escolher os campos certos para a predição???
Se for usado o randomForest assim:
randomForest(Survived~.)
O que essa instrução está dizendo é:
random.forest( ), use todos os campos exceto o campo Survived para prever o campo Survived.
Não e o que se quer, pois existem campos como PassengerID, IsTrainSet, Name, Survived, etc. Que não acrescentam na predição.
Os campos escolhidos para a predição foram:
Pclass, Sex, Age, SibSp, Parch, Fare e Embarked
#A variável equation guarda as colunas que serão consideradas
survived.equation <- "Survived ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked"
#as.formula fornece uma maneira de extrair
#fórmulas que foram incluídas em outros objetos.
survived.formula <- as.formula(survived.equation)
install.packages("randomForest")
library(randomForest)
#Criando o modelo passando a fórmula criada com a string armazenada em
#survived.equation
titanic.model <- randomForest(formula = survived.formula, data = titanic.train, ntree = 500, mtry = 3, nodesize = 0.01 * nrow(titanic.test))
nodesize – Este parâmetro define de forma implícita a profundidade das árvores. Quanto maior o número menor a árvore criada (portanto, menos tempo de processamento).
mtry – Parâmetro que indica o número de variáveis de entrada escolhidas aleatoriamente em cada nó. O valor padrão deste parâmetro depende do pacote R usado para se ajustar ao modelo:
Usando RandomForest:
- Para modelos de classificação, o padrão é a raiz quadrada do número de variáveis preditoras (arredondado para baixo).
- Para os modelos de regressão, é o número de variáveis preditoras divididas por 3 (arredondado para baixo).
Survived <- predict(titanic.model, newdata = titanic.test)
#Construção do Dataframe que será a saida para o CSV
#O CSV terá duas coluna
#ID do Passageiro e Survived
PassengerId <- titanic.test$PassengerId
output.df <- as.data.frame(PassengerId)
output.df$Survived <- Survived
#Escreve o resultado no CSV para a submissão no Kaggle
write.csv(output.df, file = "Kaggle_submission.csv", row.names = FALSE)
MATRIZ DE CONFUSÃO
Titanic.model
Saída:
Call:
randomForest(formula = survived.formula, data = titanic.train, ntree = 500, mtry = 3, nodesize = 0.01 * nrow(titanic.test))
Type of random forest: classification
Number of trees: 500
No. of variables tried at each split: 3
OOB estimate of error rate: 15.82%
Confusion matrix:
0 1 class.error
0 499 50 0.09107468
1 91 251 0.26608187
Ola… boa noite..!!!
Eu fiz, conforme a aula.. mas nao sei por que da o erro abaixo:
Titanic.model <- randomForest(formula = Survived.formula, data = Titanic.train, ntree = 500, mtry = 3, nodesize = 0.01 * nrow(Titanic.test))
Erro:
Error in na.fail.default(list(Survived = c(NA_integer_, NA_integer_, NA_integer_, :
missing values in object
Eu olhei todas os campos se tinha NA e nao tem.. exceto o do Survived
Oi Poliana,
Você tá usando:
Titanic.model <- randomForest(formula = Survived.formula, data = Titanic.train, ntree = 500, mtry = 3, nodesize = 0.01 * nrow(Titanic.test))
Troca Survived para survived, com o s minúsculo, assim:
Titanic.model <- randomForest(formula = survived.formula, data = Titanic.train, ntree = 500, mtry = 3, nodesize = 0.01 * nrow(Titanic.test))
Vê se resolve.
\o/ Toti