Dabl: Aprendizaje Automático Automático con la Participación Humana

Rate this content
Bookmark

En muchas aplicaciones del mundo real, la calidad y curación de los datos y el conocimiento del dominio juegan un papel mucho más importante en la construcción de modelos exitosos que la creación de técnicas de procesamiento complejas y la optimización de hiperparámetros. Por lo tanto, una caja de herramientas de aprendizaje automático debe permitir a los usuarios comprender tanto los datos como el modelo, y no cargar al profesional con la selección de pasos de preprocesamiento y hiperparámetros. La biblioteca dabl es un primer paso en esta dirección. Proporciona rutinas de visualización automáticas y capacidades de inspección de modelos al tiempo que automatiza la selección de modelos.


dabl contiene tipos de gráficos que no están disponibles en las bibliotecas estándar de Python hasta ahora, así como algoritmos novedosos para seleccionar visualizaciones interesantes. Se utilizan heurísticas para seleccionar el preprocesamiento adecuado para el aprendizaje automático, mientras que se utilizan algoritmos de selección de cartera de vanguardia para una búsqueda eficiente de modelos e hiperparámetros.


dabl también proporciona un fácil acceso a herramientas de evaluación e inspección de modelos proporcionadas por scikit-learn.

35 min
02 Jul, 2021

Video Summary and Transcription

Esta charla presenta Dabble, una biblioteca que permite a los científicos de datos iterar rápidamente e incorporar la entrada humana en el proceso de aprendizaje automático. Dabble proporciona herramientas para cada paso del flujo de trabajo de aprendizaje automático, incluyendo la declaración del problema, limpieza de datos, visualización, construcción de modelos e interpretación de modelos. Utiliza gráficos de mosaico y gráficos de pares para analizar características categóricas y continuas. Dabble también implementa un enfoque de aprendizaje automático automático basado en cartera utilizando el método de eliminación sucesiva para encontrar el mejor modelo. Los objetivos futuros de Dabble incluyen el soporte de más tipos de características, mejorar la cartera y construir modelos explicables.

Available in English

1. Introducción al Aprendizaje Automático Automático

Short description:

Hola y bienvenidos a mi charla sobre Aprendizaje Automático Automático con la intervención humana con DABL. Mi nombre es Andreas Muller y soy co-desarrollador de Scikit-learn y Ingeniero de Software Principal en Microsoft. El flujo de trabajo estándar de aprendizaje automático involucra la declaración del problema, la recolección de datos, la limpieza de datos, la visualización, la construcción de un modelo de aprendizaje automático inicial, la evaluación del modelo fuera de línea y en línea. En las aplicaciones, la recolección de datos y el análisis exploratorio de datos a menudo son más importantes que la construcción del modelo.

Hola y bienvenidos a mi charla sobre Aprendizaje Automático Automático con la intervención humana con DABL. Mi nombre es Andreas Muller y soy co-desarrollador de Scikit-learn y Ingeniero de Software Principal en Microsoft.

Entonces, permítanme comenzar esto con lo que considero como el flujo de trabajo estándar de aprendizaje automático. Comenzamos con una declaración del problema y luego, por lo general, la recolección de datos, la limpieza de datos, la visualización, la construcción de un modelo de aprendizaje automático inicial, la evaluación del modelo fuera de línea y luego la evaluación en línea dentro de su aplicación. Creo que estos son los pasos fundamentales de cualquier proceso de aprendizaje automático, y generalmente no es un proceso lineal. Lo dibujé aquí como un círculo, pero en realidad es más un grafo completamente conectado. Después de cada paso, es posible que deba volver a pasos anteriores. Entonces, después de la limpieza de datos, es posible que vea que necesita cambiar la recolección de datos. Después de la construcción del modelo, es posible que vea que necesita cambiar algo en la limpieza de datos, y así sucesivamente. Creo que todos estos pasos son realmente críticos. Entonces, en una comunidad de aprendizaje automático, realmente se enfoca mucho en la construcción del modelo, mientras que en las aplicaciones, esto puede no ser realmente la parte más importante, y cosas como la recolección de datos y el análisis exploratorio de datos pueden ser más importantes.

2. Introducción a Dabble

Short description:

Hoy en día, comenzar un flujo de trabajo de aprendizaje automático en Python a menudo implica el uso de Scikit Learn y pandas, o matplotlib y seaborn para la visualización. Sin embargo, estas herramientas requieren mucho trabajo y codificación explícita. Las herramientas automáticas de aprendizaje automático como AutoSK Learn y AutoGlue1 pueden ayudar con la construcción del modelo, pero a menudo llevan mucho tiempo y dan como resultado modelos de caja negra. Para abordar estas limitaciones, presento Dabble, una biblioteca que permite a los científicos de datos iterar rápidamente e incorporar la intervención humana en el proceso de aprendizaje automático.

