Curso de Data Science

Aula 10 – Data Science – R – Caso do Titanic – Kaggle

Continuação da aula 09, agora rodando os comandos no RStudio

kaggle - Caso do Titanic - Data Science

Caso do Titanic – Kaggle

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

Matriz de Confusão

Matriz de Confusão

Valeu, obrigado e até mais.

Aula 10 – Data Science – R – Caso do Titanic – Kaggle

About The Author
-

2 Comentários

  • Poliana Oliveira
    Reply

    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

    • toticavalcanti
      Reply

      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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>