Se hizo el split 80% / 20% balanceado, por lo tanto tenemos 5 splits disjuntos, cada uno entrenado con ~24794 SI debito y ~24794 NO debito. Por lo tanto cada modelo, tiene 24794 NAs.
El valor que presenta cada modelo es el porcentaje de votos (sobre 500) de que un objeto pertenezca a la clase SI debito.
Las métricas que tome fueron media, min, max, simes, y simes invertido (1-simes(1-pvals)), de los resultados de los 5 modelos (para cada objeto).
# leemos la base de datos
inmob_res <- read.csv("~/mytmp/RentasIA/en_server/inmob_salida.csv")
# vemos cuantos NA hay para cada uno de los modelos
colSums(is.na(inmob_res[, grep("modelo_", colnames(inmob_res))]))
modelo_1 modelo_2 modelo_3 modelo_4 modelo_5
24794 24793 24793 24793 24794
# summary de los modelos
summary(inmob_res[, grep("modelo_", colnames(inmob_res))])
modelo_1 modelo_2 modelo_3 modelo_4 modelo_5
Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.000 Min. :0.000
1st Qu.:0.004 1st Qu.:0.004 1st Qu.:0.004 1st Qu.:0.004 1st Qu.:0.004
Median :0.030 Median :0.030 Median :0.030 Median :0.032 Median :0.030
Mean :0.110 Mean :0.109 Mean :0.110 Mean :0.111 Mean :0.111
3rd Qu.:0.096 3rd Qu.:0.094 3rd Qu.:0.094 3rd Qu.:0.096 3rd Qu.:0.094
Max. :1.000 Max. :1.000 Max. :1.000 Max. :0.998 Max. :1.000
NA's :24794 NA's :24793 NA's :24793 NA's :24793 NA's :24794
# summary de las metricas resumen
metricas_res <- inmob_res[, -grep("ID|modelo_", colnames(inmob_res))]
summary(metricas_res)
media min max simes inv_simes
Min. :0.0000 Min. :0.00000 Min. :0.0000 Min. :0.0000 Min. :0.00000
1st Qu.:0.0056 1st Qu.:0.00000 1st Qu.:0.0120 1st Qu.:0.0000 1st Qu.:0.00000
Median :0.0344 Median :0.01400 Median :0.0580 Median :0.0400 Median :0.01400
Mean :0.1102 Mean :0.08491 Mean :0.1401 Mean :0.1273 Mean :0.08549
3rd Qu.:0.0892 3rd Qu.:0.05400 3rd Qu.:0.1380 3rd Qu.:0.1150 3rd Qu.:0.05400
Max. :0.9972 Max. :0.99200 Max. :1.0000 Max. :1.0000 Max. :1.00000
# gráficos de densidad de las métricas
library("ggplot2")
library("reshape2")
res_metricas_melt <- melt(metricas_res)
No id variables; using all as measure variables
ggplot(res_metricas_melt) +
geom_density(aes(x = value, color = variable))
# boxplot de las métricas
ggplot(res_metricas_melt) +
geom_boxplot(aes(x = variable, y = value, color = variable))
# vemos en cuanto se agrupan dependiendo de los decimales de corte
do.call(rbind, lapply(2:5, function(dec) {
en_dec <- round(metricas_res, dec)
apply(en_dec, 2, function(x) length(unique(x)))
}))
media min max simes inv_simes
[1,] 101 100 101 101 101
[2,] 994 496 501 800 828
[3,] 3875 496 501 1033 1076
[4,] 3875 496 501 1033 1076
# vemos intersecciones de objetos dados distintos cortes
cuarts <- rev(seq(0, 1, 0.1))
inters <- do.call(rbind, lapply(cuarts, function(cuartil) {
cuartiles <- apply(metricas_res, 2, function(x) quantile(x, cuartil))
act_res <- t(t(metricas_res) >= cuartiles)
res <- rep(0, ncol(metricas_res) + 1)
names(res) <- 0:ncol(metricas_res)
prop_tb <- prop.table(table(rowSums(act_res)))
res[names(prop_tb)] <- prop_tb
round(res, 3)
}))
rownames(inters) <- cuarts
inters
0 1 2 3 4 5
1 1.000 0.000 0.000 0.000 0.000 0.000
0.9 0.888 0.003 0.009 0.009 0.003 0.089
0.8 0.779 0.011 0.012 0.008 0.006 0.184
0.7 0.646 0.028 0.031 0.021 0.020 0.255
0.6 0.533 0.033 0.038 0.027 0.026 0.342
0.5 0.423 0.030 0.039 0.032 0.026 0.450
0.4 0.328 0.021 0.029 0.038 0.026 0.559
0.3 0.252 0.011 0.028 0.023 0.018 0.667
0.2 0.000 0.000 0.000 0.180 0.018 0.802
0.1 0.000 0.000 0.000 0.000 0.000 1.000
0 0.000 0.000 0.000 0.000 0.000 1.000
# aplicando cada cuartil, vemos cuantos objetos son clasificados como SI debito
cuarts <- rev(seq(0, 1, 0.1))
medias_col <- do.call(rbind, lapply(cuarts, function(cuartil) {
cuartiles <- apply(metricas_res, 2, function(x) quantile(x, cuartil))
act_res <- t(t(metricas_res) >= cuartiles)
round(colMeans(act_res), 3)
}))
rownames(medias_col) <- cuarts
medias_col
media min max simes inv_simes
1 0.000 0.000 0.000 0.000 0.000
0.9 0.100 0.101 0.100 0.100 0.101
0.8 0.200 0.201 0.201 0.200 0.201
0.7 0.301 0.301 0.301 0.301 0.301
0.6 0.400 0.401 0.402 0.402 0.401
0.5 0.501 0.519 0.508 0.512 0.519
0.4 0.600 0.631 0.601 0.626 0.631
0.3 0.700 0.721 0.701 0.704 0.721
0.2 0.806 1.000 0.817 1.000 1.000
0.1 1.000 1.000 1.000 1.000 1.000
0 1.000 1.000 1.000 1.000 1.000