Machine learning básico con Python, Scikit-learn y Pandas.

Contenido

En este curso de nivel básico, te vamos a contar que es el machine learning. Además veremos qué tipos de problemas de aprendizaje automático podemos encontrar y cómo se solucionan. Y siempre usando ejemplos ilustrativos que nos ayuden a entender los conceptos que se van explicando.

Recomendaciones antes de empezar

Antes de comenzar este curso básico deberás tener en cuenta unas recomendaciones. El presente curso supone que tienes unos conocimientos de programación medios en el lenguaje Python

¿Qué es el machine learning o ml?

El aprendizaje automático o en inglés machine learning (ml para acortar) es una disciplina del grupo de materias TIC. Esta disciplina se encarga de resolver problemas en los que un algoritmo informático tradicional tendría muchos problemas para obtener buenos resultados.

Un ejemplo sencillo

Para ilustrar lo que estamos explicando vamos a usar un ejemplo sencillo. Imaginemos que queremos desarrollar un sistema informático que sea capaz de determinar si un email es spam o no. Para realizar esto, podemos intentar desarrollar un programa tradicional que intente buscar palabras que habitualmente aparecen en correos fraudulentos. Podríamos realizar estudios de frecuencias de aparición de palabras, símbolos, etc.

En cualquier caso, no parece que pudiéramos desarrollar un programa sencillo para llevar a cabo esta tarea. Además, es muy fácil que nuestro software encontrara situaciones en las que fallara debido a que estamos usando una palabra habitual en un correo legítimo.

Otro problema a tener en cuenta sería la actualización de nuestro programa. Es fácil entender que la complejidad del programa haría difícil añadir nuevas palabras o estructuras para actualizar el mismo a nuevos ejemplos de spam.

Este tipo de problemas más complejos no se solucionan ya mediante software desarrollado para cada situación. Por contra, se usan técnicas de inteligencia artificial y machine learning para su resolución.

Algunos conceptos del machine learning que debemos aprender

Antes de continuar vamos a definir una serie de conceptos básicos del aprendizaje automático. Cuando pensemos en un problema de machine learning, debemos ilustrarlo como un ordenador que está aprendiendo a realizar una tarea. Esta tarea, puede ser decidir si un correo es legítimo o no, predecir el valor de una vivienda en una zona de una ciudad, etc.

Para aprender a realizar la tarea en cuestión, vamos a necesitar un conjunto de ejemplos ya realizados. Es decir, si queremos aprender a clasificar correos electrónicos tendremos un conjunto de correos ya clasificados. A esto lo denominaremos conjunto de datos o dataset.

Cada conjunto de datos estará formado por un número de ejemplos. A cada ejemplo del conjunto de datos lo llamaremos instancia. Es decir, en nuestro conjunto de datos de emails, cada email será una instancia del mismo.

Cada instancia tendrá una serie de valores que la definen a los que nosotros llamaremos atributos. Es decir, cada instancia del conjunto de datos de viviendas, tendrá definido una serie de atributos como por ejemplo: calle, zona, metros cuadrados, etc.

¿Qué tipos de problemas son los más habituales en ml?

Dentro del mundo del aprendizaje automático existen una serie de problema típicos que nos vamos a encontrar de forma recurrente. A continuación vamos a ir explicándolos con algunos ejemplos.

Clasificación: Este es el problema típico de aprendizaje automático. Como hemos definido anteriormente en este tipo de problemas vamos a clasificar algo en base a unos valores. Por ejemplo, supongamos que queremos clasificar un email como spam o correo legítimo en base a su contenido. Tendríamos un problema de clasificación como el que aparece en la siguiente imagen.

Sistema basado en machine learning de clasificación de correos en SPAM o correo legítimo
Sistema de clasificación de correos en SPAM o correo legítimo

Regresión: Este tipo de problemas es muy habitual en machine learning. Consiste en la predicción de un valor numérico en base a una serie de valores. Por ejemplo, imaginemos que queremos predecir el coste de una pizza en función del atributo del tamaño del radio de la misma en centímetros. Así tendríamos un problema de regresión que consistiría en obtener una función similar a la que aparece en el siguiente gráfico.

Valores en la gráfica con regresión lineal ajustada
Instancias del dataset y función ajustada.

Clusterización: Este tipo de problema también conocido como agrupamiento o clustering en inglés, también es habitual. Consiste en separar las instancias de nuestro dataset en grupos homogéneos en base a los valores de los atributos de cada instancia. Así, imaginemos una empresa de ventas que tenga una base de datos de clientes. Para cada cliente tendrá una serie de atributos. Este tipo de empresa quiere separar o segmentar sus clientes en grupos homogéneos para atender mejor a sus necesidades.

Grupos de usuarios
Agrupación de usuarios de forma homogénea de un dataset de usuarios sin etiquetas.

¿Cómo se clasifican los problemas de machine learning?

Antes hemos visto algunos ejemplos de problemas de machine learning. Estos problemas pueden ser clasificados en tres grandes grupos:

  • Aprendizaje supervisado: Este tipo de aprendizaje automático es en el que tenemos un conjunto de datos y los resultados deseados de los mismos. Es decir, disponemos de un dataset y el valor objetivo está definido. Así, el valor definido podrá ser una etiqueta en los problemas de clasificación, o bien un valor numérico para problemas de regresión.
  • Aprendizaje no supervisado: En contraposición con el caso anterior, aquí disponemos de un conjunto de datos que no tiene el resultado que queremos obtener. Es decir, tendremos un dataset con instancias y sus atributos, pero no dispondremos de ninguna etiqueta ni valor que queramos obtener. Por contra, lo que se pretende en este tipo de problemas es que el algoritmo de machine learning, descubra de forma autónoma grupo de instancias homogéneas, patrones en los datos, etc. Un caso típico de este tipo de problemas es el agrupamiento, clusterización clustering en inglés.
  • Aprendizaje semi-supervisado: Este será un caso mixto con respecto a los dos anteriores. Así, el conjunto de datos de este tipo de problemas estará formado por un pequeño grupo de datos etiquetados y el resto no etiquetados. Es decir, nuestro dataset tendrá un pequeño número de instancias con un valor objetivo (etiqueta o valor numérico), y un gran conjunto de instancias sin valor objetivo. Esto sucede con los algoritmos de agrupamiento que se usan para datasets con datos faltantes. Por ejemplo podemos ver esto en el algoritmo de esperanza-maximización.

Artículos del curso

Para continuar con el curso básico vamos a utilizar los siguientes artículos. Puede leer los artículos en el orden que le proponemos o en el orden que más te interese, ya que, ya hemos explicado los conceptos básicos para poder entenderlos.

Aprendizaje automático

Aprendizaje automático con Scikit-learn #1: Clasificación

Este artículo no está pensado para ser una extensa documentación acerca de los fundamentos teóricos del aprendizaje automático o machine ...
Gráfica de velas

Aprendizaje automático con Scikit-learn (Parte #2): Regresión lineal

En el anterior artículo hemos visto como el aprendizaje automático se ha utilizado para resolver un problema de clasificación. Estos ...
Vortex de puntos

Aprendizaje automático con Scikit-learn (Parte #3): Clusterización

Como hemos visto en anteriores artículos los problemas de machine learning incluyen la resolución de proyectos de clasificación y regresión ...
Inteligencia artificiacial preprocesamiento de datasets

Preprocesamiento de datasets con Python, Scikit-learn y Pandas (Parte #4)

Hasta ahora hemos visto problemas de clasificación, regresión y clusterización con Scikit-learn. Sin embargo, siempre hemos utilizado datasets que ya ...

Sugerencias

    captcha