Things You Should Know Before Doing Your First Machine Learning

Ankita Prakash
Jul 01, 2020

Things You Should Know Before Doing Your First Machine Learning

Jul 01, 2020 11 minutes read

Si has hecho tu primer MOOC en Machine Learning (alias Andrew Ng en Coursera) y quieres explorar más oportunidades en este campo o eres alguien que ha estado observando rumores sobre la Ciencia de los Datos y el aprendizaje automático y quieres comprobar si este campo es el adecuado para ti, estás en el lugar correcto (virtualmente) para aprender sobre algunos ingredientes de la receta que te ayudarán a brillar con el aprendizaje automático

Dividiendo el aprendizaje automático en componentes, los tres que deberían preocuparte ahora mismo serían:

  • Datos, porque, bueno es ciencia de "datos",
  • Las matemáticas que van detrás del modelo
  • Programación.

En este artículo, la máxima atención se centrará en los datos, por lo que cubrimos primero los otros dos.

Lea También: Cómo Construir Su Portafolio Definitivo de Data Science.

Las matemáticas que van detrás del modelo

Saber cómo funciona un algoritmo no es necesario hasta la primera vez que ejecutas model.fit() y model.predict(), pero para aprovechar la potencia real de un algoritmo, es necesario entender cómo funciona. La Regresión Logística es un tipo de modelo lineal generalizado, por lo que un modelo de regresión lineal que produce datos continuos puede modificarse fácilmente para dar categorías como resultado. Las medidas de precisión o los valores de los parámetros, todo es una función matemática de una forma u otra.


El logo de la biblioteca de Scikit Learn en Python (Fuente )

Así que la siguiente pregunta que surge es, "¿Cuánto hay que saber de matemáticas?" La respuesta a esta pregunta depende en cierto modo de cuáles son sus objetivos. Si quieres ser un investigador que va a mejorar el estado del arte actual de los modelos, obviamente necesitas conocer cada parte de las matemáticas que hay en tu Modelo de Aprendizaje Automático, porque así es como vas a mejorar lo que ya existe, encontrando nuevas funciones matemáticas que trabajan sobre los datos para producir mejores resultados. Si sólo quieres predicciones suficientemente buenas en tu modelo que se adapten a tu objetivo, conocer las matemáticas suficientes para navegar a través del proyecto es suficiente.


Programación

La programación de un modelo aprendizaje automático se inicia después de que se ha identificado el problema que se desea resolver y su tipo (clasificación, regresión, agrupación, ranking, etc.), se ha hecho el preprocesamiento necesario y se ha decidido el algoritmo con el que se va a empezar. Es importante tener un buen punto de partida: leer sobre cualquier trabajo previo relacionado y codificarlo; una vez que se obtiene una línea base de precisión, probar diferentes algoritmos o construir sobre el mismo. Esto ayuda a entender lo que está pasando y lo que necesitas hacer a continuación para lograr tu propósito.

Programe para los humanos, no para las máquinas(fuente)

Documente tanto como sea posible porque hay una alta probabilidad de que no recuerde la lógica detrás de su flujo de trabajo dentro de 6 meses. Y seguir las buenas prácticas de codificación siempre ayuda, ya sea el codificador o los que leen el código.

Le podría interesar leer: Esto Es Lo Que Realmente Hace Un Analista De Datos

Datos

Esta es la parte que decide en gran medida el éxito de un modelo de aprendizaje automático, por lo que pasar el máximo tiempo aquí tiene más sentido.

Un prerrequisito para hacer modelos útiles es el conocimiento de la terminología utilizada en el aprendizaje automático.

Una etiqueta es lo que estamos prediciendo - la variable y en la regresión lineal simple.
Una característica(feature) es una variable de entrada - la variable x en la regresión lineal simple.

Un ejemplo es una instancia particular de datos, x.

Esto siempre ayuda a mejorar los informes y la documentación del modelo, y también a corregir los errores. Puedes consultar el glosario de aprendizaje automático de Google.