Entonces, en estos días, si comienzas tu flujo de trabajo de aprendizaje automático en Python, es posible que uses algo como Scikit Learn y pandas, o matplotlib y seaborn para la visualización. Aquí estoy usando pandas y seaborn para hacer alguna visualización inicial en el conjunto de datos estándar de adultos, que es un conjunto de datos de clasificación utilizando el censo de adultos. Obtengo algunas visualizaciones que me muestran cómo se relaciona la edad con los ingresos, pero en realidad requiere que haga bastante trabajo y conozca bastante seaborn para hacerlo de esta manera. Si quiero hacerlo con matplotlib, sería mucho más código. De manera similar, si quiero construir un modelo de aprendizaje automático simple con Scikit Learn, aquí estoy construyendo un modelo de regresión logística, pero si quiero hacer esto, tengo que escribir mucho código para escalar los datos, para imputar valores faltantes, para hacer codificación one-hot para variables categóricas, y así sucesivamente, y luego ajustar el parámetro de regularización del modelo de regresión logística. Para mí, esto es realmente el `hola mundo` del aprendizaje automático, simplemente construir un modelo de regresión logística, pero Scikit Learn requiere que seas muy, muy explícito, lo cual tiene muchos beneficios, pero si estás comenzando con tu proyecto, es importante que puedas iterar muy rápidamente. Y una forma de hacer esto es con algunas de las herramientas automáticas de aprendizaje automático que existen en la actualidad, como AutoSK Learn, o más recientemente, AutoGlue1. Y luego hay varias otras soluciones comerciales, como H2O y DataRobot, y así sucesivamente. Entonces, nuevamente, diría que estas soluciones automáticas de aprendizaje automático se centran mucho en la construcción del modelo. Y eso tiene dos desventajas, en mi opinión, especialmente para el análisis y la exploración inicial, que son, en primer lugar, que suelen llevar mucho tiempo. Aquí estoy tomando un ejemplo del sitio web de AutoSK Learn en este conjunto de datos de juguete muy pequeño. Y puedes ver que esta configuración predeterminada se ejecuta durante una hora, te da una precisión muy alta, pero se ejecuta durante mucho tiempo, incluso en un conjunto de datos pequeño. Creo que si tienes que esperar tanto tiempo para obtener un resultado inicial, eso realmente interrumpe tu flujo de trabajo. Y realmente me encantan las cosas que están haciendo en AutoSK Learn y otras bibliotecas de auto ML. Pero el objetivo aquí es construir un modelo realmente bueno, dado el conjunto de datos que tienes. Sin embargo, en muchas aplicaciones, el conjunto de datos no es tan fijo y la iteración es mucho más importante que ajustar los hiperparámetros o seleccionar el modelo. La otra desventaja es que terminas con un modelo de caja negra. Y en muchas aplicaciones, eso realmente te impide comprender más sobre tu problema. Te impide comprender cuáles son las características importantes o cómo debería haber realizado el preprocesamiento de manera diferente o qué datos debería haber recopilado. Como alternativa a esto, presento Dabble, la biblioteca de análisis de datos de referencia, que está diseñada para ayudar a los científicos de datos a iterar rápidamente y realizar ciencia de datos de aprendizaje automático con la intervención humana.

3. Flujo de trabajo y herramientas

Short description:

La idea es proporcionar herramientas para cada paso del flujo de trabajo, incluyendo la declaración del problema, limpieza de datos, visualización, construcción de modelos e interpretación de modelos. Dabble.clean puede detectar tipos, valores faltantes, valores raros, variables ordinales versus variables categóricas, y más. Proporciona una forma rápida y sencilla de limpiar los datos, y también está el preprocesador EZ para un enfoque más formalizado. Para la visualización, la función de gráfico de puntos dobles está orientada al aprendizaje automático supervisado e identifica características informativas sobre el objetivo.

La idea es seguir este flujo de trabajo e intentar brindarte herramientas para facilitar cada uno de estos pasos. Por lo tanto, la declaración del problema es algo que tendrás que hacer tú mismo, al igual que la recolección de datos. Pero desde el lado de las herramientas, Dabble te proporciona Dabble.clean para realizar la limpieza de datos, Dabble.plot para la visualización, Dabble.anyclassifier para construir modelos y realizar aprendizaje automático automático, y Dabble.explain para la interpretación de modelos. En cuanto a la evaluación de la aplicación, lo siento, aún tendrás que pensar por ti mismo, ya que se trata de cómo tu modelo de aprendizaje automático se ajusta a tu entorno particular.

Cada una de estas no es un módulo, sino una función individual. Por lo tanto, tienes una función única que te proporcionará muchos gráficos, o tienes una función única que realizará una limpieza inicial. Ninguna de estas será perfecta, pero cada una te dará un punto de partida muy bueno desde el cual puedes iterar más rápidamente y enfocarte en las partes que son realmente críticas para tu aplicación. Comencemos con la limpieza y el preprocesamiento.

Dabble.clean puede detectar tipos de características, valores faltantes, valores raros y variables ordinales versus variables categóricas. Todo esto se hace principalmente utilizando heurísticas, por lo que detecta características casi constantes y características de índice. Para las características que deseas utilizar, descubre cómo usarlas y cómo preprocesarlas, y para las otras características, descubre si deseas descartarlas, como un índice o un identificador único. Por lo general, no deseas incluir un modelo de aprendizaje automático. Quiero mencionar rápidamente un artículo que descubrí esta semana, que es el mldata prep zoo hacia la preparación de datos semiautomática para el aprendizaje automático de Shah y Kumar. En realidad, tienen una jerarquía muy interesante de los diferentes tipos de características y lo que debes hacer en la preparación de datos. Mi trabajo en Dabble crea algo similar, pero ellos tienen una taxonomía y un marco muy buenos para pensar en esta preparación de datos. Aquí tienes un ejemplo. Te doy el conjunto de datos de viviendas AIMS, que es un conjunto de datos de regresión con, como puedes ver, 82 columnas. Si llamas a devil.clean en él, te dará un marco de datos limpio que elimina las columnas innecesarias o los identificadores únicos e identifica qué es continuo y qué es categórico. Por lo tanto, la función clean es realmente una forma rápida y sencilla. Si deseas hacer esto de manera más formalizada en un flujo de trabajo de validación cruzada de scikit-learn, por ejemplo, hay un envoltorio llamado el preprocesador EZ. El preprocesador EZ es básicamente un transformador de scikit-learn que combina un transformador de columnas personalizado que incluye todo el preprocesamiento que necesitas. Por lo tanto, si hay valores faltantes, se incluirá la imputación. Si hay variables categóricas, se incluirá el codificador 100. Y se encarga de otros casos difíciles. Por lo tanto, puedes usar clean y obtener un marco de datos limpio o, si deseas tener cuidado en tu validación cruzada, puedes usar el preprocesador EZ y luego tener un control total sobre la construcción de tu modelo utilizando cualquier modelo de scikit-learn que desees. Para la visualización, está la función de gráfico de puntos dobles, que está realmente orientada al aprendizaje automático supervisado. Por lo tanto, hacia la clasificación y la regresión, y le proporcionas un marco de datos junto con una columna objetivo. Esto puede ser una columna dentro del marco de datos. Por ejemplo, aquí data tiene una columna llamada income y se usará income como la columna objetivo, o puedes proporcionarle una serie separada como en el estilo X e Y de scikit-learn. Luego, analizará las características y descubrirá qué características son más informativas sobre el objetivo.

