MACHINE LEARNIG
- ANTONY BRAYAN LLACCHUA IMAN
- 2 dic 2023
- 10 Min. de lectura
Actualizado: 2 dic 2023
Machine learning está definida como una rama de la inteligencia artificial (IA) y la informática que se centra en el uso de datos y algoritmos para imitar la forma en la que aprenden los seres humanos, con una mejora gradual de su precisión.
Es un componente importante del creciente campo de la ciencia de datos. Mediante el uso de métodos estadísticos, los algoritmos se entrenan para hacer clasificaciones o predicciones, y descubrir información clave dentro de los proyectos de minería de datos. Esta información clave facilita posteriormente la toma de decisiones dentro de las aplicaciones y las empresas, lo que afecta idealmente a las métricas de crecimiento clave.

CÓMO FUNCIONA MACHINE LEARNING
Se divide al sistema de aprendizaje de un algoritmo de machine learning en tres partes principales.
Un proceso de decisión: en general, los algoritmos de machine learning se utilizan para realizar una predicción o una clasificación. Basándose en los datos de entrada, que pueden estar etiquetados o no, el algoritmo generará una estimación sobre un patrón en los datos.
Una función de error: una función de error evalúa la predicción del modelo. Si hay ejemplos conocidos, una función de error puede hacer una comparación para evaluar la precisión del modelo.
Si el modelo puede ajustarse mejor a los puntos de datos del conjunto de entrenamiento, los pesos se ajustan para reducir la discrepancia entre el ejemplo conocido y la estimación del modelo. El algoritmo repetirá este proceso de evaluación y optimización, y actualizará los pesos de forma autónoma hasta que se alcance un umbral de precisión.
MODELOS DE MACHINE LEARNING
Machine learning supervisado:
El aprendizaje supervisado o machine learning supervisado, se define por su uso de los conjuntos de datos etiquetados para entrenar los algoritmos para clasificar datos o predecir resultados con precisión. A medida que se introducen datos de entrada en el modelo, este adapta sus pesos hasta que se haya ajustado correctamente. El aprendizaje supervisado permite a las organizaciones resolver una amplia variedad de problemas del mundo real a escala como, por ejemplo, la clasificación de spam en una carpeta distinta de la bandeja de entrada. Algunos métodos utilizados en el aprendizaje supervisado son las redes neuronales, arboles de decisión, la regresión lineal, la regresión logística y el bosque aleatorio.
Machine learning no supervisado:
El machine learning no supervisado, a diferencia del supervisado, utiliza algoritmos para analizar y agrupar en clústeres conjuntos de datos sin etiquetar. Estos algoritmos descubren agrupaciones de datos o patrones ocultos sin necesidad de ninguna intervención humana. La capacidad de este método para descubrir similitudes y diferencias en la información lo convierten en ideal para el análisis de datos exploratorios, las estrategias de venta cruzada, la segmentación de clientes y el reconocimiento de imágenes y patrones.
Aprendizaje semisupervisado:
El aprendizaje semisupervisado ofrece un punto intermedio entre el aprendizaje supervisado y no supervisado. Durante el entrenamiento, utiliza un conjunto de datos etiquetados más pequeño para guiar la clasificación y la extracción de características de un conjunto de datos sin etiquetar de mayor tamaño.
Machine learning de refuerzo:
Machine learning de refuerzo es un modelo de machine learning que es similar al aprendizaje supervisado, pero el algoritmo no se entrena utilizando datos de muestra. Este modelo aprende a través de prueba y error. Se reforzará una secuencia de resultados satisfactorios para desarrollar la mejor recomendación o política para un problema determinado.
APLICACIONES DEL MACHINE LEARGNING ACTUALMENTE

