Elegir un algoritmo - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Elegir un algoritmo

El machine learning puede ayudarlo con tareas empíricas que requieran algún tipo de inferencia inductiva. Esta tarea implica la inducción, ya que utiliza datos para entrenar algoritmos con el fin de hacer inferencias generalizables. Esto significa que los algoritmos pueden realizar predicciones, o tomar decisiones, estadísticamente fiables, o completar otras tareas cuando se aplican a datos nuevos que no se utilizaron para entrenarlos.

Para ayudarlo a seleccionar el mejor algoritmo para su tarea, clasificamos estas tareas en varios niveles de abstracción. En el nivel más alto de abstracción, el machine learning intenta encontrar patrones o relaciones entre características o elementos menos estructurados, como el texto de un conjunto de datos. Las técnicas de reconocimiento de patrones se pueden clasificar en distintos paradigmas de machine learning, cada uno de los cuales aborda tipos de problemas específicos. Actualmente, existen tres paradigmas básicos de machine learning que se utilizan para abordar varios tipos de problemas:

Los tipos de problemas que puede abordar cada paradigma de aprendizaje se identifican teniendo en cuenta las inferencias (o predicciones, decisiones u otras tareas) que desea realizar a partir del tipo de datos que tiene o podría recopilar. Los paradigmas de machine learning utilizan métodos algorítmicos para abordar los distintos tipos de problemas. Los algoritmos proporcionan recetas para resolver estos problemas.

Sin embargo, muchos algoritmos, como las redes neuronales, se pueden implementar con diferentes paradigmas de aprendizaje y en diferentes tipos de problemas. Además, distintos algoritmos pueden abordar un tipo de problema específico. Algunos algoritmos son de aplicación más general, mientras que otros son bastante específicos para determinados tipos de objetivos y datos. Por lo tanto, las asignaciones entre los algoritmos de machine learning y los tipos de problemas son “muchos a muchos”. Además, hay varias opciones de implementación disponibles para los algoritmos.

Las siguientes secciones proporcionan orientación sobre las opciones de implementación, los paradigmas del machine learning y los algoritmos adecuados para los diferentes tipos de problemas.

Seleccionar una implementación de algoritmo

Después de elegir un algoritmo, debe decidir qué implementación desea usar. Amazon SageMaker admite tres opciones de implementación, con distintos niveles de esfuerzo.

  • Los modelos prentrenados requieren el menor esfuerzo, y están ya listos para la implementación, o el ajuste y la implementación, con SageMaker JumpStart.

  • Los algoritmos integrados requieren más esfuerzo y escalabilidad si el conjunto de datos es grande, y hacen falta muchos recursos para entrenar e implementar el modelo.

  • Si no hay una solución integrada que funcione, intente desarrollar una que utilice imágenes prediseñadas para marcos de aprendizaje profundo y machine learning para marcos compatibles, como Scikit-Learn, TensorFlow, PyTorch, MXNet o Chainer.

  • Si necesita ejecutar paquetes personalizados o usar algún código que no forme parte de un marco compatible o que no esté disponible a través de PyPi, deberá crear su propia imagen de Docker personalizada, que se configura para instalar los paquetes o el software necesarios. La imagen personalizada también debe enviarse a un repositorio en línea, como el Amazon Elastic Container Registry.

Guía de implementación de algoritmos
Implementación Requiere código Algoritmos precodificados Compatibilidad con paquetes de terceros Compatibilidad con código personalizado Nivel de esfuerzo
Integrada No No No Baja
Scikit-learn Solo PyPi Media
Spark ML Solo PyPi Media
XGBoost (código abierto) Solo PyPi Media
TensorFlow No Solo PyPi Medio-alto
PyTorch No Solo PyPi Medio-alto
MXNet No Solo PyPi Medio-alto
Chainer No Solo PyPi Medio-alto
Imagen personalizada No Sí, desde cualquier origen Alta

Uso de un algoritmo integrado

Al elegir un algoritmo para sus datos y su tipo de problema, la opción más sencilla es utilizar uno de los algoritmos integrados de Amazon SageMaker. Estos algoritmos integrados ofrecen dos ventajas principales.

  • Los algoritmos integrados no requieren codificación para empezar a ejecutar los experimentos. Las únicas entradas que debe proporcionar son los datos, los hiperparámetros y los recursos de computación. Esto le permite ejecutar experimentos con mayor rapidez y con menos gastos generales para el seguimiento de los resultados y los cambios de código.

  • Los algoritmos integrados disponen de forma predeterminada de paralelización entre varias instancias de computación y compatibilidad con GPU para todos los algoritmos aplicables (es posible que algunos algoritmos no estén incluidos debido a limitaciones intrínsecas). Si tiene muchos datos con los que entrenar a su modelo, la mayoría de los algoritmos integrados se pueden escalar fácilmente para satisfacer la demanda. Aunque ya tenga un modelo prentrenado, puede que usar su corolario en SageMaker e introducir los hiperparámetros que ya conoce le resulte más fácil que transferirlos utilizando el modo script en un marco compatible.

