En general, veo cinco pasos importantes y amplios que se toman comúnmente al abordar cualquier problema al que se puede aplicar el aprendizaje automático:
- Formular. Dado un problema u objetivo, ¿cómo se puede utilizar el aprendizaje automático para resolver bien el problema? ¿El problema incluso requiere una aplicación de aprendizaje automático? Por ejemplo, el problema de Netflix era “¿cómo permitimos que nuestros usuarios vean más contenido que disfrutan?” Esto puede expresarse como un problema de aprendizaje automático: dado un conjunto de datos cuyas características incluyen programas anteriores que vieron los usuarios y cuánto les gustó, además de un conjunto de datos que indique la similitud entre dos programas, cree un algoritmo que recomiende nuevos programas a los usuarios en función de lo que hayan visto anteriormente.
- Seleccionar datos. Es de conocimiento común que el acceso a grandes cantidades de conjuntos de datos puede ser lo que distingue a las empresas en el aprendizaje automático / aprendizaje profundo. Es por eso que compañías como Google, Facebook, Amazon y Netflix (entre otras) son tan buenas en eso: tienen un montón de datos. Para el problema particular que está resolviendo, es importante seleccionar el conjunto de datos correcto. Para esto, algunas preguntas deben ser respondidas:
- ¿El conjunto de datos tiene suficientes características? ¿Hay características redundantes en el conjunto de datos?
- ¿Se requiere ingeniería de características / selección de características para mejorar la calidad del conjunto de datos? Muchas competencias de aprendizaje automático (en sitios web como Kaggle) se ganan no por la calidad del modelo, sino por una cuidadosa ingeniería de características.
- ¿Qué tipo de preprocesamiento en el conjunto de datos se requiere para que pueda usarse para construir un modelo? En general, esto implica cosas como codificar variables categóricas, ejecutar word2vec en grandes corpus de texto o normalizar conjuntos de datos.
- Representar. Ahora que hemos formulado un problema de aprendizaje automático, el siguiente paso es elegir un espacio hipotético de funciones que asigne nuestras entradas a nuestras salidas. Esto podría ser árboles de decisión, regresión lineal, redes neuronales profundas o SVM, entre otros. Como ejemplo, una tarea como la predicción del precio de la vivienda puede implicar entrenar un algoritmo de regresión lineal junto con la creación de características no lineales, mientras que algo como reconocer gatos y perros en una imagen requerirá redes neuronales convolucionales profundas.
- Optimizar Ahora que se selecciona una familia de funciones de hipótesis, queremos encontrar la función específica que más se aproxima a la verdad fundamental. En otras palabras, deseamos encontrar una función mediante el entrenamiento de un conjunto de parámetros que minimicen la pérdida esperada (prueba). Al hacer esto, debemos tener cuidado de no sobreajustar nuestros datos de entrenamiento (un caso en el que minimizamos la pérdida de entrenamiento en tal medida que nuestro algoritmo no se generaliza bien). La capacidad de nuestro algoritmo de aprendizaje para generalizar es esencial, por lo que se deben tomar medidas para evitar el sobreajuste.
- Evaluar. Ahora que hemos entrenado nuestro modelo, los métodos estadísticos como la validación cruzada se pueden utilizar para medir la precisión del modelo. Es importante tener un conjunto de datos de validación (además de los de prueba y capacitación) para que esta validación cruzada se pueda realizar. Idealmente, el conjunto de datos de prueba solo debe tocarse una vez, cuando se realiza una prueba final después de que el modelo esté completamente finalizado y ajustado.