1. En el sector financiero
A través de una correcta infraestructura, es posible aplicar sistemas de machine learning como un servicio en las finanzas. Ya se está aplicando en automatizar procesos, generando chatbots que permiten interactuar con clientes de forma más rápida u optimizando el trabajo administrativo a través del procesamiento natural del lenguaje.
Las aplicaciones de machine learning también incluyen una mayor seguridad, pues permiten detectar de forma automática prácticas fraudulentas como el blanqueo de capital.
2. Asistencia virtual
Los asistentes virtuales emplean el procesamiento de lenguaje natural (NLP) para identificar lo que el usuario necesita, convertirlo en órdenes que ejecutar.
Además os chatbots responden preguntas más frecuentes sobre temas como envíos u ofrecen recomendaciones personalizadas, venta cruzada de productos o sugerencias de tallas para los usuarios. Entre los ejemplos de este tipo se incluyen los agentes virtuales de los sitios de comercio electrónico, los bots de mensajería, que utilizan Slack y Facebook Messenger, y las tareas que suelen realizar los asistentes virtuales
3. Marketing, publicidad y redes sociales
Los sistemas de machine learning como un servicio han generado una revolución en la capacidad de las organizaciones de llegar a potenciales clientes. Así, han nacido nuevas ramas como el marketing predictivo.
Como ejemplo, las aplicaciones de machine learning en redes sociales se multiplican, con algoritmos capaces de sugerir nuevas amistades o perfiles interesantes a los usuarios, además de anuncios relevantes.
4. Desplazamientos y viajes más eficientes
Uno de los usos más comunes del machine learning como un servicio es la aparición de aplicaciones de GPS capaces de predecir dónde habrá más tráfico y decidir la ruta más rápida, adecuada y eficiente.
Además, entre las aplicaciones de machine learning más interesantes, se están desarrollando vehículos que utilizan este sistema para la conducción autónoma.
5. Salud y medicina
En el campo de la medicina, se trabaja para que los sistemas de machine learning como un servicio permitan detectar enfermedades de forma temprana o predecir su evolución a través del análisis de datos.
De igual modo, se planea aplicarla en la investigación médica además de aplicarla a la atención al paciente a través de la planificación de terapias más adecuadas.
7. Seguridad
En gran medida, se entiende el machine learning como un servicio capaz de mejorar la seguridad en muchos sectores. Así, es posible aplicar esta tecnología para detectar la información más relevante en las grabaciones de cámaras de seguridad (por ejemplo, cuándo entra un humano en escena, detectar un rostro y reconocerlo o la presencia de una misma persona en varios fotogramas).
8. Aplicaciones de machine learning a nivel industrial
La capacidad de sacar valor de datos, predecir y proponer soluciones de las aplicaciones de machine learning también tiene un enorme impacto en la industria.
Como ejemplo, son muchas las industrias que ya aplican el machine learning para posibilitar un mantenimiento predictivo. Así, las propias máquinas son capaces de reaccionar antes de que se produzcan fallos que, a su vez, provoquen interrupciones en la producción.
KERAS
Keras es una biblioteca de código abierto escrita en Python que se basa principalmente en el trabajo realizado por Google. El objetivo de esta biblioteca es permitir el desarrollo rápido de redes neuronales. En este caso, Keras no es un marco independiente, sino una interfaz para principiantes (API) para acceder y programar una variedad de marcos de Machine Learning. Theano, Microsoft Cognitive Toolkit y Tensor Flow son algunos de los marcos soportados por Keras.
Keras es relativamente fácil de aprender y trabajar con él, porque proporciona un frontend de Python con un alto nivel de abstracción mientras que tiene la opción de múltiples backend para fines de computación.