Para obtener más información sobre los algoritmos integrados de SageMaker, consulte Usa algoritmos SageMaker integrados de Amazon o modelos previamente entrenados.

Para obtener información importante sobre las rutas de registro de Docker, los formatos de datos, los tipos de instancias de EC2 recomendados y los registros de CloudWatch comunes a todos los algoritmos integrados de SageMaker, consulte Información común sobre los algoritmos integrados.

Uso del modo script en un marco compatible

Si el algoritmo que desea utilizar para su modelo no es compatible con una opción integrada y piensa que puede programar su propia solución, debería valorar la posibilidad de utilizar un marco compatible con Amazon SageMaker. Esto se denomina “modo script” porque el código personalizado (script) se escribe en un archivo de texto con una extensión .py. Como se indica en la tabla anterior, SageMaker es compatible con la mayoría de los marcos de machine learning más populares. Estos marcos vienen precargados con el marco correspondiente y algunos paquetes de Python adicionales, como Pandas y NumPy, para que pueda escribir su propio código para entrenar un algoritmo. Estos marcos también le permiten instalar cualquier paquete de Python alojado en PyPi al incluir un archivo “requirements.txt” con su código de entrenamiento o incluir sus propios directorios de código. R también es compatible de forma nativa en los kernels de cuadernos de SageMaker. Algunos marcos, como scikit-learn y Spark ML, tienen algoritmos precodificados que puede usar fácilmente, mientras que otros marcos, como TensorFlow y PyTorch, pueden requerir que implemente el algoritmo usted mismo. La única limitación al utilizar una imagen de marco compatible es que no se puede importar ningún paquete de software que no esté alojado en PyPi o que no esté incluido en la imagen del marco.

Para obtener información sobre los marcos compatibles con SageMaker, consulte Marcos y lenguajes de machine learning.

Uso de una imagen de Docker personalizada

Los algoritmos integrados y los marcos compatibles de Amazon SageMaker deberían cubrir la mayoría de los casos de uso, pero hay ocasiones en las que es posible que necesite utilizar un algoritmo de un paquete que no está incluido en ninguno de los marcos compatibles. También es posible que haya elegido un modelo prentrenado o conservado en algún lugar y que deba implementarlo. SageMaker utiliza imágenes de Docker para alojar el entrenamiento y el servicio de todos los modelos, por lo que puede proporcionar su propia imagen de Docker personalizada si el paquete o el software que necesita no está incluido en un marco compatible. Puede ser su propio paquete de Python o un algoritmo codificado en un lenguaje como Stan o Julia. Para estas imágenes, también debe configurar correctamente el entrenamiento del algoritmo y el suministro del modelo en su Dockerfile. Esto requiere un conocimiento intermedio de Docker y no se recomienda a menos que se sienta cómodo diseñando su propio algoritmo de machine learning. La imagen de Docker debe cargarse en un repositorio en línea, como el Amazon Elastic Container Registry (ECR), antes de poder entrenar y suministrar el modelo correctamente.

Para obtener más información sobre imágenes de Docker personalizadas en SageMaker, consulte Utilizar contenedores de Docker para crear modelos.

Tipos de problemas para los paradigmas básicos de machine learning

En las tres secciones siguientes se describen los principales tipos de problemas abordados por los tres paradigmas básicos del machine learning. Para obtener una lista de los algoritmos integrados que SageMaker proporciona para abordar estos tipos de problemas, consulte Usa algoritmos SageMaker integrados de Amazon o modelos previamente entrenados.

Aprendizaje supervisado

Si su conjunto de datos consta de características o atributos (entradas) que contienen valores objetivo (salidas), tiene un problema de aprendizaje supervisado. Si sus valores objetivo son categóricos (matemáticamente discretos), tiene un problema de clasificación. Distinguir la clasificación binaria de la multiclase es un procedimiento estándar.

  • La clasificación binaria es un tipo de aprendizaje supervisado que asigna un individuo a una de dos clases predefinidas y mutuamente excluyentes con base en los atributos del individuo. Se considera supervisado porque los modelos se entrenan utilizando ejemplos en los que los atributos se proporcionan con objetos etiquetados correctamente. Un ejemplo de clasificación binaria es un diagnóstico médico de si un individuo tiene una enfermedad o no en función de los resultados de las pruebas de diagnóstico.

  • La clasificación multiclase es un tipo de aprendizaje supervisado que asigna un individuo a una de varias clases en función de sus atributos. Se considera supervisado porque los modelos se entrenan utilizando ejemplos en los que los atributos se proporcionan con objetos etiquetados correctamente. Un ejemplo es la predicción del tema más relevante para un documento de texto. La clasificación puede indicar que el documento habla de religión, política, finanzas o cualquier otra clase de tema predefinido.