Ahora que ya estás listo, lo primero que viene en el flujo de trabajo de un proyecto Aprendizaje automático es el enunciado del problema. Enfócate en los problemas que serían difíciles de resolver con la programación tradicional. Es una buena práctica pensar si el problema que estás tratando de resolver realmente requiere aprendizaje automático. Si estás empezando con una competición de Kaggle, tienes el objetivo ya establecido. Pero si quieres trabajar en un conjunto de datos del mundo real, haz la trama más básica al principio, intenta encontrar patrones y relaciones entre variables y, basado en esas inferencias, enmarca un enunciado del problema para ti. Así es como se tratan los proyectos estadísticos en su mayoría.

A veces se puede conseguir que un cliente requiera el uso de un algoritmo específico para un problema. Digamos que los datos en cuestión son una serie temporal de la temperatura media diaria de una ciudad durante un cierto período. El enunciado del problema aquí es pronosticar o predecir la temperatura media para 6 días usando aprendizaje supervisado.

Datos de la muestra

Aquí, todo lo que se da es una serie de valores que deben ser convertidos de alguna manera en características y etiquetas. La temperatura de un cierto día no es completamente diferente de la de los días anteriores. Si la temperatura de hoy es de 20 °C, no puede ser de 10 °C o 15 °C mañana, tiene que estar en algún valor cercano a los 20 °C, a menos que se den condiciones extraordinarias. Esta idea puede ser usada para hacer nuestro trabajo.

Usando un método de ventana corrediza, las 2 temperaturas anteriores pueden ser usadas como características para la actual 

Tabla que muestra las características y etiquetas
Utilizando un método de ventana deslizante, las 2 temperaturas anteriores pueden ser utilizadas como características para la temperatura actual (etiqueta). El número de características consideradas, también puede ser aumentado y se puede aplicar a este problema cualquier algoritmo supervisado.

Definir un enunciado del problema es básicamente averiguar qué quieres hacer, y cómo quieres hacerlo. Este artículo proporciona más claridad sobre lo mismo.

Ahora que el problema que debe ser resuelto está claro, el primer paso hacia la solución es el Análisis Exploratorio de Datos o EDA. En términos crudos, EDA es tener una idea del conjunto de datos, buscando discrepancias, valores faltantes, encontrar tendencias y patrones, si los hay; una comprensión general para que pueda responder cualquier pregunta descriptiva sobre el conjunto de datos sin tener que buscarlo cada vez.

El artículo de Daniel Bourke proporciona una excelente lista de verificación para el análisis exploratorio de datos

Lea También: Cosas Que Debes Saber Antes De Hacer Tu Primer Modelo De Machine Learning.

Checklist del análisis exploratorio de datos

  • ¿Que pregunta(s) está tratando de solucionar (O probar que es errónea)
  • ¿Que tipo de datos tienes y como tratas cada tipo de datos?
  • ¿Que falta en los datos y como vas a lidiar con esta situación?
  • ¿Cúales son los valores atípicos en el dataset y cómo vas a lidiar con ellos?
  • ¿Cómo puedes agregar, cambiar o remover características para obtener mas de tus datos?
En cualquier proyecto de Aprendizaje automático, la visualización es la clave. Dado que 2 variables x e y tienen las siguientes propiedades, ¿cuántos conjuntos de datos diferentes se te ocurren?
¡¡¡Contemplen el cuarteto de Anscombe!!!


Aunque los 4 conjuntos de datos comparten las mismas medidas descriptivas, son completamente diferentes entre sí. La línea de regresión dada con una precisión del 67% no será capaz de dar buenas predicciones para el 2º o el 4º conjunto de datos.