CARÁCTERISTICAS DE KERAS
Keras presenta las siguientes características más destacadas:
Ofrece a los usuarios un marco de trabajo fácil de usar, junto con métodos y herramientas de creación de prototipos más rápidos.
Funciona eficientemente tanto en la CPU como en la GPU, sin ningún tipo de contratiempo.
Ofrece una API consistente que proporciona la información necesaria cuando se produce un error.
Puedes personalizar las funcionalidades de tu código hasta un gran punto. Incluso una pequeña personalización supone un gran cambio porque estas funcionalidades están profundamente integradas con el backend de bajo nivel.
Permite trabajar tanto con redes neuronales convolucionales (CNN) como con redes neuronales recurrentes (RNN) para una variedad de aplicaciones como Visión Computacional y el análisis de series temporales, respectivamente.
Su funcionalidad sin fisuras permite utilizar tanto CNN como RNN si es necesario.
Soporta completamente arquitecturas de red arbitrarias, poniendo a disposición de los usuarios la posibilidad de compartir modelos y capas.
¿Por qué necesitamos usar Keras?
Es una API que fue heacha para ser fácil de aprender para la gente. Keras fue hecho para ser simple. Ofrece APIs consistentes y simples, reduce las acciones requeridas para implementar código común y explica claramente los errores del usuario.
El tiempo de creación de prototipos en Keras es menor. Esto significa que tus ideas pueden ser implementadas y desplegadas en un tiempo más corto. Keras también proporciona una variedad de opciones de despliegue en función de las necesidades del usuario.
Los lenguajes con un alto nivel de abstracción y características incorporadas son lentos y construir características personalizadas en ellos pueden ser difícil. Pero Keras se ejecuta sobre TensorFlow y es relativamente rápido. Keras también está profundamente integrado con TensorFlow, por lo que puedes crear flujos de trabajo personalizados con facilidad.
La comunidad de investigadores de Keras es amplia y muy desarrollada. La documentación y la ayuda disponibles son mucho más extensas que las de otros marcos de Deep Learning.
Keras es utilizado comercialmente por muchas empresas .Por ejemplo, empresas conocidas como Netflix, Uber y Yelp, así como organizaciones como la NASA, y el Centro Europeo para la Investigación Nuclear (CERN), utilizan Keras o el paquete TensroFlow Keras en sus proyectos.
¿Cuáles son las ventajas de utilizar Keras?
Keras ha sido una excelente adición a las herramientas existentes para el desarrollo de redes neuronales, ya que esta biblioteca de código abierto simplifica enormemente el proceso. La usabilidad es la clave aquí. Keras funciona como una interfaz diseñada explícitamente para los humanos y solo en segundo lugar para las máquinas.
Las acciones del usuario se reducen al mínimo, y si aún así se producen errores, se proporciona una retroalimentación relevante para ayudar a corregirlos. Esto hace que sea comparativamente fácil aprender a usar y permite un mayor nivel de productividad.
A continuación, se presenta de las ventajas de más enfásis proporcionadas por Keras:
Amplio soporte de plataforma para los modelos desarrollados. Los modelos desarrollados con Keras pueden ser fácilmente desplegados en diferentes plataformas.
Soporte para múltiples motores de backend. Keras te da la libertad de elegir el backend que quieras y combinar múltiples backends. También puede transferir un modelo desarrollado a otro backend en cualquier momento.
Extraordinario soporte multi-GPU. Cuando se utiliza Keras, el trabajo de computación para los procesos de Deep Learning desarrollados puede distribuirse fácilmente entre múltiples chips o tarjetas gráficas.
Ahora procederemos a crear un modelo de aprendizaje profundo usando Keras y Tensor Flow . Lo implementaremos usando el lenguaje de programación Python. Un ejemplo es el de clasificación de imágenes, que nos ayudará a visualizar cómo se desarrolla este tipo de método durante el análisis de redes neuronales convolucionales avanzadas.
Para ello usaremos el conjunto Fashion MNIST. Este conjunto de datos consiste de imágenes de prendas con su correspondiente clase. El objetivo es entrenar un modelo que pueda predecir, ingresando una imagen, el tipo de prenda que corresponde. La siguiente imagen muestra el diagrama que vamos a desarrollar:
Tenemos un conjunto de imágenes.
Entrenamos un modelo, en este caso un modelo Red Neuronal Convolucional (CNN en sus siglas en inglés)
Usamos el modelo entrenado para predecir la clase que corresponde a imágenes de prendas no vistas.
Empezaremos importando las librerías necesarias:
# TensorFlow y tf.keras
import tensorflow as tf
from tensorflow import keras
# Librerias de ayuda
import numpy as np
import matplotlib.pyplot as plt
print(tf.__version__)
Aca, 60,000 imagenes son usadas para entrenar la red neuronal y 10,000 imagenes son usadas para evaluar que tan exacto aprendia la red a clasificar imagenes. Pueden acceder al set de moda de MNIST directamente desde TensorFlow. Para importar y cargar el set de datos de MNIST directamente de TensorFlow:
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
salida:
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz 29515/29515 [==============================] - 0s 1us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz 26421880/26421880 [==============================] - 2s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz 5148/5148 [==============================] - 0s 0us/step Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz 4422102/4422102 [==============================] - 1s 0us/step
Las imagenes son 28x28 arreglos de NumPy, con valores de pixel que varian de 0 a 255. Los labels son un arreglo de integros, que van del 0 al 9.
Cada imagen es mapeada a una unica etiqueta. Ya que los Class names no estan incluidoen el dataset, almacenelo aca para usarlos luego cuando se visualicen las imagenes:
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
Luego el set de datos debe ser pre-procesada antes de entrenar la red. Si usted inspecciona la primera imagen en el set de entrenamiento, va a encontrar que los valores de los pixeles estan entre 0 y 255:
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()
Para verificar que el set de datos esta en el formato adecuado y que estan listos para construir y entrenar la red, vamos a desplegar las primeras 25 imagenes de el training set y despleguemos el nombre de cada clase debajo de cada imagen.
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i]])
plt.show()
salida:

