Usando el dataset de Titanic, realizar una comparación entre diferentes enfoques para clasificación (regresión logistica, lda, knn y otros) comparar utilizando los valores del costo y de gamma.

Usar la clase de la Semana #7 como referencia.

library(e1071)
library(dplyr)
library(ISLR)
library(ggplot2)
library(rpart)
library(rpart.plot)
library(readr)
library(caret)
library(tidyverse)
titanic <- read.csv("titanic.csv")

Limpiar data

titanic_clean <- titanic%>% select(-PassengerId, 
                                  -Name,
                                  -Ticket, 
                                  -Cabin )
titanic_clean$Survived <- factor(titanic_clean$Survived)
titanic_clean$Pclass <- factor(titanic_clean$Pclass)
titanic_clean$Sex <- factor(titanic_clean$Sex)
summary(titanic_clean)
 Survived Pclass      Sex           Age       
 0:549    1:216   female:314   Min.   : 0.42  
 1:342    2:184   male  :577   1st Qu.:22.00  
          3:491                Median :28.00  
                               Mean   :29.36  
                               3rd Qu.:35.00  
                               Max.   :80.00  
     SibSp           Parch             Fare        Embarked
 Min.   :0.000   Min.   :0.0000   Min.   :  0.00    :  2   
 1st Qu.:0.000   1st Qu.:0.0000   1st Qu.:  7.91   C:168   
 Median :0.000   Median :0.0000   Median : 14.45   Q: 77   
 Mean   :0.523   Mean   :0.3816   Mean   : 32.20   S:644   
 3rd Qu.:1.000   3rd Qu.:0.0000   3rd Qu.: 31.00           
 Max.   :8.000   Max.   :6.0000   Max.   :512.33           
str(titanic_clean)
'data.frame':   891 obs. of  8 variables:
 $ Survived: Factor w/ 2 levels "0","1": 1 2 2 2 1 1 1 1 2 2 ...
 $ Pclass  : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ...
 $ Sex     : Factor w/ 2 levels "female","male": 2 1 1 1 2 2 2 2 1 1 ...
 $ Age     : num  22 38 26 35 35 28 54 2 27 14 ...
 $ SibSp   : int  1 1 0 1 0 0 0 3 0 1 ...
 $ Parch   : int  0 0 0 0 0 0 0 1 2 0 ...
 $ Fare    : num   ...

Regresión logística

Se creó la regresión logística encontrando que el Cut-off ideal 0.61, con una especificidad de 0.948717949 y una sensibilidad de .0.5892857

train_glm_index <- sample(1:nrow(titanic_clean),nrow(titanic_clean)*0.7)
train_glm<-titanic_clean[train_glm_index,]
test_glm <- titanic_clean[-train_glm_index,]
glm_titanic = glm(Survived~., data=train_glm, family = "binomial")
pred_prob<- predict(glm_titanic, test_glm, type="response")
roc_data<- function(){
  roc_out<- data_frame(especificidad=0,sensibilidad=0, cutoff=0)
  for(i in seq(0.01,0.95, by=0.01)){
    pred <- ifelse(pred_prob>i, 1, 0)
    cm<- table(pred, Original = test_glm$Survived)
    (sensibilidad <- cm[2,2]/sum(cm[,2]))
    (especificidad <- cm[1,1]/sum(cm[,1]))
    roc_out <-rbind(roc_out, c(especificidad, sensibilidad,i))
  }
  return(roc_out[-1,])
}
View(roc_plot_data)
plot(roc_plot_data[,1:2], type= "l")

SVM

Se calculó las SVM y se encontró que el modelo con mayor accuracy es con Gamma =1 y Cost = 2.

