Curso: How to Think About Machine Learning Algorithms

No hay muchos cursos sobre Machine Learning en Pluralsight. Buscando entre los que parecen más generales, más teóricos que prácticos, este tiene buena pinta.

Busco cursos más generalistas para ir aprendiendo los conceptos. Los más específicos, los que hablan más sobre herramientas que sobre conceptos, no me interesan todavía. Todo llegará.

Contenidos del curso How to Think About Machine Learning Algorithms de Swetha Kolalapudi:

Notas tomadas

Capítulo 1: Introducing Machine Learning

Resolver problemas con Machine Learning es como resolverlos de una manera parecida a cómo aprendemos los humanos. Los humanos aprendemos de la experiencia (exposición a un fenómeno durante un largo período de tiempo). En tecnología, esa experiencia la conocemos como datos, así, los programas aprenden de los datos como los humanos aprendemos de la experiencia.

Hay 4 grandes categorías de problemas a resolver con ML:

Los algoritmos usados en ML ya están inventados. Donde hay que emplear casi todos los esfuerzos no es en desarrollar el algoritmo, si no en ser capaz de representar los datos de forma numérica para poder aplicarlos. Lo complicado de ML no son los algoritmos, si no representar los datos de la mejor forma posible. Identificar las features correctas, cuantificarlas,…

Capítulo 2: Classifying Data into Predefined Categories

Problem instance: definición del problema que queremos resolver

Classifier: algoritmo de clasificación

Label: categoría, clasificación,… identificada

El algoritmo necesita que los datos usados en el aprendizaje estén correctamente etiquetados/clasificados.

Los patrones identificados por el algoritmo crean lo que se conoce como Modelo

Algoritmos para resolver problemas de clasificación:

Term frequency representation: representación para cuantificar textos. Se crea una colección de todas las palabras que nos vamos a poder encontrar. Para un texto dado, anotamos las apariciones de cada una de esas palabras. Así tenemos una representación numérica del texto, con el que lo podemos comparar con otros textos.

Capítulo 3: Solving Classification Problems

Naive Bayes

Se puede utilizar para analizar textos, por ejemplo, para clasificarlos como positivos o negativos. Asumimos que los textos los tenemos cuantificados con Term freq. representation.

Para cada palabra/término tenemos que calcular la probabilidad de que aparezca en comentarios positivos Po (la negativa sería No = 1 - Po).

     (cuantas veces aparece el término en comentarios positivos)
Po = ------------------------------------------------------------
     (cuantas veces aparece el término en todos los comentarios)

Para un nuevo texto dado, se multiplican los Po de cada palabra y obtenemos el Po del comentario. Lo mismo con No.

Se llama naive porque asume que todas las palabras son independientes, cosa que sabemos que es mentira. Ciertas palabras son más probables que aparezcan junto a otras. Pero el algoritmo así es más sencillo.

Support Vector Machines

Pero… ¿cómo funciona este algoritmo? Ya tengo algo para profundizar por mi cuenta

Capítulo 4: Predicting Relationships Between Variables with Regression

En los problemas de regresión, quieres calcular, predecir algún valor contínuo. Quieres relacionar la relación que existe entre dos variables (tamaño del piso -> precio del piso).

Tipos de regresión, o algoritmos para resolver problemas de regresión:

Los problemas de clasificación y los de regresión son similares en muchos aspectos. La principal diferencia es lo que obtenemos a la salida. Para la clasificación obtenemos un valor categorizado (con categorías que conocemos de antemano), mientras que para la regresión obtenemos un valor contínuo, dado unos valores de entrada (variables independientes) obtenemos un valor de salida (vble dependiente).

Capítulo 5: Solving Regression Problems

Supongamos que tenemos las variables independientes X0, X1,… La vble dependiente será Y. Podemos calcular:

Y = b0 + b1·X1 + b2·X2 + ...

Donde b0,… son constantes. Son los valores que debe encontrar el algoritmo de ML. Estas constantes se llaman co-eficientes.

Para unos valores encontrados de los coeficientes se calcula un error (distancia de la línea calculada hasta los puntos reales). El objetivo es minimizar este error. Una de las técnicas disponibles es Stochastic Gradient Descent.

Capítulo 6: Recommending Relevant Products to a User

Collaborative filtering algorithms: predicen valoraciones de productos de los usuarios basándose en el comportamiento pasado del usuario