Y en caso de que sientas que el análisis exploratorio de datos sólo ayuda con los conjuntos de datos tabulares, puedes leer las observaciones de Andrej Karpathy sobre la clasificación manual del conjunto de datos CIFAR10.
Otro aspecto de analisis exploratorio de datos que necesita ser mencionado es la importancia de los tipos de datos de las características presentes en dataset.
Si se escrapea cualquier sitio web, los datos que se recogen de las etiquetas necesarias están a veces en formato string, lo que podría pasar desapercibido y luego dar lugar a problemas mientras se entrena el modelo. Una vez más, no todos los algoritmos pueden funcionar con todos los tipos de datos. Por lo tanto, es una buena práctica echar un vistazo a los tipos de datos y elegir los adecuados que se ajustan al modelo de Aprendizaje automático apropiadamente.

A veces el conjunto de datos no es lo suficientemente grande y, por lo tanto, puede no ser adecuado para algunos algoritmos de Aprendizaje automático. No siempre es necesario utilizar un algoritmo específico a menos que se especifique explícitamente; opte por el que se adapte a su propósito. Usar un árbol de decisión para una tarea de clasificación simple puede proporcionar una mayor precisión que una red neuronal de 5 capas, y en menor 
tiempo.


Uno de los principales componentes de un flujo de trabajo de Aprendizaje automático es la división del conjunto de datos en conjuntos de datos de entrenamiento y prueba y/o validación. Si los ejemplos no son aleatorios o son secuenciales, la división debe hacerse cuidadosamente, de lo contrario el sesgo se introducirá en el modelo. También es necesario asegurar el equilibrio de clases en las tareas de categorización mientras se realiza la división.

En 2015, este caso salió a la luz, cuando la función de reconocimiento de objetos de la aplicación Google Photos etiquetó a dos personas negras como gorilas. Este es un escenario del mundo real en el que un producto fue un fracaso porque fue entrenado en un conjunto de datos que tenía un desequilibrio bastante alto para algunas clases. Como desarrollador, uno nunca quiere estar en esa posición y por lo tanto, un poco de cuidado extra siempre ayuda.

Un concepto que recientemente ha recibido mucha atención por parte de los investigadores y científicos de datos en la construcción de mejores modelos es el de la ingeniería de características.

"La ingeniería de características es el proceso de transformar los datos en bruto en características que representen mejor el problema subyacente a los modelos de predicción, lo que da lugar a una mayor precisión del modelo en los datos no vistos".
-Jason Brownlee, en Discover Feature Engineering, How to Engineer Features and How to Get Good at It

En 2014, para un concurso de DrivenData, los participantes necesitaban construir un algoritmo de aprendizaje automático que pudiera automatizar el proceso de pegar etiquetas a diferentes artículos de compra, para tener una idea de cómo las escuelas estaban gastando el dinero para adaptar las recomendaciones de la estrategia a fin de mejorar los resultados para los estudiantes, los maestros y los administradores.

Si piensas en un algoritmo que tiene el potencial de ganar una competición y ser el mejor, ¿cuáles te vienen a la mente? El modelo ganador que se llevó todo fue una regresión logística, que involucró muchas características cuidadosamente creadas. Esto demuestra el poder de la ingeniería de características, y es una razón por la que deberías chequarlo. Puedes aprender más sobre este desafío aquí.

Ahora que ya tienes una declaración del problema y un conjunto de datos limpio y diseñado, puedes empezar con tu primer modelo Aprendizaje automático. Algo que nunca se puede afirmar con suficiente frecuencia es que este campo permite tener mucho espacio para probar ideas nuevas y diferentes. 

Con la generación de datos en cantidades increíbles, hay un inmenso alcance y oportunidades para construir aplicaciones nuevas y útiles o mejorar las existentes. Recuerde que en la ciencia de los datos, no hay una forma correcta de resolver un problema, lo que funciona para su propósito y le da los resultados deseados, le ayude a crecer y aprender de una manera honesta,  es la forma correcta.

Posdata: Un gran recurso para aprender más sobre este tema puede ser encontrado aquí


Join our private community in Discord

Keep up to date by participating in our global community of data scientists and AI enthusiasts. We discuss the latest developments in data science competitions, new techniques for solving complex challenges, AI and machine learning models, and much more!