Modelos GAM con R. Dejando satisfechos a los equipos de negocio

Los modelos GAM (Generalized Additive Model) son el conjunto de modelos que tenemos los estadísticos, actuarios, data scientists o como nos denominen en el momento que leas esto para dejar a nuestros equipos de negocio contentos con los resultados de nuestro modelo GLM. No voy a entrar en los aspectos teóricos de este tipo de modelos, hay documentación como esta que os puede ayudar. ¿Por qué se quedan contentos los equipos de negocio? Porque nos ayudan a dar sentido a los modelos. Retomemos un ejemplo que vimos en otra entrada del blog; en esta entrada presentamos cómo el resultado de un modelo GLM se transforma en una relatividad, en un mecanismo para ofrecer recargos y descuentos. ...

10 de noviembre de 2019 · rvaquerizo

Gráfico de correlaciones entre factores. Gráfico de la V de Cramer

Un gráfico muy habitual a la hora de construir modelos de riesgo para el cálculo de tarifas es el gráfico de correlaciones de la V de Cramer, que nos sirve para medir la correlación entre factores, entre variables cualitativas (hace muchos años ya escribí sobre el tema). Hoy os traigo la creación de un corrplot con R aplicado a la V de Cramer y, además, os descubro una función muy elegante para realizar este análisis de correlaciones entre factores; esta función está sacada de StackOverflow (cómo no) y añado un análisis gráfico que nos permite conocer algunas opciones de corrplot. ...

16 de julio de 2019 · rvaquerizo

Inteligencia Arficial frente a un juego de niños. La partícula tonta de Nicolás

Pablo Picasso decía que en aprender a pintar como los pintores del Renacimiento tardó unos años, pero pintar como los niños le llevó toda la vida; y en ocasiones creo que hacemos las cosas difíciles porque nos creemos que hacemos cosas difíciles, y entonces llega un niño de nueve años y dice: “Papá, un punto que primero vaya a la izquierda y luego a la derecha no es tan difícil”. ...

16 de julio de 2019 · rvaquerizo

Preparar nuestros datos para sklearn. Pasar de string a número

Cuando trabajamos con Python y scikit-learn necesitamos que todos los datos que vamos a modelizar sean numéricos; si tenemos variables carácter, necesitamos previamente transformarlas a números. La forma más rápida para realizar esta tarea es emplear preprocessing de scikit-learn: import pandas as pd dias_dict = {'dia': ['lunes', 'martes', 'viernes', 'miercoles', 'jueves', 'martes', 'miercoles', 'jueves', 'lunes']} dias_df = pd.DataFrame(dias_dict) dias_df Creamos un data frame a partir de un diccionario que se compone de los días de la semana; ahora vamos a codificar las etiquetas con el LabelEncoder de scikit-learn: ...

24 de octubre de 2017 · rvaquerizo

Machine learning. Análisis gráfico del funcionamiento de algunos algoritmos de clasificacion

De forma gráfica os voy a presentar algunas técnicas de clasificación supervisada de las más empleadas in Machine Learning y podremos ver cómo se comportan de forma gráfica en el plano. Como siempre, prefiero ilustrarlo a entrar in temas teóricos y, para esta tarea, se me ha ocurrido pintar una letra O y comenzar a trabajar con Python, así de simple. Lo primero es tener los datos; evidentemente serán puntos aleatorios en el plano donde pintamos una variable dependiente con forma de O: ...

3 de mayo de 2017 · rvaquerizo

Ajuste de `splines` con R

El ajuste por polinomios, el ajuste por spline, es una técnica imprescindible dentro del análisis actuarial. Como siempre, la parte matemática y la parte debida al puro azar pueden arrojar discrepancias. ¿Dónde son mayores estas discrepancias cuando usamos métodos estadísticos clásicos? Donde siempre: donde tenemos pocos datos. El comportamiento errático que tiene una tendencia y que habitualmente achacamos a la falta de información, los actuarios gustan de corregirlo con ajuste por cúbicas, aunque es mejor emplear ajuste por polinomios, ya que no tienen que ser necesariamente polinomios de grado 3. In mi caso particular, tengo un Excel que no puedo poner a vuestra disposición porque no lo hice yo (creo que lo hizo alguna divinidad egipcia) y desde entonces circula por el mundo la función cubic_spline. Hoy quiero aprovechar el blog no solo para sugeriros cómo realizar splines con R, además quería pedir ayuda para crear una herramienta in Shiny que permita realizar este ajuste que voy a mostraros a continuación. ...

26 de enero de 2017 · rvaquerizo

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

Cuando clasificamos datos con SVM (Support Vector Machines), es necesario fijar un margen de separación entre observaciones. Si no fijamos este margen adecuadamente, nuestro modelo podría estar sobrestimando (overfitting), lo que significa que funcionaría muy bien con los datos de entrenamiento pero fallaría con datos nuevos. El coste C y el parámetro gamma son los dos elementos fundamentales 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 cada observación individual y el SVM sería más estricto. Si tuviéramos un modelo que clasificara observaciones en el plano formando una letra “O”, podemos ver cómo se modifica la estimación al variar el coste: ...

13 de octubre de 2016 · rvaquerizo

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 por sus siglas en inglés) porque su estructura es sencilla, se interpreta bien y, no olvidemos, el sector asegurador está regulado y es necesario elaborar una nota detallada de cómo se articula una tarifa; 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 qué 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. ...

27 de septiembre de 2016 · rvaquerizo

Qué pasa si uso una regresión de poisson en vez de una regresión logística

Para un tema de mi trabajo voy a utilizar una regresión de Poisson en vez de una regresión logística; el evento es sí o no y no tiene nada que ver el tiempo, ni se puede contabilizar como un número, pero a efectos prácticos es mejor para mí usar una regresión de Poisson. Entonces, ¿qué pasa si hago una regresión de Poisson en vez de binomial? Como siempre, si mi $n$ es muy grande hay relación entre ambas distribuciones. Pero yo quiero saber si me puede clasificar mis registros igual una regresión logística, una de Poisson y una binomial, y se me ha ocurrido hacer un ejercicio teórico muy simple. ...

19 de septiembre de 2016 · rvaquerizo

Resolución del juego de modelos con R

Hace mucho planteé un juego de identificación de modelos con R y ya se me había olvidado daros la solución. Pensando en el Grupo de Usuarios de R y en hacer algo parecido en una presentación, recordé que había que solucionar el ejercicio. Lo primero es la creación de los datos; se me ocurrió una función sencilla y una nube de puntos alrededor de ella: # Variable independiente indep = runif(500, 100, 500) # Función para crear la variable dependiente foo = function(x) { mean(x) * (1 - sin(-0.006042 * x)) } dep = sapply(indep, foo) dep = dep + (runif(length(dep), -100, 100)) datos = data.frame(cbind(indep, dep)) plot(datos) ...

11 de mayo de 2016 · rvaquerizo