Latent factor analysis: es un subconjunto de Collaborative filtering. Identifica factores ocultos que influyen en el comportamiento del usuario. Ocultos es la clave. Factores ocultos pueden ser: género, popularidad del reparto en una película, cercanía a la salida del producto al mercado,…

Partimos de una matriz donde las columnas son productos y las filas los usuarios. Cada celda es la valoración del usuario. Pero hay huecos. Tenemos que adivinar los valores para esos huecos.

      | Prod 1 | Prod 2 | Prod 3 | ... | Prod n |
      +--------+--------+--------+-----+--------+
Usr 1 |    5       ¿?
      +--------+--------+--------+-----+--------+
Usr 2 |            6        ¿?
      +--------+--------+--------+-----+--------+
Usr 3 |                                     10
      +--------+--------+--------+-----+--------+
Usr m |   ¿?

Nos inventamos dos matrices: matriz User-Factor y matriz Product-Factor, de forma que multiplicando las dos, obtendremos la matriz Product-User. Al no conocer todos los valores de Product-User, tenemos que iterar para calcular los valores de las dos matrices inventadas, que son justo las que contienen información sobre los factores ocultos.

Latent factor analisys

Donde r43 es la valoración del usuario 4 para el producto 3.

Por lo cual, tenemos que resolver Rui = Pu · Qi. Al no conocer todos los valores de Rui cometeremos errores. Hay que conseguir que esos errores sean el mínimo. Tenemos que minimizar el error SUM(Rui - Pu·Qi)^2

Para ello se puede utilizar la técnica Alternating Least Squares

Algoritmos para resolver problemas de recomendaciones:

Capítulo 7: Clustering Large Data Sets into Meaningful Groups

Clustering es una forma de agrupar elementos basándose en alguna medida de similaridad.

El objetivo es maximizar el parecido dentro de los grupos (intracluster) y al mismo tiempo minimizar el parecido entre distintos grupos (intercluster).

Por ejemplo, se pueden representar a los usuarios mediante atributos numéricos, y dichos puntos se pueden mostrar en un espacio de N dimensiones.

Algoritmos de clustering:

Los problemas de clasificación y de clustering parecen lo mismo, pero no lo son. En clasificación conocemos de antemano las categorías. En clustering no, si no que descubrimos las categorías.

En ocasiones ambos problemas van de la mano. Se usa clustering para detectar categorías. Se usan esas categorías para categorizar después nuevos datos.

Inverse document frequency: usado en conjunto con Term Frequency Representation, se usa para minimizar el impacto de palabras muy, muy usadas en documentos (artículos la y lo, conjunciones y y o,…). Cada frecuencia de un término se multiplica por un factor (o weight) calculado como la inversa de los documentos en los que el término aparece. La historia está en que palabras más usadas, tendrán menos peso en la representación numérica.

Para hace clustering de documentos, tenemos representado cada documento por un conjunto de N números (term frequency) ponderados (inverse document frequency). Vamos, un documento es un punto en un espacio de N dimensiones. Si no lo has pillado a estas alturas, ya no sé qué hacer contigo.

Algoritmo K-Means

En ese espacio de N dimensiones, se inicializan una serie de puntos como K medias. Estos puntos son considerados centroides de los clusters que queremos identificar.

Cada punto de nuestros datos se asigna a la media más cercana. Formando así unos clusters iniciales.

Con los clusters ya montados, se calculan unos nuevos centroides o K-medias.

Repetir el proceso hasta que los centroides no se mueven (o no se mueven mucho).

Capítulo 8: Wrapping up and Next Steps

La mayoría de los datos requieren un gran preprocesado.

Representación de los datos:

Selección del modelo:

Machine Learning in a nutshell

Conclusión

Ha habido momentos durante el curso que pensé que era flojillo, pero al poco tiempo me di cuenta de que es un curso bastante bueno. Expone distintos problemas para ser resueltos mediante Machine Learning.

No todos los problemas se pueden resolver de la misma manera y Swetha explica distintos tipos de problemas y sus distintas formas de resolverlos.

Totalmente recomendado para saber por dónde van los tiros a la hora de enfrentarse a problemas. Abre muchos caminos por los que seguir aprendiendo. Y esa era mi idea, así que estoy bastante contento con el curso.

Y después… ¿qué? ¿con qué sigo?

Referencias