Zadanie wstępne

Dla poniższych danych napisz jaka jest wartość krzywej LIFT dla \(x=1\). Skorzystaj z definicji z wykładu.

df <- read.csv("naive_bayes_data.csv", row.names = 1)
df$y <- df$y + 1
df$y <- factor(df$y)
str(df)
## 'data.frame':    1000 obs. of  4 variables:
##  $ y : Factor w/ 2 levels "1","2": 1 2 1 2 2 1 2 2 2 1 ...
##  $ x1: int  1 1 1 0 1 0 1 1 1 0 ...
##  $ x2: int  0 0 1 1 0 0 1 0 1 0 ...
##  $ x3: int  0 1 0 1 0 0 0 1 0 1 ...

Do laboratorium

Pakiet cvTools

Jeśli chcemy wykonać 3-krotną kroswalidację dla zbioru danych o 20 obserwacjach. Pierwsza kolumna Fold mówi nam, do którego zbioru kroswalidacyjnego obserwacja o indeksie Index ma należeć.

library(cvTools)

cvFolds(20, K=3)
## 
## 3-fold CV:    
## Fold   Index
##    1      20
##    2      16
##    3      10
##    1      12
##    2       7
##    3      13
##    1      15
##    2       8
##    3      14
##    1      19
##    2       6
##    3      17
##    1       5
##    2       2
##    3      11
##    1      18
##    2       4
##    3       1
##    1       3
##    2       9

Pakiet ROCR

df <- read.csv("naive_bayes_data.csv", row.names = 1)
df$y <- factor(df$y)
str(df)
## 'data.frame':    1000 obs. of  4 variables:
##  $ y : Factor w/ 2 levels "0","1": 1 2 1 2 2 1 2 2 2 1 ...
##  $ x1: int  1 1 1 0 1 0 1 1 1 0 ...
##  $ x2: int  0 0 1 1 0 0 1 0 1 0 ...
##  $ x3: int  0 1 0 1 0 0 0 1 0 1 ...

Krzywa ROC:

library(rpart)
library(ROCR)
drzewo.model <- rpart(y~., data=df)

predictions <- predict(drzewo.model, df)[,2]
labels <- df$y

pred <- prediction(predictions, labels)
perf <- performance(pred, measure = "tpr", x.measure = "fpr")
plot(perf)

Wartość AUC (@ bo funkcja performance tworzy obiekt klasy S4, a zwykle w R mamy obiekty S3 - zob. typeof(perf)):

perf <- performance(pred, measure = "auc")
perf@y.name
## [1] "Area under the ROC curve"
perf@y.values
## [[1]]
## [1] 0.693744