Se hizo el split 80% / 20% balanceado, por lo tanto tenemos 5 splits disjuntos, cada uno entrenado con ~14373 SI debito y ~14373 NO debito. Por lo tanto cada modelo, tiene 14373 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).

Autos

# leemos la base de datos
autos_res <- read.csv("~/mytmp/RentasIA/en_server/autos_salida.csv")
# vemos cuantos NA hay para cada uno de los modelos
colSums(is.na(autos_res[, grep("modelo_", colnames(autos_res))]))
modelo_1 modelo_2 modelo_3 modelo_4 modelo_5 
   14373    14372    14372    14372    14373 
# summary de los modelos
summary(autos_res[, grep("modelo_", colnames(autos_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.014   1st Qu.:0.014   1st Qu.:0.014   1st Qu.:0.014   1st Qu.:0.014  
 Median :0.044   Median :0.044   Median :0.044   Median :0.044   Median :0.044  
 Mean   :0.136   Mean   :0.134   Mean   :0.133   Mean   :0.134   Mean   :0.133  
 3rd Qu.:0.148   3rd Qu.:0.144   3rd Qu.:0.142   3rd Qu.:0.148   3rd Qu.:0.140  
 Max.   :1.000   Max.   :0.998   Max.   :1.000   Max.   :1.000   Max.   :1.000  
 NA's   :14373   NA's   :14372   NA's   :14372   NA's   :14372   NA's   :14373  
# summary de las metricas resumen
metricas_res <- autos_res[, -grep("ID|modelo_", colnames(autos_res))]
summary(metricas_res)
     media             min              max            simes           inv_simes     
 Min.   :0.0000   Min.   :0.0000   Min.   :0.000   Min.   :0.00000   Min.   :0.0000  
 1st Qu.:0.0184   1st Qu.:0.0060   1st Qu.:0.034   1st Qu.:0.02000   1st Qu.:0.0060  
 Median :0.0460   Median :0.0220   Median :0.076   Median :0.05667   Median :0.0220  
 Mean   :0.1339   Mean   :0.1034   Mean   :0.170   Mean   :0.15540   Mean   :0.1038  
 3rd Qu.:0.1352   3rd Qu.:0.0900   3rd Qu.:0.200   3rd Qu.:0.17400   3rd Qu.:0.0900  
 Max.   :0.9976   Max.   :0.9920   Max.   :1.000   Max.   :1.00000   Max.   :1.0000  
# gráficos de densidad de las métricas
library("ggplot2")
Registered S3 method overwritten by 'dplyr':
  method           from
  print.rowwise_df     
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,]   995 496 501   782       762
[3,]  3834 496 501  1014       987
[4,]  3834 496 501  1014       987
# 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.002 0.010 0.009 0.002 0.089
0.8 0.789 0.004 0.007 0.007 0.002 0.191
0.7 0.660 0.020 0.022 0.014 0.014 0.270
0.6 0.531 0.033 0.038 0.025 0.024 0.349
0.5 0.417 0.037 0.049 0.031 0.028 0.438
0.4 0.315 0.032 0.049 0.036 0.033 0.535
0.3 0.224 0.025 0.045 0.033 0.030 0.643
0.2 0.131 0.027 0.019 0.043 0.019 0.761
0.1 0.000 0.000 0.000 0.087 0.018 0.896
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.100 0.101 0.101     0.100
0.8 0.200 0.201 0.201 0.200     0.201
0.7 0.301 0.305 0.300 0.300     0.305
0.6 0.400 0.408 0.402 0.406     0.408
0.5 0.500 0.511 0.509 0.501     0.511
0.4 0.603 0.616 0.602 0.608     0.616
0.3 0.700 0.722 0.702 0.705     0.722
0.2 0.801 0.812 0.810 0.840     0.812
0.1 0.904 1.000 0.905 1.000     1.000
0   1.000 1.000 1.000 1.000     1.000
LS0tCnRpdGxlOiAiRXhwbG9yYWNpw7NuIHJlc3VsdGFkb3MgZGUgZW50cmVnYWJsZXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClNlIGhpem8gZWwgc3BsaXQgODAlIC8gMjAlIGJhbGFuY2VhZG8sIHBvciBsbyB0YW50byB0ZW5lbW9zIDUgc3BsaXRzIGRpc2p1bnRvcywgY2FkYSB1bm8gZW50cmVuYWRvIGNvbiB+MTQzNzMgU0kgZGViaXRvIHkgfjE0MzczIE5PIGRlYml0by4gUG9yIGxvIHRhbnRvIGNhZGEgbW9kZWxvLCB0aWVuZSAxNDM3MyBOQXMuCgpFbCB2YWxvciBxdWUgcHJlc2VudGEgY2FkYSBtb2RlbG8gZXMgZWwgcG9yY2VudGFqZSBkZSB2b3RvcyAoc29icmUgNTAwKSBkZSBxdWUgdW4gb2JqZXRvIHBlcnRlbmV6Y2EgYSBsYSBjbGFzZSBTSSBkZWJpdG8uCgpMYXMgbcOpdHJpY2FzIHF1ZSB0b21lIGZ1ZXJvbiBtZWRpYSwgbWluLCBtYXgsIHNpbWVzLCB5IHNpbWVzIGludmVydGlkbyAoYDEtc2ltZXMoMS1wdmFscylgKSwgZGUgbG9zIHJlc3VsdGFkb3MgZGUgbG9zIDUgbW9kZWxvcyAocGFyYSBjYWRhIG9iamV0bykuCgojIEF1dG9zCgpgYGB7cn0KIyBsZWVtb3MgbGEgYmFzZSBkZSBkYXRvcwphdXRvc19yZXMgPC0gcmVhZC5jc3YoIn4vbXl0bXAvUmVudGFzSUEvZW5fc2VydmVyL2F1dG9zX3NhbGlkYS5jc3YiKQpgYGAKCmBgYHtyfQojIHZlbW9zIGN1YW50b3MgTkEgaGF5IHBhcmEgY2FkYSB1bm8gZGUgbG9zIG1vZGVsb3MKY29sU3Vtcyhpcy5uYShhdXRvc19yZXNbLCBncmVwKCJtb2RlbG9fIiwgY29sbmFtZXMoYXV0b3NfcmVzKSldKSkKYGBgCgpgYGB7cn0KIyBzdW1tYXJ5IGRlIGxvcyBtb2RlbG9zCnN1bW1hcnkoYXV0b3NfcmVzWywgZ3JlcCgibW9kZWxvXyIsIGNvbG5hbWVzKGF1dG9zX3JlcykpXSkKYGBgCgpgYGB7cn0KIyBzdW1tYXJ5IGRlIGxhcyBtZXRyaWNhcyByZXN1bWVuCm1ldHJpY2FzX3JlcyA8LSBhdXRvc19yZXNbLCAtZ3JlcCgiSUR8bW9kZWxvXyIsIGNvbG5hbWVzKGF1dG9zX3JlcykpXQpzdW1tYXJ5KG1ldHJpY2FzX3JlcykKYGBgCgpgYGB7cn0KIyBncsOhZmljb3MgZGUgZGVuc2lkYWQgZGUgbGFzIG3DqXRyaWNhcwpsaWJyYXJ5KCJnZ3Bsb3QyIikKbGlicmFyeSgicmVzaGFwZTIiKQoKcmVzX21ldHJpY2FzX21lbHQgPC0gbWVsdChtZXRyaWNhc19yZXMpCmdncGxvdChyZXNfbWV0cmljYXNfbWVsdCkgKwogIGdlb21fZGVuc2l0eShhZXMoeCA9IHZhbHVlLCBjb2xvciA9IHZhcmlhYmxlKSkKYGBgCgpgYGB7cn0KIyBib3hwbG90IGRlIGxhcyBtw6l0cmljYXMKZ2dwbG90KHJlc19tZXRyaWNhc19tZWx0KSArCiAgZ2VvbV9ib3hwbG90KGFlcyh4ID0gdmFyaWFibGUsIHkgPSB2YWx1ZSwgY29sb3IgPSB2YXJpYWJsZSkpCmBgYAoKYGBge3J9CiMgdmVtb3MgZW4gY3VhbnRvIHNlIGFncnVwYW4gZGVwZW5kaWVuZG8gZGUgbG9zIGRlY2ltYWxlcyBkZSBjb3J0ZQpkby5jYWxsKHJiaW5kLCBsYXBwbHkoMjo1LCBmdW5jdGlvbihkZWMpIHsKICBlbl9kZWMgPC0gcm91bmQobWV0cmljYXNfcmVzLCBkZWMpCiAgYXBwbHkoZW5fZGVjLCAyLCBmdW5jdGlvbih4KSBsZW5ndGgodW5pcXVlKHgpKSkKfSkpCmBgYAoKYGBge3J9CiMgdmVtb3MgaW50ZXJzZWNjaW9uZXMgZGUgb2JqZXRvcyBkYWRvcyBkaXN0aW50b3MgY29ydGVzCmN1YXJ0cyA8LSByZXYoc2VxKDAsIDEsIDAuMSkpCmludGVycyA8LSBkby5jYWxsKHJiaW5kLCBsYXBwbHkoY3VhcnRzLCBmdW5jdGlvbihjdWFydGlsKSB7CiAgY3VhcnRpbGVzIDwtIGFwcGx5KG1ldHJpY2FzX3JlcywgMiwgZnVuY3Rpb24oeCkgcXVhbnRpbGUoeCwgY3VhcnRpbCkpCiAgYWN0X3JlcyA8LSB0KHQobWV0cmljYXNfcmVzKSA+PSBjdWFydGlsZXMpCiAgcmVzIDwtIHJlcCgwLCBuY29sKG1ldHJpY2FzX3JlcykgKyAxKQogIG5hbWVzKHJlcykgPC0gMDpuY29sKG1ldHJpY2FzX3JlcykKICBwcm9wX3RiIDwtIHByb3AudGFibGUodGFibGUocm93U3VtcyhhY3RfcmVzKSkpCiAgcmVzW25hbWVzKHByb3BfdGIpXSA8LSBwcm9wX3RiCiAgcm91bmQocmVzLCAzKQp9KSkKcm93bmFtZXMoaW50ZXJzKSA8LSBjdWFydHMKaW50ZXJzCmBgYAoKYGBge3J9CiMgYXBsaWNhbmRvIGNhZGEgY3VhcnRpbCwgdmVtb3MgY3VhbnRvcyBvYmpldG9zIHNvbiBjbGFzaWZpY2Fkb3MgY29tbyBTSSBkZWJpdG8KY3VhcnRzIDwtIHJldihzZXEoMCwgMSwgMC4xKSkKbWVkaWFzX2NvbCA8LSBkby5jYWxsKHJiaW5kLCBsYXBwbHkoY3VhcnRzLCBmdW5jdGlvbihjdWFydGlsKSB7CiAgY3VhcnRpbGVzIDwtIGFwcGx5KG1ldHJpY2FzX3JlcywgMiwgZnVuY3Rpb24oeCkgcXVhbnRpbGUoeCwgY3VhcnRpbCkpCiAgYWN0X3JlcyA8LSB0KHQobWV0cmljYXNfcmVzKSA+PSBjdWFydGlsZXMpCiAgcm91bmQoY29sTWVhbnMoYWN0X3JlcyksIDMpCn0pKQpyb3duYW1lcyhtZWRpYXNfY29sKSA8LSBjdWFydHMKbWVkaWFzX2NvbApgYGAK