4. Análisis de características categóricas y continuas

Short description:

Utilizando el conjunto de datos de adultos, analizo las características categóricas y continuas utilizando gráficos de mosaico y gráficos de pares. Estos gráficos proporcionan información sobre el tamaño y el equilibrio de las categorías, así como su influencia en la variable objetivo.

Aquí estoy utilizando el conjunto de datos de adultos y se identifican varias características categóricas y se muestran en un gráfico de mosaico las características categóricas más importantes. A continuación, en el lado derecho, puedes ver un gráfico de pares de algunas de las características continuas que se encontraron importantes. Me gustan mucho estos gráficos de mosaico porque te muestran tanto el tamaño de cada una de las categorías. Por ejemplo, aquí en la parte inferior izquierda, puedes ver que este conjunto de datos contiene más hombres que mujeres y también puedes ver que la fracción de naranja, que es el nivel de ingresos más alto, es aproximadamente el doble de tamaño en los hombres que en las mujeres. Por lo tanto, puedes ver tanto el equilibrio entre las categorías como también cómo las categorías influyen en el objetivo.

5. Selección de características y construcción de modelos

Short description:

Para conjuntos de datos de menor dimensionalidad, Dabble utiliza gráficos de pares. Selecciona interacciones de características informativas utilizando una versión de aprendizaje supervisado de Scacnomics. El análisis discriminante lineal es una herramienta subutilizada para la reducción de dimensionalidad y visualización. El clasificador simple permite prototipos rápidos con varios modelos. Dabble también implementa un enfoque de aprendizaje automático automático basado en cartera utilizando el método de reducción sucesiva para encontrar el mejor modelo de un conjunto diverso de modelos preseleccionados.

Para conjuntos de datos de menor dimensionalidad, simplemente se realiza un gráfico de pares. Por lo tanto, el conjunto de datos de adultos solo tenía dos variables continuas que se mostraron. Para conjuntos de datos de alta dimensionalidad, esto generalmente no es factible, por lo que Dabble selecciona características informativas.

En particular, selecciona interacciones informativas. Utiliza una versión de aprendizaje supervisado de Scacnomics para determinar qué gráficos son interesantes mediante el uso de árboles relativamente poco profundos en subconjuntos bidimensionales. Aquí se determinaron las interacciones de características interesantes en un conjunto de datos que tiene alrededor de 100 características. Esto puede ser mucho más informativo que simplemente observar las características más importantes univariadas y te muestra cómo separar mejor las clases en 2D. Luego, se aplica el mismo enfoque al análisis de componentes principales y al análisis discriminante lineal. Me gusta mucho el análisis discriminante lineal para la reducción de dimensionalidad y la visualización para la clasificación. Creo que es una herramienta muy subutilizada. La gente tiende a recurrir rápidamente a t-SNE y UMAP, pero generalmente encuentro que es más difícil de interpretar, mientras que el análisis discriminante lineal a menudo produce resultados muy buenos. Luego, hay un clasificador simple.

El clasificador simple es realmente para prototipos rápidos. Ejecuta muchos modelos que son prácticamente instantáneos, como modelos ficticios, modelos de Bayes, modelos de árboles pequeños y modelos lineales rápidos. Luego registra una serie de métricas y te indica cuál es el mejor entre ellos. En el conjunto de datos Delta, por ejemplo, la regresión logística es la mejor y obtengo varias métricas. La idea aquí es permitirte iterar muy rápidamente. Después de ejecutar este modelo, que es prácticamente instantáneo o ejecutar todos estos modelos, puedes pasar a la interpretación, ver cuáles son las características importantes y si hay alguna fuga de datos, por ejemplo, o si algo parece incorrecto o si el modelo no captó algo que consideraba importante. Luego puedes volver a la limpieza y recopilación de datos. Si deseas construir un modelo más complejo, también tendrás una búsqueda automática de modelos. Dabble implementa un enfoque de aprendizaje automático automático basado en cartera. Básicamente, tiene almacenado un conjunto de modelos diversos con buenos hiperparámetros. Hay muchos gradient boosting, pero también modelos lineales de bosques aleatorios y máquinas de vectores de soporte, y todos están clasificados. Estos modelos fueron seleccionados utilizando un conjunto de referencia amplio, el conjunto de datos de OpenML CC 18. Esta metodología se basa en el aprendizaje automático automático práctico para el desafío AutoML, que es un artículo de Feurer y Hutter de 2018. Esto es algo que también estamos implementando en Dabble. Luego, dado este conjunto de modelos, utilizamos el método de reducción sucesiva para encontrar el mejor candidato de este conjunto. Esto es mucho más rápido que probar todos los modelos. La reducción sucesiva es una alternativa rápida a la búsqueda en cuadrícula, básicamente cuando entrenas tus modelos en tamaños cada vez más grandes del conjunto de datos. Tomamos todo nuestro conjunto de modelos, lo entrenamos en una pequeña fracción del conjunto de datos, luego seleccionamos la mejor mitad o el mejor tercio de todos los modelos y descartamos los demás, y luego volvemos a entrenar utilizando más datos.

6. Explicación del modelo y objetivos futuros

Short description:

Eliminar los peores modelos y seleccionar del portafolio. Las herramientas de explicación del modelo incluyen informe de clasificación, matriz de confusión, curva de precisión-recuperación, importancia de características, importancia de permutación y gráficos de dependencia parcial. Los objetivos futuros incluyen admitir más tipos de características, mejorar el portafolio con sensibilidad al tiempo, compresión de modelos y construcción de modelos explicables. Las máquinas de refuerzo explicables son una adición potencial a Scikit-Learn.

