Q3.1

<aside> 💡 0,6

</aside>

Solution 1 — Using ROCR perfomance()

# required libraries
library(ROCR)
pred_obj_M1 = prediction(data$P_M1, data$Class, label.ordering = c("0","1"))

performance(pred_obj, "tpr")

# επιλέγουμε την τιμή του **y.values** που αντιστοιχεί στο *0.55* του **x.values,** 
# καθώς το *0.55* είναι το αμέσως μεγαλύτερο cutoff point απο το *0.5* που θέλουμε εμείς

Solution 2 — Calculating Confusion Matrix

# initialize ypred as factor
ypred = factor(,levels = c(0,1))

# create ypred with given threshold
for (i in 1:length(data[,"P_M1"])){
  ypred[i] = ifelse(data$P_M1[i] > 0.5, 1, 0)
}

# calculate confusion matrix
cm = as.matrix(table(Actual = data$Class, Predicted = ypred))

# calculate TPR
TPR = cm[2,2] / rowSums(cm)[2]

# print TPR
print(TPR)

Solution 3 - Using MLmetrics

# required libraries
library(MLmetrics)
# initialize ypred as factor
ypred = factor(,levels = c(0,1))

# create ypred with given threshold
for (i in 1:length(data[,"P_M1"])){
  ypred[i] = ifelse(data$P_M1[i] > 0.5, 1, 0)
}

# calculate sensitivity aka TPR
Sensitivity(data$Class, ypred, positive = "1")

Q3.2

<aside> 💡 0,2857

</aside>

# required libraries
library(ROCR)
pred_obj_M2 = prediction(data$P_M2, data$Class, label.ordering = c("0","1"))

performance(pred_obj, "f")

# επιλέγουμε την τιμή του **y.values** που αντιστοιχεί στο *0.61* του **x.values,** 
# καθώς το *0.61* είναι το αμέσως μεγαλύτερο cutoff point απο το *0.5* που θέλουμε εμείς

Q3.3

<aside> 💡 0,4

</aside>

# required libraries
library(ROCR)
# create ROC object
ROC1 <- performance(pred_obj_M1, "tpr", "fpr")
ROC2 <- performance(pred_obj_M2, "tpr", "fpr")

# plot ROC for M1 and M2 + threshold line
plot(ROC1, col = "blue")
plot(ROC2, col = "red", add=TRUE)
abline(0,1, col = "grey")

# calculate M2 AUC
performance(pred_obj_M2, "auc")@y.values

Q3.4

<aside> 💡 (a) Το μοντέλο Μ1 M1 AUC > M2 AUC

</aside>