Archivos de la categoría Formación

El parámetro gamma, el coste, la complejidad de un SVM

letra_o_svm_r

Cuando clasificamos datos con SVM es necesario fijar un margen de separación entre observaciones, si no fijamos este margen nuestro modelo sería tan bueno tan bueno que sólo serviría para esos datos, estaría sobrestimando y eso es malo. El coste C y el gamma son los dos parámetros con los que contamos en los SVM. El parámetro C es el peso que le

damos a cada observación a la hora de clasificar un mayor coste implicaría un mayor peso de una observación y el SVM sería más estricto (este link aclara mejor las cosas). Si tuvieramos un modelo que clasificara observaciones en el plano como una letra O podemos ver como se modifica la estimación en esta secuencia en la que se ha modificado el parámetro C:

r_svm_2

Sigue leyendo El parámetro gamma, el coste, la complejidad de un SVM

Truco Excel. Pasar un rango de varias columnas a una

Macro de Excel que nos permite pasar de varias columnas a una sola. De momento no es una función, es un código que sorprende por su sencillez:

Sub rango_columnas()

Dim rango As Variant
Dim i As Long, j As Long, k As Long
Dim col As Long

rango = Selection.Value

'Esta es la parte que permite ubicar la salida
col = Selection.Column
k = Selection.Row

'Esto recorre el rango y realiza la trasposición
For i = 1 To UBound(rango, 1)
    For j = 1 To UBound(rango, 2)
        Cells(k, col + UBound(rango, 2)).Value = rango(i, j)
        k = k + 1
    Next
Next

End Sub

Este código lo ponéis tal cual en vuestro Excel y os ilustro a continuación sobre su funcionamiento. Lo primero es seleccionar el rango de columnas que deseamos transponer:

varias_columnas_a_una_excel1

Ahora sólo ejecutamos la macro rango_columnas:

varias_columnas_a_una_excel2

Y aparece justo al lado del rango que deseamos transponer a una sola columna:

varias_columnas_a_una_excel3

En este caso el resultado lo obtenemos en la columna F. Jugando con los índices i y j de nuestra macro podremos modificar la forma de la transposición. Me parece una macro útil y por eso lo comparto con vosotros. Saludos.

Trucos Excel. Mapa de Colombia por departamentos

mapa-colombia-excel

El mapa Excel de Colombia por departamentos era tarea pendiente, el modo en el que se ha hecho es el habitual y por ello lo primero que hay que hacer es citar al usuario de Wikipedia  Shadowxfox - Trabajo propio, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=44930910 es importante comentar que seleccioné este por el tamaño, en Excel se ve bien poniendo el zoom al 35% (¡!) y es que cada vez veo menos. El mapa puede representar 5 grupos  y estos grupos se pondrán en la columna C donde podemos cruzar por nombre. Comentar que falta el departamento de las islas de San Andrés y Providencia porque no sabía muy bien como ubicarlas y como representarlas en el mapa. 

Así pues el funcionamiento no puede ser más sencillo. Podemos pintar hasta 5 grupos, los colores de estos 5 grupos los podemos seleccionar en las correspondientes celdas de la columna H. Los grupos que clasifican los departamentos los pondremos en la columna C y con el botón pintar se realiza el mapa. Un esquema de los elementos del Excel Sigue leyendo Trucos Excel. Mapa de Colombia por departamentos

Como salva la linealidad una red neuronal

En los últimos tiempos estoy empeñado en usar redes neuronales para la tarificación en seguros. Históricamente la tarificación de seguros, el pricing, se ha basado en modelos lineales generalizados GLM (sus siglas en inglés) porque su estructura es sencilla, se interpreta bien y no olvidemos que el sector asegurador está regulado y es necesario elaborar una nota detallada de cómo se articula una tarifa y el GLM nos ofrece una estructura multiplicativa que se comprende y con la que los reguladores se sienten muy cómodos. Sin embargo, una red neuronal es el paradigma de "caja negra", ¿cómo podemos saber que hace esa caja negra? Estoy trabajando en ello, la descripción del funcionamiento de las ponderaciones de una red está muy arriba en la lista de mis tareas pendientes.