Y así eliminamos los peores modelos y básicamente podemos seleccionar el modelo de nuestro portafolio en tamaño que es comparable a entrenar un solo modelo. Mostramos que este enfoque de portafolio es realmente efectivo. Hicimos esto para clasificadores individuales en nuestro artículo de aprendizaje de múltiples valores predeterminados. Y luego, como dije, hacer esto en todos los clasificadores se hizo en el NML automático práctico de Fiverr. Finalmente, también tenemos alguna explicación del modelo. Estas son herramientas relativamente básicas que están principalmente dentro de Scikit-Learn, pero están empaquetadas de una manera que las hace realmente fáciles de usar. Entonces, después de ajustar cualquier clasificador, simplemente puedes llamar a eso para explicar opcionalmente con un conjunto de prueba o un conjunto de validación. Y luego te dará métricas. Informe de clasificación, matriz de confusión aquí. Esto es en un conjunto de datos de clasificación de 10 clases. Curva de precisión-recuperación, que son todas las métricas estándar si quieres ver y luego algunas de las herramientas simples de depuración del modelo. Es como si hubiera un bosque aleatorio, obtendrás las importancias de características basadas en la impureza, que es la importancia de características de Sklearner. Estos suelen ser un poco engañosos. Entonces, para cualquier modelo, también calcularemos la importancia de permutación que se agregó a Sklearner un poco más recientemente. Entonces, la importancia de permutación te da una idea mucho mejor de cuáles son las características importantes en el conjunto de datos. Y luego hacemos gráficos de dependencia parcial. En scikit-learn, se aceleran para modelos basados en árboles, pero también podemos hacerlos a la fuerza bruta para cualquier tipo de modelo. Y obtienes todo esto simplemente llamando a la función de explicación. Entonces, algunos de los objetivos futuros para Dabble son admitir diferentes tipos de características, como series de tiempo y datos de texto. En este momento, se enfoca principalmente en características categóricas, ordinales y continuas. Y también queremos mejorar nuestro portafolio. En este momento, tenemos un portafolio de 100 clasificadores que están clasificados y que buscamos con reducción sucesiva, pero queremos que sean sensibles al tiempo. Entonces, queremos priorizar los clasificadores que son más rápidos de evaluar para gastar menos tiempo y dar comentarios más rápidamente. Otra cosa que realmente queremos incluir es la compresión de modelos y la construcción de modelos explicables. En lugar de construir modelos que sean una caja negra, como los modelos de refuerzo de gradiente y luego tratar de explicarlos con gráficos de dependencia parcial, idealmente podríamos intentar construir modelos que sean interpretables por sí mismos, ya sea comprimiendo un buen modelo existente o simplemente usando modelos explicables para comenzar. Mi favorito, que espero incluir pronto y que podríamos incluir en Scikit-Learn en este momento, son las máquinas de refuerzo explicables, que básicamente son un modelo aditivo basado en el refuerzo de gradiente y debido a que es un modelo aditivo, básicamente puedes ver toda la función simplemente mirando los gráficos univariados, lo cual es bastante agradable. Eso es todo por mi parte hasta ahora. Avísame si tienes alguna pregunta en la sesión de preguntas y respuestas. Además, si eres nuevo en el aprendizaje automático, echa un vistazo a mi libro que escribí con Sara Guido, Introducción al aprendizaje automático con Python, y puedes instalar Dabble con pip install dabble y la documentación está en dabble.github.io.

7. Estado del proyecto y enfoque

Short description:

El proyecto todavía se encuentra en una fase temprana, con aproximadamente dos años de antigüedad. Se agradecen los comentarios y las contribuciones. Dabble se centra en la clasificación y regresión, proporcionando una forma rápida de abordar estos casos de uso comunes. Envuelve a scikit-learn para facilitar su uso. Actualmente, Dabble no admite el aprendizaje activo, el aprendizaje semi-supervisado ni el aprendizaje auto-supervisado. Se basa únicamente en scikit-learn. Se utilizó Light GBM al principio.

Y así, el proyecto todavía se encuentra en una fase temprana. Quiero decir, creo que ahora tiene aproximadamente dos años, pero definitivamente todavía está en sus primeros días. Así que si tienes algún comentario sobre el proyecto, no dudes en comunicarte si quieres contribuir. Eso es muy bienvenido y espero tener noticias tuyas. Gracias.

Hola, Andreas. ¿Cómo estás hoy? Bien. Bien. Estoy bien. ¿Y tú? Estoy espléndido. ¿Te estás uniendo a nosotros desde aquí en los Estados Unidos, verdad? Yo también estoy aquí. Sí, acabo de mudarme a California desde Nueva York. Oh, genial. Bueno, bienvenido a un clima mejor. Bienvenido a un clima mejor. Entonces, una de las principales motivaciones, para ser honesto, perfecto. Muy bien. Bueno, en realidad tenemos algunas preguntas bastante sorprendentes para ti hoy y empecemos con eso. De acuerdo, así que aquí hay una pregunta del público. ¿Dabble admite el aprendizaje activo, el aprendizaje semi-supervisado o el aprendizaje auto-supervisado? Hasta ahora, solo me estoy centrando en la clasificación y la regresión porque son realmente la mayoría de los casos de uso y se trata más de darte una forma rápida de abordar estos casos de uso comunes. Y estos, creo, déjame ver la pregunta. Creo que ninguno de estos está construido sobre scikit-learn. En realidad, ninguno de estos es realmente compatible con scikit-learn en este momento. Entonces, Dabble es más una envoltura alrededor de una interfaz más agradable para facilitar el uso de scikit-learn. Y así, no vamos a hacer ninguno de estos, bueno, scikit-learn tiene algo de aprendizaje semi-supervisado. Pero en realidad no se usa con tanta frecuencia. Así que rara vez recibimos solicitudes de características para eso. ¿Verdad? Entonces, se basa completamente en scikit-learn y en ningún otro módulo o paquete que hayas considerado al construir Dabble por ahora, ¿verdad? Solo para asegurarnos de que, bueno, es más fácil y más manejable usar scikit-learn. ¿Es correcto? Sí, y quiero decir, podría agregar algo más. Solía usar Light GBM al principio.