Si los valores objetivo que intenta predecir son matemáticamente continuos, se trata de un problema de regresión. La regresión estima los valores de una variable objetivo dependiente en función de una o más variables o atributos que están correlacionados con ella. Un ejemplo es la predicción de los precios de la vivienda mediante características como el número de baños y dormitorios o los metros cuadrados de la casa y el jardín. El análisis de regresión puede crear un modelo que tome una o más de estas características como entrada y prediga el precio de la casa.

Para obtener más información sobre los algoritmos integrados de aprendizaje supervisado suministrados por SageMaker, consulte Aprendizaje supervisado.

Aprendizaje no supervisado

Si su conjunto de datos consta de características o atributos (entradas) que no contienen etiquetas o valores objetivo (salidas), tiene un problema de aprendizaje no supervisado. En este tipo de problema, la salida debe predecirse en función del patrón descubierto en los datos de entrada. El objetivo de los problemas de aprendizaje no supervisado es descubrir patrones, como las agrupaciones, dentro de los datos. Existe una gran variedad de tareas o tipos de problemas en los que se puede aplicar el aprendizaje no supervisado. Los análisis de componentes principales y clústeres son dos de los principales métodos que se utilizan habitualmente para preprocesar los datos. Esta es una breve lista de los tipos de problemas que se pueden abordar mediante el aprendizaje no supervisado:

  • La reducción de dimensiones suele formar parte del paso de exploración de datos empleado para determinar las características más relevantes que se utilizarán en la construcción del modelo. La idea es transformar los datos de un espacio de alta dimensión y poco poblado en un espacio de baja dimensión que conserve las propiedades más importantes de los datos originales. Esto alivia el problema de la dimensionalidad con los datos de alta dimensión y poco poblados, cuyo análisis estadístico es complejo. También se puede utilizar para comprender los datos y reducir su dimensión: de una dimensión alta a una dimensión inferior que se pueda visualizar.

  • El análisis de clústeres es una clase de técnicas que se utilizan para clasificar objetos o casos en grupos denominados clústeres. Si intenta buscar agrupaciones discretas dentro de datos, en las que los miembros de un grupo son lo más parecido posible que otro y lo más diferente posible de los miembros de otros grupos. Usted define las características o los atributos que desea que utilice el algoritmo para determinar la similitud, selecciona una función de distancia para medir la similitud y especifica el número de clústeres que se utilizarán en el análisis.

  • La detección de anomalías consiste en la identificación de elementos, eventos u observaciones poco frecuentes en un conjunto de datos, que suscitan sospechas porque difieren considerablemente del resto de los datos. La identificación de elementos anómalos se puede utilizar, por ejemplo, para detectar fraudes bancarios o errores médicos. Las anomalías también se denominan valores atípicos, novedades, ruido, desviaciones y excepciones.

  • La estimación de la densidad es la construcción de estimaciones de funciones de densidad probabilísticas subyacentes no observables con base en datos observados. Un uso natural de las estimaciones de densidad es la exploración de datos. Las estimaciones de densidad pueden detectar características como la asimetría y la multimodalidad en los datos. La forma más básica de estimar la densidad es un histograma reescalado.

SageMaker proporciona varios algoritmos de machine learning integrados que puede utilizar para estas tareas de machine learning. Para obtener más información sobre los algoritmos integrados de SageMaker, consulte Aprendizaje no supervisado.

Aprendizaje por refuerzo

El aprendizaje por refuerzo es un tipo de aprendizaje que se basa en la interacción con el entorno. Este tipo de aprendizaje lo utiliza un agente que debe aprender el comportamiento mediante interacciones de prueba y error en un entorno dinámico en el que el objetivo es maximizar las recompensas a largo plazo que el agente recibe como resultado de sus acciones. Las recompensas se maximizan cuando se intercambia la exploración de acciones que tienen recompensas inciertas con la explotación de acciones que tienen recompensas conocidas.

Para obtener más información sobre los marcos, los kits de herramientas y los entornos de SageMaker para el aprendizaje por refuerzo, consulte Utilizar el aprendizaje por refuerzo con Amazon SageMaker.