Pero esta entrada del blog va encaminada a describir de forma como las neuronas de una red neuronal salvan la linealidad y como un mayor número de neuronas son capaces de ajustar mejor a una estructura compleja y si llegamos a describir como funciona esa estructura compleja podremos usar estas técnicas para realizar tarifas de riesgo. 
Como siempre, para ilustrar el funcionamiento se emplea un ejemplo muy sencillo:

#Variable independiente
indep = runif(500,100,3000)
#Función para crear la variable dependiente
foo = function(x){ mean(x)*(1-sin(-0.006042*x)+sqrt(x/100))
}
dep = sapply(indep,foo)

dep=dep+(runif(length(dep),-500,500))

dep = as.matrix(dep)
indep = as.matrix(indep)
plot(indep,dep)

redes_neuronales_tarificacion_seguros1

Creamos unos datos aleatorios que serán en una matriz nuestros datos inependientes y como variable dependiente una variable que dibuja una nube de puntos que simula una curva de observaciones. Si realizamos un modelo lineal se ajustará una recta sobre los datos, una red neuronal mejorará los resultados. Y para demostrarlo vamos a emplear el paquete de R monmlp que realiza un perceptrón multicapa Sigue leyendo Como salva la linealidad una red neuronal

Mapas municipales de Argentina con R

Municipios Buenos Aires