8. Default Model Recommendation

Short description:

Pero ahora tenemos HistGradientBoosting en scikit-learn, que es básicamente una re-implementación de Light GBM. Y eso es lo que estoy usando. ¿Hay un modelo predeterminado en Dabble que se recomiende usar independientemente de los datos?

Pero ahora tenemos HistGradientBoosting en scikit-learn, que es básicamente una re-implementación de Light GBM. Y eso es lo que estoy usando. ¿Cuál era nuevamente el predeterminado? Sé que tienes esta llamada genérica de clasificador en Dabble, ¿verdad? Y también sé que Dabble puede hacer muchas otras cosas además del aspecto del modelado, pero por curiosidad, ¿hay un modelo predeterminado que Dabble recomendaría usar independientemente de tus datos o crees que, no, necesitamos eso como un parámetro requerido para decir, okay, tal vez para este tipo de problema, un modelo de CatBoost sería bueno. O para este tipo de problema, tal vez algún bosque aleatorio u otro tipo de modelo sería bueno. ¿Hay algo así en Dabble? Entonces, hay dos modelos, uno es el clasificador simple que básicamente se ejecuta con los valores predeterminados que van muy, muy rápido, y luego el clasificador `any` es el que es un poco más complejo y realiza aprendizaje meta, pero no de la forma que describiste, en el aprendizaje meta generalmente intentas decidir en función del conjunto de datos o intentas aprender del pasado sobre qué tipo de conjuntos de datos funcionan bien con qué algoritmos y así, la forma en que lo describiste sería usando algo como meta características, como `oh, este conjunto de datos se ve así`.

9. Model Selection with Successive Halving

Short description:

Dabble utiliza un conjunto diverso de clasificadores y ejecuta successive halving para probar diferentes modelos en un subconjunto de datos. Selecciona modelos basados en su rendimiento en un pequeño subconjunto de datos, en lugar de utilizar una selección inteligente. Este enfoque se basa en la investigación de Matthias Freuer, Frank Hutter y otros, quienes encontraron difícil tomar buenas decisiones basadas en meta características. En cambio, Dabble se enfoca en el conjunto de datos en sí y determina qué modelos funcionan bien en él.

Entonces voy a usar este modelo double no lo hace. Lo que double hace en cambio es decir, oh, hemos analizado estos cien conjuntos de datos. Creo que en realidad fueron 80 y creamos este portafolio, este conjunto diverso de clasificadores y ahora estoy ejecutando successive halving en ellos. Así que va a probar varios clasificadores en un subconjunto de data que incluye random forest, gradient boosting support vector machines y logistic regression y ve cuáles de ellos funcionarán bien en un pequeño subconjunto de data. Así que no se realiza una selección inteligente del portafolio, el portafolio se fija utilizando meta aprendizaje de antemano. Pero luego las decisiones que tomas se hacen utilizando successive halving. Así que básicamente es una búsqueda muy rápida. Esto se basa en este artículo que mencioné de Matthias Freuer y Frank Hutter y otros que, porque en realidad, muchas personas encontraron que es bastante difícil tomar buenas decisiones basadas en meta características. Entonces, basado en cómo se ve el conjunto de datos, es mucho más fácil tomar buenas decisiones basadas en qué tipo de modelos funcionan bien, y simplemente estás probando varios modelos muy rápidamente y decides en base a eso.

10. Enfoque basado en datos y planes futuros

Short description:

Basado en el conjunto de datos, es más fácil tomar decisiones sobre los modelos. Dabble puede proporcionar estadísticas generales para la exploración. Sin embargo, el punto de partida no es impulsado por los datos. Actualmente, Dabble maneja principalmente datos tabulares y planea agregar soporte para datos de texto y series de tiempo en el futuro.

Entonces, basado en cómo se ve el conjunto de datos, es mucho más fácil tomar buenas decisiones basadas en qué tipo de modelos funcionan bien, y simplemente estás probando varios modelos muy rápidamente y decides en base a eso. Muy interesante.

Como seguimiento a eso, sé que por ahora estamos utilizando el aprendizaje meta para determinar básicamente qué tipo de modelado se puede hacer basado en lo que históricamente funciona en varios conjuntos de datos, como los 80 conjuntos de datos que mencionaste. ¿Es este el mismo tipo de lógica que también usarías para determinar qué tipo de gráficos o visualizaciones le interesarían a un usuario? Sería increíble.

El problema es que, por ahora, es en cierto sentido, muchas heurísticas, porque realmente lo que querrías es utilizar los experimentos, pero también lo que querrías es experimentos guiados por el usuario, y esto es realmente difícil de hacer. Entonces, la pregunta es qué quieres aprender sobre el conjunto de datos. Idealmente, tendrías una pregunta específica que quieres responder o quieres ver qué visualizaciones ayudaron al usuario a determinar que hay un valor atípico importante o determinaron que se olvidaron de esto y aquello o determinaron. Y así, quieres encontrar visualizaciones que permitan al usuario responder preguntas rápidamente.

Y así, si quieres hacer un enfoque real basado en datos para esto, debes tener un conjunto de preguntas de referencia. Debes mostrar a los científicos de datos y medir qué tan bien responden a estas con las visualizaciones proporcionadas, y eso es realmente difícil. Es difícil crear las preguntas y luego obtener conjuntos de datos para que un científico de datos participe en tu experimento también es muy difícil. Me preguntaba sobre eso. Sí, porque dabble aún puede ayudarte a obtener estadísticas generales y luego, utilizando eso, podemos determinar el camino en el que podemos profundizar y explorar, ya sabes, qué parte queremos explorar más a fondo y en eso me encargaría de hacer un análisis exploratorio de datos dentro de esa vertical. Entonces, en cierto sentido, nos da un buen punto de partida, ¿dirías?