for (i in 1:10){
  for (j in 1:10){
    svm_titanic <-svm(Survived~., data = train, gamma = i, cost = j)
    pred <- predict(svm_titanic, test)
    cm<- table (pred, original = test$Survived)
    accuracy <- (cm[1,1]+cm[2,2])/sum(cm)
    svm_data <- cbind(gamma = i, cost = j, accuracy)
    
  }
}
for (i in 1:10){
  for (j in 1:10){
    svm_titanic <-svm(Survived~., data = train, gamma = i, cost = j)
    pred <- predict(svm_titanic, test)
    cm<- table (pred, original = test$Survived)
    accuracy <- (cm[1,1]+cm[2,2])/sum(cm)
    svm_data <- cbind(gamma = i, cost = j, accuracy)
    
  }
}
LS0tDQp0aXRsZTogIkxhYiAzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KVXNhbmRvIGVsIGRhdGFzZXQgZGUgVGl0YW5pYywgcmVhbGl6YXIgdW5hIGNvbXBhcmFjacOzbiBlbnRyZSBkaWZlcmVudGVzIGVuZm9xdWVzIHBhcmEgY2xhc2lmaWNhY2nDs24gKHJlZ3Jlc2nDs24gbG9naXN0aWNhLCBsZGEsIGtubiB5IG90cm9zKSBjb21wYXJhciB1dGlsaXphbmRvIGxvcyB2YWxvcmVzIGRlbCBjb3N0byB5IGRlIGdhbW1hLg0KDQpVc2FyIGxhIGNsYXNlIGRlIGxhIFNlbWFuYSAjNyBjb21vIHJlZmVyZW5jaWEuDQoNCg0KYGBge3J9DQpsaWJyYXJ5KGUxMDcxKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoSVNMUikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocnBhcnQpDQpsaWJyYXJ5KHJwYXJ0LnBsb3QpDQpsaWJyYXJ5KHJlYWRyKQ0KbGlicmFyeShjYXJldCkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQp0aXRhbmljIDwtIHJlYWQuY3N2KCJ0aXRhbmljLmNzdiIpDQoNCg0KDQpgYGANCg0KTGltcGlhciBkYXRhDQpgYGB7cn0NCnRpdGFuaWNfY2xlYW4gPC0gdGl0YW5pYyU+JSBzZWxlY3QoLVBhc3NlbmdlcklkLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtTmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtVGlja2V0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtQ2FiaW4gKQ0KDQp0aXRhbmljX2NsZWFuJFN1cnZpdmVkIDwtIGZhY3Rvcih0aXRhbmljX2NsZWFuJFN1cnZpdmVkKQ0KdGl0YW5pY19jbGVhbiRQY2xhc3MgPC0gZmFjdG9yKHRpdGFuaWNfY2xlYW4kUGNsYXNzKQ0KdGl0YW5pY19jbGVhbiRTZXggPC0gZmFjdG9yKHRpdGFuaWNfY2xlYW4kU2V4KQ0KdGl0YW5pY19jbGVhbiRFbWJhcmtlZCA8LSBmYWN0b3IodGl0YW5pY19jbGVhbiRFbWJhcmtlZCkNCnRpdGFuaWNfY2xlYW4kQWdlW2lzLm5hKHRpdGFuaWNfY2xlYW4kQWdlKV0gPC0gbWVkaWFuKHRpdGFuaWNfY2xlYW4kQWdlLCBuYS5ybT1UUlVFKQ0KDQp0aXRhbmljX2NsZWFuJEVtYmFya2VkW2lzLm5hKHRpdGFuaWNfY2xlYW4kRW1iYXJrZWQpXSA8LSAiUyINCg0Kc3VtbWFyeSh0aXRhbmljX2NsZWFuKQ0Kc3RyKHRpdGFuaWNfY2xlYW4pDQoNCmBgYA0KDQoNCg0KDQoNCiMjUmVncmVzacOzbiBsb2fDrXN0aWNhDQoNClNlIGNyZcOzIGxhIHJlZ3Jlc2nDs24gbG9nw61zdGljYSBlbmNvbnRyYW5kbyBxdWUgZWwgQ3V0LW9mZiBpZGVhbCAwLjYxLCBjb24gdW5hIGVzcGVjaWZpY2lkYWQgZGUgMC45NDg3MTc5NDkgeSB1bmEgc2Vuc2liaWxpZGFkIGRlIC4wLjU4OTI4NTcNCg0KDQpgYGB7cn0NCg0KDQp0cmFpbl9nbG1faW5kZXggPC0gc2FtcGxlKDE6bnJvdyh0aXRhbmljX2NsZWFuKSxucm93KHRpdGFuaWNfY2xlYW4pKjAuNykNCnRyYWluX2dsbTwtdGl0YW5pY19jbGVhblt0cmFpbl9nbG1faW5kZXgsXQ0KdGVzdF9nbG0gPC0gdGl0YW5pY19jbGVhblstdHJhaW5fZ2xtX2luZGV4LF0NCg0KZ2xtX3RpdGFuaWMgPSBnbG0oU3Vydml2ZWR+LiwgZGF0YT10cmFpbl9nbG0sIGZhbWlseSA9ICJiaW5vbWlhbCIpDQoNCnByZWRfcHJvYjwtIHByZWRpY3QoZ2xtX3RpdGFuaWMsIHRlc3RfZ2xtLCB0eXBlPSJyZXNwb25zZSIpDQoNCnJvY19kYXRhPC0gZnVuY3Rpb24oKXsNCiAgcm9jX291dDwtIGRhdGFfZnJhbWUoZXNwZWNpZmljaWRhZD0wLHNlbnNpYmlsaWRhZD0wLCBjdXRvZmY9MCkNCiAgZm9yKGkgaW4gc2VxKDAuMDEsMC45NSwgYnk9MC4wMSkpew0KICAgIHByZWQgPC0gaWZlbHNlKHByZWRfcHJvYj5pLCAxLCAwKQ0KICAgIGNtPC0gdGFibGUocHJlZCwgT3JpZ2luYWwgPSB0ZXN0X2dsbSRTdXJ2aXZlZCkNCiAgICAoc2Vuc2liaWxpZGFkIDwtIGNtWzIsMl0vc3VtKGNtWywyXSkpDQogICAgKGVzcGVjaWZpY2lkYWQgPC0gY21bMSwxXS9zdW0oY21bLDFdKSkNCiAgICByb2Nfb3V0IDwtcmJpbmQocm9jX291dCwgYyhlc3BlY2lmaWNpZGFkLCBzZW5zaWJpbGlkYWQsaSkpDQogIH0NCiAgcmV0dXJuKHJvY19vdXRbLTEsXSkNCn0NCg0KDQpyb2NfcGxvdF9kYXRhIDwtIHJvY19kYXRhKCkNClZpZXcocm9jX3Bsb3RfZGF0YSkNCnBsb3Qocm9jX3Bsb3RfZGF0YVssMToyXSwgdHlwZT0gImwiKQ0KDQoNCg0KDQpgYGANCg0KDQojI1NWTQ0KU2UgY2FsY3Vsw7MgbGFzIFNWTSB5IHNlIGVuY29udHLDsyBxdWUgZWwgbW9kZWxvIGNvbiBtYXlvciBhY2N1cmFjeSBlcyBjb24gR2FtbWEgPTEgeSBDb3N0ID0gMi4NCg0KYGBge3J9DQp0cmFpbl9pbmRleCA8LSBzYW1wbGUoMTpucm93KHRpdGFuaWNfY2xlYW4pLG5yb3codGl0YW5pY19jbGVhbikqMC43KQ0KdHJhaW4gPC0gdGl0YW5pY19jbGVhblt0cmFpbl9pbmRleCxdDQp0ZXN0IDwtIHRpdGFuaWNfY2xlYW5bLXRyYWluX2luZGV4LF0NCnN2bV9kYXRhIDwtIGMoZ2FtbWEgPSAwLCBjb3N0ID0gMCwgYWNjdXJhY3kgPSAwKQ0KDQpmb3IgKGkgaW4gMToyMCl7DQogIGZvciAoaiBpbiAxOjIwKXsNCiAgICBzdm1fdGl0YW5pYyA8LXN2bShTdXJ2aXZlZH4uLCBkYXRhID0gdHJhaW4sIGdhbW1hID0gaSwgY29zdCA9IGopDQogICAgcHJlZCA8LSBwcmVkaWN0KHN2bV90aXRhbmljLCB0ZXN0KQ0KICAgIGNtPC0gdGFibGUgKHByZWQsIG9yaWdpbmFsID0gdGVzdCRTdXJ2aXZlZCkNCiAgICBhY2N1cmFjeSA8LSAoY21bMSwxXStjbVsyLDJdKS9zdW0oY20pDQogICAgc3ZtX2RhdGEgPC0gcmJpbmQoc3ZtX2RhdGEsIGMoZ2FtbWEgPSBpLCBjb3N0ID0gaiwgYWNjdXJhY3kpKQ0KICAgIA0KICB9DQp9DQoNClZpZXcoc3ZtX2RhdGEpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K