El siguiente procedimiento es onstruir la red neuronal, lo requiere configurar las capas del modelo y luego compilar el modelo. La mayoria de aprendizaje profundo consiste de unir capas sencillas. La mayoria de las capas como tf.keras.layers.Dense, tienen parametros que son aprendidos durante el entrenamiento.
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
Antes de que el modelo este listo para entrenar , se necesitan algunas configuraciones mas. Estas son agregadas durante el paso de compilacion del modelo:
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
Luego entrenamos el modelo, para comenzar a entrenar, llamemos el metodo model.fit, es llamado asi por que fit (ajusta) el modelo a el set de datos de entrenamiento:
model.fit(train_images, train_labels, epochs=10)
salida:

A medida que el modelo entrena, la perdida y la exactitud son desplegadas. Este modelo alcanza una exactitud de 0.88 (o 88%) sobre el set de datos de entrenamiento.
Entonces, con el modelo entrenado podemos usarlo para hacer predicciones sobre imagenes.
predictions = model.predict(test_images)
salida:
313/313 [==============================] - 1s 2ms/step
Aca, el modelo ha predecido la etiqueta para cada imagen en el set de datos de test (prueba). Miremos la primera prediccion:
predictions[0]
salida:

una prediccion es un arreglo de 10 numeros. Estos representan el nivel de "confianza" del modelo sobre las imagenes de cada uno de los 10 articulos de moda/ropa. Tambien podemos revisar cual tiene el nivel mas alto de confianza:
np.argmax(predictions[0])
salida:
9
Entonces,el modelo tiene mayor confianza que esta imagen es un bota de tobillo "ankle boot" . Examinando las etiquetas de test o de pruebas muestra que esta clasificaion es correcta:
test_labels[0]
salida:
9
Luego graficamos esto para poder ver todo el set de la prediccion de las 10 clases.
def plot_image(i, predictions_array, true_label, img):
predictions_array, true_label, img = predictions_array, true_label[i], img[i]
plt.grid(False)
plt.xticks([])
plt.yticks([])
plt.imshow(img, cmap=plt.cm.binary)
predicted_label = np.argmax(predictions_array)
if predicted_label == true_label:
color = 'blue'
else:
color = 'red'
plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
100*np.max(predictions_array),
class_names[true_label]),
color=color)
def plot_value_array(i, predictions_array, true_label):
predictions_array, true_label = predictions_array, true_label[i]
plt.grid(False)
plt.xticks(range(10))
plt.yticks([])
thisplot = plt.bar(range(10), predictions_array, color="#777777")
plt.ylim([0, 1])
predicted_label = np.argmax(predictions_array)
thisplot[predicted_label].set_color('red')
thisplot[true_label].set_color('blue')
Ahora iremos la imagen [0], sus predicciones y el arreglo de predicciones. Las etiquetas de prediccion correctas estan en azul y las incorrectas estan en rojo. El numero entrega el porcentaje (sobre 100) para la etiqueta predecida.
i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()
salida:

Con otra imagen:
i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions[i], test_labels)
plt.show()
salida:

Finalmente, así podemos graficar las predicciones con multiples imagenes. Notese que el modelo puede estar equivocado aun cuando tiene mucha confianza.
# Plot the first X test images, their predicted labels, and the true labels.
# Color correct predictions in blue and incorrect predictions in red.
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
plt.subplot(num_rows, 2*num_cols, 2*i+1)
plot_image(i, predictions[i], test_labels, test_images)
plt.subplot(num_rows, 2*num_cols, 2*i+2)
plot_value_array(i, predictions[i], test_labels)
plt.tight_layout()
plt.show()
salida:

Comentarios