Sí, pero el punto de partida no es impulsado por los datos al tener cien científicos de datos que lo analicen. Es principalmente que yo lo analice y otros usuarios de dabble. De hecho, esta es la forma en que se crean muchas visualizaciones, es decir, un experto las analiza y dice que esta es una visualización útil. Y así la vamos a utilizar. Entendido. Sí. Tengo otra pregunta que viene de nuestra audiencia. De acuerdo. ¿Dabble maneja el procesamiento de datos de señales o sensores o series de tiempo como entrada? Principalmente se realiza para datos tabulares. Siento que los datos de sensores suelen estar en un formato de datos tabulares, pero no hay soporte para series de tiempo por ahora. Entonces, lo que espero agregar a continuación es el soporte para datos de texto y luego vendrán las series de tiempo. De hecho, actualmente estoy trabajando en algunas visualizaciones de series de tiempo en un proyecto en Microsoft y espero poder incorporarlas pronto a dabble, pero no tengo modelos para series de tiempo, pero sería realmente genial tenerlos. Si tienes algo que quieras, envíame una solicitud de extracción. Este es un proyecto de código abierto.

QnA

Contribuciones y Comparación con Modelos Estadísticos

Short description:

Así que, crezcan con todas sus contribuciones. Dabble se centra más en la predicción, mientras que los modelos estadísticos se centran más en la inferencia. Dabble no admite valores p, y tampoco hay valores p en scikit-learn. El manejo de datos de series de tiempo puede ser diferente, dependiendo de la tarea y el tipo de serie de tiempo. FB profit es una solución integral para series de tiempo, pero está ajustado para datos con periodicidad anual.

Entonces, crezcan con todas sus contribuciones. Así es. Sí, estoy seguro de que hay muchas personas incluso en la audiencia en este momento que tienen muchas ideas maravillosas. Podrían simplemente ir al repositorio principal de Dabble y enviar una solicitud de extracción. Si creen que una función les sería útil a ellos y a su propio espacio de trabajo, puede que también sea útil para toda la comunidad, ¿verdad?

De acuerdo, pasando a otra pregunta, veamos. Creo que ya hice esa pregunta. Muy bien. Entonces, ¿cómo compararías realmente Dabble con los modelos estadísticos? ¿Dirías que? Bueno, es obvio que tal vez Dabble está haciendo mucho más en general, pero ¿dirías que tiene como objetivo ser más bien un superconjunto de modelos estadísticos? ¿O dirías que en el futuro incluso podríamos reemplazar los modelos estadísticos para cosas preliminares como el EDA cuando se determinan las características. Creo que son en su mayoría ortogonales porque los modelos estadísticos realmente te permiten hacer inferencias estadísticas. Y por lo tanto, si comparas esto con un modelo estadístico y scikit-learn, el modelo estadístico se centra realmente en la inferencia, mientras que scikit-learn se centra en la predicción. Y así, scikit-learn se trata de generalizar bien para probar, de esa manera el modelo estadístico se trata de probar una hipótesis y estos son conjuntos de problemas realmente diferentes y Dabble se construyó principalmente sobre scikit-learn y se centra realmente en la predicción. Entonces, el objetivo es hacer buenas predicciones en el conjunto de prueba asumiendo los datos SI ID pero los modelos estadísticos y sí, eso es más, se centra más en la inferencia. Entonces, si usas modelos estadísticos para el EDA y no para la inferencia, entonces tal vez pueda reemplazar algunas de estas partes, pero no hay valores p en Dabble y no tengo la intención de agregar valores p a Dabble. Tampoco hay realmente valores p en scikit-learn. Sí. Sí. También me he dado cuenta de eso.

Entonces, volviendo al punto de que actualmente Dabble no admite el componente secuencial, la información secuencial de las series de tiempo. ¿Qué exactamente es tal vez en la parte frontal del modelado puedo ver que es muy diferente, ¿verdad? El manejo de datos de series de tiempo puede ser bastante diferente, especialmente cuando se utilizan técnicas tradicionales de series de tiempo como ARIMA. Pero, ¿qué pasa desde una perspectiva de visualización de datos? No creo que sea demasiado difícil visualizar datos que no están en ese formato secuencial en comparación con datos que sí están en ese formato secuencial, o ¿me estoy perdiendo algo aquí? Entonces, realmente hay muchos tipos diferentes de datos de series de tiempo. La pregunta es si estás mirando una sola serie de tiempo o si estás mirando series de tiempo de longitud fija que están etiquetadas, como si quisieras clasificar series de tiempo o si quieres clasificar cada punto en una serie de tiempo. ¿Tienes múltiples series de tiempo de diferentes longitudes? ¿Tienes una serie de tiempo lineal donde tienes el mismo paso de tiempo pero diferentes características, como varios precios de acciones diferentes a lo largo del tiempo? ¿Están equiespaciados o tienes algo como lo que se llama proceso puntual en estadísticas donde tienes una marca de tiempo única con eventos? Y así, incluso la tarea es muy diferente para estos tipos de conjuntos de series de tiempo. Creo que lo más común es probablemente que tengas una serie de tiempo donde tengas marcas de tiempo equiespaciadas. Tienes algunas características y luego quieres hacer regresión para cada punto de tiempo. Y hacer algo para esto sería bastante sencillo, supongo depende un poco de lo que estés mirando. Ya hay algunas cosas interesantes en esta área. Por ejemplo, como FB profit trata de ser una especie de solución integral para series de tiempo. Está ajustado explícitamente para cosas que tienen una periodicidad anual. Así que no tiene cosas como días festivos, que son muy importantes para datos de ventas y así sucesivamente. Sí, pero el único problema con usar algo como profit es que, supongo, es un enfoque tradicional de series de tiempo donde no estoy seguro si se pueden utilizar ciertas variables no exóticas que también varían con el tiempo como una especie de característica.

