Introducción a las técnicas de Machine Learning (ML)

¿Qué es Machine Learning?

“El aprendizaje automático o aprendizaje automatizado o aprendizaje de máquinas (del inglés, machine learning) es el subcampo de las ciencias de la computación y una rama de la inteligencia artificial, cuyo objetivo es desarrollar técnicas que permitan que las computadoras aprendan. Se dice que un agente aprende cuando su desempeño mejora con la experiencia y mediante el uso de datos; es decir, cuando la habilidad no estaba presente en su genotipo o rasgos de nacimiento” https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico

|a0e5cfda064b450b91771da55b605c18| |6ffb120fb91d46eeaf15b174c9ffb5d2|

Tareas más recurrentes en ciencias de datos

Podemos clasificar las tareas según ciertas actividades[3]:

  • Classification and class probability estimation. Para cada individuo de una población estimar el conjunto de clases al cual pertenece. Ejemplos, ¿Qué grupos de clientes reaccionarán a una oferta? ¿Qué clientes accederían a realizar una encuesta telefónica?, …

  • Regression (“value estimation”). Se intenta estimar o predecir el valor número de una variable. Ejemplos, ¿Cuántos clientes usarán este servicio?. La regresión está relacionada con la clasificación. La clasificación predice si algo pasará y la regresión cuánto ocurrirá.

  • Similarity matching. Problemas donde se intenta identificar si elementos similares mediante datos sobre ellos. Útil para la realización de sistemas de recomendación. Los indicadores utilizados se usan también en la clasificación, regresión y en el agrupamiento.

  • Clustering. Intenta agrupar elementos de una población que compartan similitudes. ¿Qué relación guardan estos clientes?

  • Co-ocurrence grouping. Intenta encontrar asociaciones entre elementos implicados en transacciones. ¿Qué items son comprados conjuntamente? Similar al clustering pero el matiz recae en transacciones.

  • Profiling. Intenta caracterizar el comportamiento típico de un individuo, grupo o población. ¿Qué aplicaciones suelen usar los adolescentes? Útil para la detección de anomalías.

  • Link prediction. Intenta predecir conexiones entre datos, por lo general para determinar que enlaces deberían de existir y estimar la fortaleza del mismo. ¿Es útil utilizar este influencer para anunciar nuestros productos en este población de usuarios?

  • Data reduction. Intenta sintetizar los datos relevantes de un catálogo mucho mayor que proporcione una esencia de los mismos. ¿Qué es lo importante para este estudio?

  • Casual modeling. Intenta ayudar a comprender la influencia mutua de eventos o acciones. ¿Qué te ha llevado a comprar este producto?

¿Qué ocurre con un algoritmo tradicional en estas tareas?

Vamos a frontar el diseño de un sistema de recomendación. - ¿Qué criterios utilizaríamos? - ¿Cómo implementariamos las reglas?

Disponemos de la siguiente información:

Transaction ID

Order

User Region

Product ID

Product Price

Promotion

Product Category

Product Description

User Class

001

1

920

01

25

Yes

Book

bla bla BLA

A

001

2

920

02

20

Yes

Book

ble ble BLE

A

839

1

878

03

40

No

Technology

blu blu BLU

C

839

2

878

04

100

No

Home

None None none

C

030

1

909

05

20

No

Home

Lorem Ipsum

D

030

2

909

06

20

Yes

Garden

Green Green

D

  • IDEAS?

if shopping.cart contains produt."01" then:
    add a new product in web panel ("02") # "Otros usuarios también compraron:"

if shopping.cart contains product."Garden" then:
    add a new product in web panel ("05")

if shopping.cart contains product.Description."BLA" and product.Category."Book" then:
    add a new product in web panel ("03")

Y ¿qué pasaría sí se considerán nuevos criterios, cambios en los modelos o en los valores de los atributos, o simplemente si tuvieramos miles de transacciones diarias.

Este tipo de soluciones: - son ad-hoc y según su dimensión, son inmantenibles. - no escalables ni flexibles - Consumen elevados recursos computaciones y ofrecen un tiempo de respuesta insuficiente. - son fiables? precisión?

¿Cómo afronta el problema un algoritmo de aprendizaje?

f0d0dc0f87824936a44685488c7f1171

Tipos

A) Métodos supervisados y B) no supervisados

La principal diferencia entre ambos métodos es la disposición de datos con información relevante hacia el objetivo que permitan guíar el proceso de aprendijzaje. Si existen dichos datos, nos encontramos ante la posibilidad de aplicar métodos supervisados. Por ejemplo, ¿cuántos tipos de clientes podriamos tener? Estamos ante un problema no supervisado ya que no existe una información previa que nos ayude a esteblecer ciertos patrones o reglas. Por otro lado, ante la problemática de poder encontrar grupos de clientes con un alto potencial a cancelar su contrato, estamos ante un problema donde aplicar un método supervisado ya que disponemos de clientes con y sin contrato. Podemos usar esta separación para guíar el proceso de aprendizaje.