En respuesta a un lector del blog he elaborado de forma rápida una nueva entrada que nos permite realizar mapas por municipalidades para Argentina, ya hay entradas similares pero está bien que este mapa tenga su propia entrada para facilitar las búsquedas. El ejemplo es rápido y es probable que el código tenga algún fallo o error, si es así lo comentáis y lo solvento. Como es habitual nos dirigimos a la web del proyecto Global Administrative Areas (http://www.gadm.org/country) y nos descargamos el mapa de Argentina por municipios que es el nivel 2, una vez descargado pocas líneas de R:

library(sp)
library(RColorBrewer)

ub_argentina="C:\\mapas\\ARG_adm2.rds"

argentina = readRDS(ub_argentina)
b.aires = argentina[argentina$NAME_1=="Buenos Aires",]

aleatorio = rpois(length(unique(b.aires$NAME_2)),3)
b.aires@data=data.frame(aleatorio)
spplot(b.aires,col.regions=brewer.pal(5, "Blues"))

Leemos el mapa entero y hacemos un subconjunto de datos sólo con los municipios de Buenos Aires, pintamos unos datos aleatorios con la función spplot y con la librería RColorBrewer podemos dar un formato más elegante a nuestro mapa. Saludos.

Con los vehículos autónomos me quedo sin trabajo (o no)

"Los actuarios y los analistas de pricing os vaís a quedar sin trabajo con la llegada de los vehículos autónomos", yo ya he escuchado esta frase. Como podéis ver en mi perfil de Linkedin (un poco obsoleto) mi familia y yo comemos gracias a mi trabajo en equipos de actuarios encargados de dar precios tanto de nuevo negocio como en el momento de la renovación para compañías que operan fundamentalmente con el ramo de Automóviles. Llevo muchos años separando el "AZAHAAAAR" de lo estadísticamente explicable mediante relaciones lineales y, aunque esté feo decirlo, se me da muy bien [anda que no ha escuchado gente este discurso] Pero qué pasa si los coches ya no dependieran de las personas, fueran todos prácticamente iguales, nos diera igual la zona de circulación y no existiera la posibilidad de explicar nada estadísticamente porque no hubiera margen de error. Qué pasaría si los coches fueran autónomos.

Lo primero y más urgente, me quedan unos 25-30 años para jubilarme y tengo que repasar los principales hitos en la industria del vehículo autónomo para ver su evolución:

  • En 2013 National Highway Traffic Safety Administration's (como siempre en USA nos sacan ventaja) empieza a regular o a clasificar este tipo de vehículos: http://www.nhtsa.gov/About+NHTSA/Press+Releases/U.S.+Department+of+Transportation+Releases+Policy+on+Automated+Vehicle+Development
  • En 2014 algunos estados norteamericanos como California, Florida, Michigan, North Dakota y Tennessee ya crean legislación al respecto
  • En 2015 Tesla Motor Inc. incorpora a sus vehículos el Autopilot y parece que es el punto de inflexión.
  • En 2016 los que trabajamos en el sector asegurador nos empezamos a preocupar:
    • http://www.rand.org/pubs/research_reports/RR443-1.html
    •  https://www.adrianflux.co.uk/driverless-cars/
  • Ahora Tesla sale en las noticias debido a los accidentes y a su forma de financiarse.

Lo primero que se me pasa por la cabeza, en Europa a qué esperamos al respecto; cuándo van a empezar a legislar y lo segundo, parece que no se dan grandes avances o por lo menos no producen vértigo, a Google se le ha ocurrido crear su propia ciudad para ir probando pero como el camino sea construir ciudades vamos listos... Para un dinosaurio que sigue haciendo modelos lineales el vehículo autónomo le puede parecer ciencia ficción, sin embargo no podemos perder de vista que los coches afectan a la calidad de las ciudades y que los coches autónomos pueden mejorar mucho esa calidad.

En mi opinión los vehículos autónomos han venido para quedarse, necesitarán estar asegurados aunque se tratará de grandes flotas y creo que las empresas que los comercialicen deberán de tener sus propios seguros, así que es probable que tenga menos trabajo en 10-15 años pero también se me dan muy bien y tengo muchas ideas para los seguros multirriesgo y en salud y ahí hay mucho camino por andar, empezando por el seguro del Hogar que debería ser obligatorio así que no me preocupo mucho (de momento).  Saludos.

 

El #brexit con #rstats o como mover spatial data con R

bye_england

Animación con R para ilustrar el uso de la función de maptools elide de código "insultantemente" sencillo:

library(maptools)
library(animation)

#Mapa descargado de:
#http://www.arcgis.com/home/item.html?id=6d611f8d87d54227b494d4c3becef6a0

ub_shp = "/Users/raulvaquerizo/Desktop/R/mapas/world/MyEurope.shp"
europa = readShapeSpatial(ub_shp)
plot(europa)

europa_sin_uk = europa[europa$FIPS_CNTRY != "UK",]
uk = europa[europa$FIPS_CNTRY == "UK",]

saveGIF(
for (i in seq(0,5,by=0.1)){
plot(europa_sin_uk)
uk = elide(uk,shift=c(-i,1))
plot(uk,add=TRUE)},
interval=.3,
movie.name="/Users/raulvaquerizo/Desktop/R/animaciones/brexit/bye_england.gif"
)

Nos descargamos el mapa del link que os pongo y poco más que leer el shape con readShapeSpatial y crear dos objetos uno con Europa sin la isla y otro con la isla, elide nos permite desplazar un objeto de spatial data dentro del gráfico y lo metemos en un bucle y bye England. Ahora el que me mueva las Canarias en un shape file con más de 2 líneas de código me paga una cervecita. Saludos.

El paquete de R weatherData para la obtención de datos meteorológicos en España

Tenía pendiente un proyecto con modelos de Lee Carter y el paquete weatherData de R (¡toma!) pero como no lo voy a llevar a cabo nunca os traigo a estas líneas un paquete más que interesante de R que nos permite obtener datos de las estaciones meteorológicas de los aeropuertos del mundo (https://www.wunderground.com/history/airport/) y encima te lo pone como un objeto de R, qué más podemos pedir. En github tenéis una completa batería de ejemplos de uso. En el caso de que necesitemos descargar información meteorológica de España tenemos que irnos a http://weather.rap.ucar.edu/surface/stations.txt donde están listados todos los aeropuertos que recoge este sistema de información, buscamos SPAIN y nos interesa el "ICAO" que es el International Civil Aviation Organization, el código del aeropuerto vamos. Con estas premisas si quiero recoger las temperaturas de 2015 del aeropuerto de Albacete:

install.packages("weatherData")
library(weatherData)

anio = getWeatherForYear("LEAB",2015)

La información de los aeropuertos es bastante completa y están distribuidos por toda la geografía nacional además tenemos muchos datos a nuestra disposición y bien tabulados. Yo conozco más de uno que se está acordando de mi por no haber escrito sobre este paquete unos meses antes. Saludos.