Limitaciones de usar variables variables de series de tiempo

Short description:

Si desea hacer pronósticos de pedidos en el futuro, solo puede utilizar una serie de pronósticos de pedidos en el pasado. Sin embargo, no puede utilizar otras variables variables de series de tiempo como entrada para profit. El caso que intentaría abordar primero es una serie de tiempo multivariable donde desea hacer una regresión en cada paso.

Entonces, si desea hacer pronósticos de pedidos en el futuro, no podría solo puede utilizar una serie de pronósticos de pedidos en el pasado, pero no podría realmente utilizar otras variables variables de series de tiempo como una entrada para profit, ¿verdad? Entonces, lo sé, sí. No estoy familiarizado con eso, si ese es el caso, y eso es un poco, eso es ciertamente limitante. Entonces, supongo que el caso que probablemente intentaría abordar primero es cuando tiene una serie de tiempo multivariable y desea hacer una regresión en cada paso. Entonces eso es como una cosa estándar de pronóstico. Definitivamente, sí, sí, definitivamente veo que sería útil allí. Creo que en este momento, sin embargo, déjame ver si puedo desplazarme para ver algunas preguntas aquí. De acuerdo, entonces esto está relacionado nuevamente con el mismo tipo de tema. Entonces aquí hay una pregunta de la audiencia en la que están preguntando acerca de qué pasa si qué pasa si incluimos el etiquetado pseudo, como nuevamente, creo que se remonta a la charla de aprendizaje semi-supervisado en scikit-learn o dabble, pero ¿tienes alguna idea al respecto? En realidad, no estoy seguro de qué se entiende por etiquetado pseudo. Sí. Tampoco estoy seguro al 100%. Supongo que si puedo hacer clic en el enlace. Sí. De cualquier manera, si alguien pudiera aclarar eso o si pudieran comunicarse contigo en las salas de oradores eso también estaría bien. Entonces está bien. Parece ser una forma de etiquetado propio de datos no supervisados o algo así como autoentrenamiento. Sí, pero supongo que como no está muy integrado en scikit-learn en sí. Dijiste que no sería algo que considerarías en dabble en este momento, ¿verdad? Sí, y en particular, la razón por la que no está en scikit-learn a menudo. Bueno, hay dos razones, a) creemos que está fuera de alcance y tenemos mucho que hacer. Ese es el caso de las series de tiempo. Pero hay una razón por la que aún podría ser bueno para dabble o b) no hay tanta demanda. Realmente no hay tanta demanda de aprendizaje semi-supervisado. Puede ser porque las personas tal vez es como un ciclo porque las personas no lo están haciendo porque no está fácilmente disponible. Y así no hay tanta demanda, pero generalmente si algo funciona muy, muy bien, es realmente aplicable en la práctica, entonces las personas suelen seguir preguntando por eso y luego lo agregaremos en algún momento. Pero para el aprendizaje semi-supervisado, realmente las personas no parecían estar muy emocionadas al respecto. Eso es diferente de las cosas de transferencia de aprendizaje en redes neuronales profundas porque obviamente funciona increíblemente bien, pero creo que las personas no han visto grandes beneficios al hacer este tipo de aprendizaje semi-supervisado en conjuntos de datos de tableau. Sí, bueno, creo que en este momento estamos a punto de terminar las preguntas y respuestas. Entonces, si en la audiencia no has tenido la oportunidad de hacer tu pregunta a Andreas, él estará disponible en su sala de oradores justo después de que nos deje ahora mismo. Y así puedes tener discusiones individuales con él. Y con eso, supongo que nos veremos pronto Andreas. Cuídate. Sí, cuídate.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

6 min
Charlie Gerard's Career Advice: Be intentional about how you spend your time and effort
Featured Article
When it comes to career, Charlie has one trick: to focus. But that doesn’t mean that you shouldn’t try different things — currently a senior front-end developer at Netlify, she is also a sought-after speaker, mentor, and a machine learning trailblazer of the JavaScript universe. "Experiment with things, but build expertise in a specific area," she advises.

What led you to software engineering?My background is in digital marketing, so I started my career as a project manager in advertising agencies. After a couple of years of doing that, I realized that I wasn't learning and growing as much as I wanted to. I was interested in learning more about building websites, so I quit my job and signed up for an intensive coding boot camp called General Assembly. I absolutely loved it and started my career in tech from there.
 What is the most impactful thing you ever did to boost your career?I think it might be public speaking. Going on stage to share knowledge about things I learned while building my side projects gave me the opportunity to meet a lot of people in the industry, learn a ton from watching other people's talks and, for lack of better words, build a personal brand.
 What would be your three tips for engineers to level up their career?Practice your communication skills. I can't stress enough how important it is to be able to explain things in a way anyone can understand, but also communicate in a way that's inclusive and creates an environment where team members feel safe and welcome to contribute ideas, ask questions, and give feedback. In addition, build some expertise in a specific area. I'm a huge fan of learning and experimenting with lots of technologies but as you grow in your career, there comes a time where you need to pick an area to focus on to build more profound knowledge. This could be in a specific language like JavaScript or Python or in a practice like accessibility or web performance. It doesn't mean you shouldn't keep in touch with anything else that's going on in the industry, but it means that you focus on an area you want to have more expertise in. If you could be the "go-to" person for something, what would you want it to be? 
 And lastly, be intentional about how you spend your time and effort. Saying yes to everything isn't always helpful if it doesn't serve your goals. No matter the job, there are always projects and tasks that will help you reach your goals and some that won't. If you can, try to focus on the tasks that will grow the skills you want to grow or help you get the next job you'd like to have.
 What are you working on right now?Recently I've taken a pretty big break from side projects, but the next one I'd like to work on is a prototype of a tool that would allow hands-free coding using gaze detection. 
 Do you have some rituals that keep you focused and goal-oriented?Usually, when I come up with a side project idea I'm really excited about, that excitement is enough to keep me motivated. That's why I tend to avoid spending time on things I'm not genuinely interested in. Otherwise, breaking down projects into smaller chunks allows me to fit them better in my schedule. I make sure to take enough breaks, so I maintain a certain level of energy and motivation to finish what I have in mind.
 You wrote a book called Practical Machine Learning in JavaScript. What got you so excited about the connection between JavaScript and ML?The release of TensorFlow.js opened up the world of ML to frontend devs, and this is what really got me excited. I had machine learning on my list of things I wanted to learn for a few years, but I didn't start looking into it before because I knew I'd have to learn another language as well, like Python, for example. As soon as I realized it was now available in JS, that removed a big barrier and made it a lot more approachable. Considering that you can use JavaScript to build lots of different applications, including augmented reality, virtual reality, and IoT, and combine them with machine learning as well as some fun web APIs felt super exciting to me.