Técnicas de clasificación, regresión y modelado casual generalmente son métodos supervisados. Clustering, co-ocurrence grouping y profiling son, generalmente, métodos no supervisados. El resto de tareas pueden pertenecer a ambos métodos.

También existen los métodos semi-supervisados, una combinación de ambos donde hay cierta información etiquetada pero la gran mayoría no lo está.

C) Reinforcement learning - Aprendijzaje por refuerzo.

Este tipo de métodos se basan en recompensar acciones o compartamientos positivos para guiar el aprendizaje. Existe una función de recompensa tanto positiva como negativa que evalua la decisión tomada. La evaluación del estado, la acción y la recompensa sirven para entrenar el modelo.

086af64aa86345eb8b681a4c7581c330

A) Aprendizaje supervisado

Dentro del aprendizaje supervisado podemos distinguir dos tipos de problema básicos:

  1. Regresión

  2. Clasificación

La mejor forma de distinguir entre uno y otro es preguntarse si necesitamos predecir una cantidad o un valor continuo, cuanto vale una casa dado un vecindario y la superficie?. Dado el valor de una casa y la superficie dime en que vecindario está.

El nombre fue introducido por Francis Galton cuando estudiaba que los hijos de gente alta tendían a ser bajos, por lo que había una regresión a la media.

Entre los algoritmos más usados para realizar regresiones encontramos:

  1. Linear Regression and variants (echale un vistazo a esto)

    1. Ridge Regression (l2)

    2. Lasso Regression (l1)

    3. Stepwise Regression

  2. Regression trees and trees ensembles

  3. Support Vector Regressors

Una de las tareas más comunes a realizar. Se trata de encontrar el grupo al que pertenece una observación.

Entre los algoritmos más usados y útiles encontramos:

  1. Logistic Regression

  2. Regression trees and ensembles

  3. Support Vector Classifiers

B) Aprendizaje no supervisado

Como podrás imaginar, este tipo de algoritmos vienen condicionados por el hecho de que tenemos datos sin etiquetas.

Dentro de esta categoría podemos encontrar tres otras sub-categorías en función del objetivo que definamos o del problema a cubrir:

  1. Clustering:

    1. k-means y variantes

    2. (Hierarchical) Density-Based Spatial Clustering of Applications with Noise:(H)DBSCAN

    3. Hierarchical clustering

    4. Expectation Maximization (Gaussian mixture models, …)

  2. Reducción de dimensionalidad / visualización:

    1. Principal Component Analysis (PCA)

    2. t-distributed Stochastic Neighbor Embedding (t-SNE)

  3. Reglas de asociación

    1. ({carbon + carne –> cerveza})

Elección de algoritmo

Dado que la principal función es saber elegir que tipo de modelo usar en que situación, hay dos fallos potenciales que son fáciles de cometer:

  1. Elegir mal el algoritmo, ya sea por un modelo lineal que sobre simplifique el problema (underfitting) o un modelo complejo que no aprenda sino que de “memoría” aplique lo mismo (overfitting).

  2. Elección incorrecta de datos.

Los principales problemas de datos que podemos tener son:

  1. Una representatividad de casos insuficiente.

  2. Datos con poca calidad: outliers, nan’s,…

  3. Atributos irrelevantes: identificadores, garbage in, garbage out,…

Una parte crucial a la hora de crear un modelo es seleccionar las variables adecuadas y/o modificarlas de forma que aporten más información al modelo, lo que se conoce como Feature engineering:

  1. Feature extraction: creación de nuevas variables, p.ej. $ duration = date_{exit} - date_{start}$.

  2. Feature selection: eliminación de atributos que no aportan valor al modelo, reduce el ruído y puede mejorar el algoritmo.

Bibliografía

  • [1] Introduction to Machine Learning with Python. A guide for Data Scientist. Andreas C. Müller and Sarah Guido. OReilly. 2017

  • [2] Data Science for Business. Foster Provost and Tom Fawcett. OReilly. 2013

  • [3] Machine Learning. The art and science of Algorithms that make sense od data. Peter Flach. Cambridge. 2012

  • [4] Biel - Github https://github.com/bmalcover/MADM2021

  • [5] Machine Learning & Data Science Blueprints for Finance: from Building Trading Strategies to Robo-advisors using python. Hariom Tatsat, Sahil Puri, and Brad Lookabaugh. OReilly. 2021

License: CC BY 4.0 Isaac Lera and Gabriel Moya Universitat de les Illes Balears isaac.lera@uib.edu, gabriel.moya@uib.edu