Introducción al Machine Learning #7 - Los Algoritmos de Clasificación

Índice

Introducción:

Buenos días, buenas tardes y buenas noches. Les doy la bienvenida a un nuevo articulo cuyo tema es "Introducción al Machine Learning".

En artículos pasado hemos visto: Los distintos tipos de aprendizaje, conjuntos de datos, un ejemplo simple de clasificación, y los pasos para crear un modelo de aprendizaje.

Perfecto, vamos bien. Como sabemos, los problemas de clasificación son instancias del aprendizaje supervisado (el aprendizaje donde está disponible un conjunto de entrenamiento de observaciones correctamente identificadas).

En el día de hoy quisiera explicar de manera clara y precisa, los problemas de Clasificación. Les mostrare como funcionan los problemas clasificación, cual es el procedimiento que emplean los clasificadores, cuales son los distintos clasificadores y al final realizaremos un pequeño ejemplo.
Imagen relacionada

Algoritmos de Clasificación:

En los problemas de clasificación, las muestras o los datos que usaremos pertenecen a 2 o más clases (categorías). Lo que queremos, es crear un modelo que aprenda de estos datos etiquetados, para que en un futuro puede predecir la clase de datos sin etiquetar.

A continuación, te mostrare un imagen que describe de manera clara la clasificación:

Resultado de imagen para machine learning clasificacion
Esta imagen, no puede explicarlo mejor. Al momento de ingresar datos desconocidos al modelo, este lo clasificara en una de las clases, ya sea rojo o azul, circulo o cuadrado.

Pero ¿Cual es la lógica de esto? Bueno, es simple, la clasificación es un ejemplo de reconocimiento de patrones. El modelo aprende los valores de los datos y busca patrones, de esta manera al ingresar un dato nuevo, este lo clasificara según sus patrones, o según los valores que se asemejen más.

Esto es muy parecido al proceso de aprendizaje de las personas. Nosotros somos muy buenos clasificadores, clasificamos nuestros alimentos, nuestros libros, los animales, planetas, tipos de flores y prácticamente todo lo que nos rodea.

Existen muchos ejemplos de clasificación, como el filtrado de correo de Gmail, el cual clasifica que correo es spam y que no. También problemas como el reconocimiento de dígitos escritos a mano, entre otros.

Un algoritmo que implementa la clasificación, especialmente en una implementación concreta, se conoce como clasificador. El termino "clasificador" a veces también se refiere a la función matemática, implementada por un algoritmo de clasificación, que mapea datos de entrada a una categoría. De este modo, cuando mencione al "clasificador"sabrán que me estaré refiriendo al algoritmo de clasificación.

Existen muchos algoritmos (clasificadores) para la clasificación, entre ellos:
  1. Regresión Logistica
  2. Clasificador Naive Bayes
  3. Perceptron
  4. Maquinas de Vectores de Soporte (SVM)
  5. K-vecino más cercano
  6. Árboles de Decisiones


La clasificación tiene muchas aplicaciones, entre ellas tenemos:
  1. Reconocimiento de imágenes
  2. Reconocimiento de voz
  3. Reconocimiento óptico de caracteres
  4. Reconocimiento de escritura a mano
  5. Motores de búsquedas de Internet
  6. Clasificación de documentos
  7. Reconocimiento de patrones

El clasificador más simple posible:

Bueno, creo que ya tenemos suficiente conocimiento como para emplear un ejemplo de clasificación. El ejemplo lo realizare utilizando el lenguaje de programación Python, y haciendo uso del modulo Scikit-Learn.

El clasificador más simple posible se puede realizar con el clasificador "K-Vecinos más cercano" (K-NN) . Para este clasificador tengo reservado un articulo entero, pero les daré una breve explicación de como funciona este clasificador.

En la clasificación K-NN, el resultado es una membresía de clase. Un objeto se clasifica por el voto mayoritario de sus vecinos, asignándose el objeto a la clase más común en sus k vecinos más cercanos (k  es un numero entero positivo, típicamente pequeño). Si k=1, entonces el objeto se asigna simplemente a la clase de ese vecino más cercano.


Esta es una imagen, que muestra como funciona el clasificador K-NN. Si k es igual a 3 (k=3), el circulo (dato sin clasificar) se asigna a la clase de los triángulos (clase 1), ya que  en el rango (3 vecinos más cercanos) se encuentran 2 triángulos y un solo cuadrado. En cambio si k es igual a 5 (k=5), el circulo se asigna a la clase 2 (clase de los cuadrado), ya que en su rango (5 vecinos más cercanos), se encuentran 3 cuadrados y solo 2 triángulos.

El clasificador K-NN, es fácil de entender. Con la explicación que les di, ya pueden deducir por que le dieron ese nombre.


Ahora, ya estamos aptos para realizar el pequeño ejercicio de hoy.




from sklearn.neighbors import KNeighborsClassifier #Importamos al clasificador 
from sklearn.datasets import load_iris #Importamos el conjunto de datos Iris
from sklearn.model_selection import train_test_split 

iris = load_iris() #Guardamos el conjunto de datos Iris en una variable

#Dividimos nuestros datos en "conjunto de entrenamiento" y "conjunto de prueba"
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target) 

knn = KNeighborsClassifier() #Declaramos nuestro modelo

knn.fit(x_train, y_train) #Ajustamos a nuestro modelo

knn.score(x_test, y_test) #Probamos el conocimiento que adquirio el modelo
Out[1]:
0.97368421052631582



knn.predict([[2.3, 4.1, 7.0, 2.4]])
Out[2]:
array([2])



Con el método "predict", le digo al clasificador que tome el vector que le paso como parámetro, y que lo clasifique en una clase (tipo de iris). El resultado es "2", ya que como hemos visto en artículos anteriores, "2" representa al tipo de iris "virginica".



Perfecto, creo que esto esta bien por hoy, trate de explicar todo de manera clara, pero siempre se me pasa algo por alto, así que si tienes una duda, con gusto la responderé.


Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.



  1. Arguez dice:

    Hola buenas, acabo de descubrir el blog y no doy abasto xd, intentaré leer todo lo que pueda todos los días que pueda. Un saludo.

    1. PythonDiario dice:

      Excelente Arguez, gracias por visitar el blog!!!
      Saludos

  2. maxidg dice:

    Tenés correo Gmail? Necesito preguntarte algo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir
White Monkey