Where do you see the fields going together in the future, near or far? I'd love to see more AI-powered web applications in the future, especially as machine learning models get smaller and more performant. However, it seems like the adoption of ML in JS is still rather low. Considering the amount of content we post online, there could be great opportunities to build tools that assist you in writing blog posts or that can automatically edit podcasts and videos. There are lots of tasks we do that feel cumbersome that could be made a bit easier with the help of machine learning.
 You are a frequent conference speaker. You have your own blog and even a newsletter. What made you start with content creation?I realized that I love learning new things because I love teaching. I think that if I kept what I know to myself, it would be pretty boring. If I'm excited about something, I want to share the knowledge I gained, and I'd like other people to feel the same excitement I feel. That's definitely what motivated me to start creating content.
 How has content affected your career?I don't track any metrics on my blog or likes and follows on Twitter, so I don't know what created different opportunities. Creating content to share something you built improves the chances of people stumbling upon it and learning more about you and what you like to do, but this is not something that's guaranteed. I think over time, I accumulated enough projects, blog posts, and conference talks that some conferences now invite me, so I don't always apply anymore. I sometimes get invited on podcasts and asked if I want to create video content and things like that. Having a backlog of content helps people better understand who you are and quickly decide if you're the right person for an opportunity.What pieces of your work are you most proud of?It is probably that I've managed to develop a mindset where I set myself hard challenges on my side project, and I'm not scared to fail and push the boundaries of what I think is possible. I don't prefer a particular project, it's more around the creative thinking I've developed over the years that I believe has become a big strength of mine.***Follow Charlie on Twitter
ML conf EU 2020ML conf EU 2020
41 min
TensorFlow.js 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
React Advanced Conference 2021React Advanced Conference 2021
21 min
Using MediaPipe to Create Cross Platform Machine Learning Applications with React
Top Content
This talk gives an introduction about MediaPipe which is an open source Machine Learning Solutions that allows running machine learning models on low-powered devices and helps integrate the models with mobile applications. It gives these creative professionals a lot of dynamic tools and utilizes Machine learning in a really easy way to create powerful and intuitive applications without having much / no knowledge of machine learning beforehand. So we can see how MediaPipe can be integrated with React. Giving easy access to include machine learning use cases to build web applications with React.
JSNation Live 2021JSNation Live 2021
39 min
TensorFlow.JS 101: ML in the Browser and Beyond
Discover how to embrace machine learning in JavaScript using TensorFlow.js in the browser and beyond in this speedy talk. Get inspired through a whole bunch of creative prototypes that push the boundaries of what is possible in the modern web browser (things have come a long way) and then take your own first steps with machine learning in minutes. By the end of the talk everyone will understand how to recognize an object of their choice which could then be used in any creative way you can imagine. Familiarity with JavaScript is assumed, but no background in machine learning is required. Come take your first steps with TensorFlow.js!
ML conf EU 2020ML conf EU 2020
32 min
An Introduction to Transfer Learning in NLP and HuggingFace
In this talk I'll start introducing the recent breakthroughs in NLP that resulted from the combination of Transfer Learning schemes and Transformer architectures. The second part of the talk will be dedicated to an introduction of the open-source tools released HuggingFace, in particular our Transformers, Tokenizers and Datasets libraries and our models.

Workshops on related topic

ML conf EU 2020ML conf EU 2020
160 min
Hands on with TensorFlow.js
Workshop
Come check out our workshop which will walk you through 3 common journeys when using TensorFlow.js. We will start with demonstrating how to use one of our pre-made models - super easy to use JS classes to get you working with ML fast. We will then look into how to retrain one of these models in minutes using in browser transfer learning via Teachable Machine and how that can be then used on your own custom website, and finally end with a hello world of writing your own model code from scratch to make a simple linear regression to predict fictional house prices based on their square footage.
ML conf EU 2020ML conf EU 2020
112 min
The Hitchhiker's Guide to the Machine Learning Engineering Galaxy
Workshop
Are you a Software Engineer who got tasked to deploy a machine learning or deep learning model for the first time in your life? Are you wondering what steps to take and how AI-powered software is different from traditional software? Then it is the right workshop to attend.
The internet offers thousands of articles and free of charge courses, showing how it is easy to train and deploy a simple AI model. At the same time in reality it is difficult to integrate a real model into the current infrastructure, debug, test, deploy, and monitor it properly. In this workshop, I will guide you through this process sharing tips, tricks, and favorite open source tools that will make your life much easier. So, at the end of the workshop, you will know where to start your deployment journey, what tools to use, and what questions to ask.
ML conf EU 2020ML conf EU 2020
146 min
Introduction to Machine Learning on the Cloud
Workshop
This workshop will be both a gentle introduction to Machine Learning, and a practical exercise of using the cloud to train simple and not-so-simple machine learning models. We will start with using Automatic ML to train the model to predict survival on Titanic, and then move to more complex machine learning tasks such as hyperparameter optimization and scheduling series of experiments on the compute cluster. Finally, I will show how Azure Machine Learning can be used to generate artificial paintings using Generative Adversarial Networks, and how to train language question-answering model on COVID papers to answer COVID-related questions.