¿Cómo es trabajar en problemas de aprendizaje automático en un entorno empresarial?

Una cosa que encontrará si trabaja en ML en un entorno empresarial es que se preocupará mucho más por los datos y la calidad de los datos que por los algoritmos.

Aquí hay un escenario inventado con fines ilustrativos. Imagine que está escribiendo un sistema de LD para un banco para distinguir las buenas oportunidades de préstamo de las malas oportunidades de préstamo, donde “bueno” significa “no incumplirá”.

Suponga que tiene una base de datos de préstamos anteriores que han sido etiquetados como buenos o malos. Su trabajo ahora es convertir esa base de datos en un algoritmo ML que pueda usarse para predicciones futuras. Esta es una instancia de una subárea de LD llamada “clasificación supervisada”. Es decir, la tarea es la clasificación (en préstamos buenos y malos) y es una tarea “supervisada” en el sentido de que algún ser humano ha decidido cuáles deberían ser las categorías y ha creado un conjunto de capacitación que ejemplifica esas clases. Ahora, todo lo que necesita para una clasificación supervisada es lo siguiente:

1) un conjunto de capacitación (en este caso, de préstamos buenos y malos)
2) un conjunto de características extraídas de esos elementos del conjunto de capacitación (por ejemplo, un puntaje de crédito para el prestatario, la cantidad de garantía puesta para el préstamo, etc.)
3) un algoritmo de ML que puede tomar un conjunto de ejemplos de entrenamiento conocidos (y características asociadas) y producir un algoritmo que sea bueno para clasificar ejemplos desconocidos. Esto podría ser un SVM, o árboles de decisión potenciados, o redes neuronales, o un clasificador de entropía máximo.

Lo que encontrará en un entorno empresarial es que no se preocupe demasiado por el n. ° 3 (el algoritmo). Debe elegir el algoritmo cuidadosamente para que coincida con las características del problema, pero es poco probable que necesite mejorar el algoritmo. Esto se debe a que los algoritmos generalmente han sufrido mucho trabajo y optimización para que puedan utilizarse en una amplia variedad de situaciones. Los algoritmos de ML sirven a muchos clientes.

Por otro lado, sus propios conjuntos de datos y características son probablemente únicos para su situación y su cliente. Entonces, si no tiene cuidado, podría estar aplicando un algoritmo ML brillantemente optimizado a un conjunto de datos que es demasiado pequeño o tiene muchos datos mal etiquetados, o no tiene características obvias extraídas de los ejemplos, y así sucesivamente. Descubrirá que gran parte del trabajo consiste simplemente en limpiar (y de manera poco romántica) los datos y / o encontrar nuevas características de diagnóstico para extraer de los ejemplos. El trabajo real, entonces, resulta ser a) limpiar datos, b) encontrar maneras de obtener más y mejores datos, yc) “ingeniería de características” – encontrar nuevas características para exponer de los ejemplos al algoritmo ML.

Trabajo para LiftIgniter, una empresa que utiliza el aprendizaje automático para ayudar a los sitios web a ofrecer recomendaciones personalizadas. Mi función implica una combinación de investigación e implementación de algoritmos de ciencia de datos y aprendizaje automático. Como esta pregunta se refiere específicamente a la parte de aprendizaje automático, escribiré más sobre esa parte. Tengo la intención de escribir una respuesta separada sobre el componente de ciencia de datos / análisis de datos de mi trabajo, y lo enlazaré desde aquí.

Así es como operamos para un cliente típico: nuestro cliente instala nuestra baliza de seguimiento en su sitio web que recopila las actividades del usuario en el sitio web (no recopilamos ninguna información de identificación personal sobre los usuarios). Los sitios web de nuestros clientes también ponen algunos Javascript nuestros para mostrar un widget con nuestras recomendaciones (esto puede reemplazar un widget que ya tenían, o puede ser un nuevo widget). El problema del aprendizaje automático, esencialmente, es utilizar la actividad actual e histórica en el sitio (por ese usuario y otros) para entregar recomendaciones que el usuario encuentre más relevantes (medido por alguna métrica como la tasa de clics, el tiempo total en sitio, conversión).
El objetivo es proporcionar al editor un CTR, tiempo en el sitio y métricas de conversión dramáticamente mejorados. Una mejora en esas métricas significa una mejora en los ingresos del editor.

Este es el principal desafío: la tecnología que hemos desarrollado (y continuamos mejorando) es común en todos nuestros sitios web de clientes, aunque los diferentes sitios web tienen objetivos de optimización específicos diferentes. Queremos que todo nuestro proceso, que va desde la recopilación de la actividad del usuario a través de nuestra baliza de seguimiento, pasando por el procesamiento de todos los datos mediante algoritmos de aprendizaje automático, hasta la presentación de recomendaciones en tiempo real, utilice la misma base de código. En la actualidad, cada vez que agregamos un nuevo cliente, descubrimos algunas mejoras que podríamos hacer en nuestra base de código general que ayudaría a resolver problemas específicos de ese cliente. Intentamos agregar el código a la base de código general, de la manera más generalizable posible, y luego usar la configuración específica del cliente para especificar qué transformaciones queremos para un cliente en particular.

  1. Buenos algoritmos de optimización para la regresión logística en grandes conjuntos de datos : lo que queremos minimizar es la ingeniería de características específicas del cliente y el análisis de datos en profundidad. Es inevitable cierta cantidad de inmersiones profundas específicas del cliente. Sin embargo, queremos minimizar esto. Entonces, la esperanza es que, en lugar de seleccionar cuidadosamente las 100 o 200 características que serían mejores para hacer nuestra predicción, simplemente arrojemos una gran cantidad de características al modelo (potencialmente, varios millones de características o incluso cientos de millones de características) y luego use nuestro algoritmo de optimización (con opciones de regularización apropiadas) para separar el trigo de la paja (en términos de características) y llegar a buenas predicciones. Por lo tanto, utilizamos algoritmos que garantizan una convergencia rápida en grandes conjuntos de datos. Los algoritmos que utilizamos son esencialmente una mezcla de algoritmos existentes en el dominio público y muchas innovaciones. Usamos lo mejor de lo que existe y luego iteramos y mejoramos constantemente. Un ejemplo de uno de los algoritmos de big data que utilizamos es la respuesta de Vipul Naik a ¿Cuáles son algunos algoritmos de descenso de gradiente rápido? (Esto fue desarrollado por un equipo de Google que incluye a Indraneel Mukherjee, la persona que ahora es el CEO de nuestra empresa). No todo es necesario para todos los clientes, pero solo tener la mezcla completa nos ahorra en la exploración manual de ingeniería de características y hace que nuestro negocio sea realmente escalable.
  2. Generación de datos de entrenamiento : una vez establecido (1), no tenemos que preocuparnos de si nuestro algoritmo obtiene el mejor modelo para los datos de entrenamiento dados. Pero aún debemos preocuparnos por si los datos de capacitación que generamos describen con precisión la situación del mundo real para la que estamos tratando de optimizar. Estos son algunos desafíos del tipo que enfrenta nuestra empresa: (a) podemos generar ejemplos positivos basados ​​en clics reales, pero ¿cómo generamos ejemplos negativos? (b) ¿cómo generamos datos de capacitación para un sitio web si no han mostrado ninguna recomendación? es decir, ¿cómo “iniciamos en frío” nuestras recomendaciones? (c) si comenzamos a mostrar recomendaciones basadas en algún modelo, la gente seguirá haciendo clic en esas recomendaciones simplemente porque son las únicas disponibles. ¿Cómo salimos de este “óptimo local”? (d) si mostramos múltiples recomendaciones, ¿mostrar las recomendaciones que tienen la máxima probabilidad de que se haga clic en realidad maximiza la probabilidad conjunta de que al menos se haga clic en una de ellas? ¿Qué pasa si todos son muy similares?
  3. Relacionando métricas fuera de línea y en línea : el aprendizaje automático hace un gran trabajo al hacer predicciones para los datos existentes . Por lo tanto, puede hacer un gran trabajo al responder preguntas como: “¿es más probable que las personas en la página A hagan clic en la página B o la página C?” Pero la pregunta que realmente queremos responder es “¿cómo hacemos que la gente haga clic más?” o “¿Cuál es el CTR óptimo?” Idealmente, responder la primera pregunta puede responder la segunda. Pero la traducción matemática no es del todo sencilla, particularmente debido a la gran flexibilidad que tenemos con respecto a la generación de datos de capacitación.
  4. Modificación del comportamiento del usuario : a veces, el objetivo es cambiar el comportamiento del usuario de una manera más no trivial que simplemente maximizar el CTR. Por ejemplo, tal vez queremos mostrar más contenido archivado más antiguo. Idealmente, cualquier modificación deseada del comportamiento del usuario puede convertirse en un problema de optimización de aprendizaje automático correspondiente. Pero en algunos casos, el modelo que se ajusta bien a los datos históricos no es el adecuado para la modificación del comportamiento del usuario. Lo que podemos hacer en ese caso es tomar ese modelo y aplicarle algunas correcciones para mover el comportamiento del usuario en una dirección particular.
  5. Intercambiando la complejidad del modelo (tanto en términos del tamaño del modelo como del tiempo necesario para entrenar) y la precisión del modelo : ¿Elegimos un modelo de 1000 características que se pueda entrenar en cinco minutos, o un modelo de 100000 características que demore media hora en entrenar ? Este último probablemente funciona mejor en las métricas fuera de línea (porque está mucho más cerca de lo óptimo). Si las métricas fuera de línea y las métricas en línea para las que estamos tratando de optimizar (cf. (3) y (4)) están suficientemente entrelazadas, entonces sí, probablemente valga la pena. Si no, probablemente no lo sea. Esto es algo que queremos automatizar cada vez más a medida que nuestro proceso de generación de datos de capacitación (cf. (2)) y nuestra función de costos se acercan cada vez más a lo que realmente estamos tratando de optimizar en línea. (Tenga en cuenta que el tamaño del modelo también afecta la complejidad temporal del servicio del modelo, es decir, la calificación de los candidatos).
  6. Estrategias de preselección : las recomendaciones que hacemos provienen de un inventario de artículos (artículos, productos que se venden, anuncios, etc.). Si el número de artículos de inventario es muy grande (digamos, más de 10,000), entonces no es realista poder calificar y clasificar todos estos artículos en tiempo real cuando alguien carga una página web. Por lo tanto, utilizamos listas cortas de candidatos previamente calculadas y las clasificamos solo dentro de ellas. La estrategia y el modelo preseleccionados pueden interactuar de manera divertida. Una buena estrategia de preselección a veces puede compensar un mal modelo (porque en primer lugar solo enumera cosas que eran decentes), mientras que una mala estrategia de preselección puede destruir incluso un buen modelo.
  7. Nuevos paradigmas para la extracción de características : por ejemplo, podríamos introducir algoritmos NLP más sofisticados para extraer características basadas en texto de artículos a los que no teníamos acceso antes. Dicha extracción de características puede ser particularmente útil en casos en los que no hay suficientes datos de flujo de clics, porque podemos usar pesos aprendidos en esas características para hacer predicciones para las páginas a pesar de no tener datos de flujo de clics. Sin embargo, descubrir qué nuevos paradigmas se necesitan es más un problema de ciencia de datos (aunque la implementación real de los paradigmas es un problema de LD), así que lo explicaré en otra parte.

Hacer aprendizaje automático en el mundo real se trata de compromisos y limitaciones constantes. Siempre estoy optimizando para la mejor solución, pero debo tener en cuenta varias limitaciones que uno no puede ver en una situación académica o similar. Desde mi punto de vista, esto es mucho más divertido y útil: la investigación académica es increíblemente útil (y nosotros, como todos los demás, hemos aprendido de los gigantes) pero no siempre es aplicable. Uno debe traducir la investigación al mundo real donde los usuarios reales tocan, sienten y usan nuestras herramientas cada segundo. Para mí, eso es aprendizaje automático en un entorno empresarial y es muy emocionante.

PD: corrí esta respuesta de Adam Spector, mi colega de LiftIgniter que trabaja en ventas y desarrollo de negocios, y he incorporado algunas de sus sugerencias. No obstante, esta respuesta representa mi punto de vista personal y no necesariamente el punto de vista de la empresa o de cualquiera de mis colegas.

Aquí hay un par de consideraciones relevantes que son relevantes para ML pero mucho más generales que ML.

Depende mucho de cuál sea realmente el entorno empresarial. Depende especialmente de cuántas personas con las que trabajará que también estén haciendo aprendizaje automático. ¿Hay suficientes de ustedes para mantenerse al día con los desarrollos en el campo y también desarrollar aplicaciones? ¿O formará parte de un pequeño grupo que pasa todo el tiempo buscando datos específicos de la industria?

También importa cuán central sea su actividad en el negocio principal de la compañía.

Desafortunadamente, muchas compañías intentan contratar a algunas personas en un área de moda con la esperanza de que realicen un milagro. Si el éxito no llega rápidamente, y si no es necesario para el negocio principal, podría estar buscando un nuevo trabajo con habilidades no tan actuales.

Hay tres cosas a tener en cuenta sobre el aprendizaje automático en un entorno empresarial:

  1. El trabajo práctico real a menudo será lo que llamamos ‘minería de datos’. Puede encontrarse en una posición llamada ‘analista’ que tiende a ser un trabajo de nivel de entrada que implica mucho trabajo de oficina pero también un pensamiento analítico en el que vierte datos a medida que aprende las cuerdas.
  2. El trabajo práctico requerirá que comprenda tanto el aprendizaje automático como la industria de la que provienen los datos.
  3. El trabajo práctico generalmente significa usar algoritmos y paquetes de software existentes para resolver sus tareas, no crear nuevas técnicas de ML.

Al leer su pregunta, creo que está combinando tres roles:

  1. El científico reflexiona sobre el tiempo de ejecución de O (log n) de su nuevo algoritmo
  2. El programador, seguro dentro de una compañía de software, trabajando para implementar los algoritmos en un paquete de software
  3. El analista en el campo, tratando de dar sentido a una base de datos de inventario mientras también trata de ver si este paquete de software que tiene tiene alguna herramienta adecuada para su problema. Por ahí, el aprendizaje automático se llama “minería de datos” y es un trabajo duro realizado por mineros trabajadores.

La situación desafortunada en la universidad es que las universidades lo entrenan para el papel No. 1, incluso si la mayoría de los estudiantes no siguen ese camino profesional.

Quieres hacer programación para vivir. Deberías entonces
decida para qué industria debe programar o para qué . Te resultará más fácil determinar el alcance y los requisitos de un proyecto de software si sabes de qué está hablando el cliente. Esto es doblemente importante en el aprendizaje automático y la minería de datos porque no puede procesar adecuadamente los datos si no comprende lo que significa o cómo se produjeron.
Los gerentes lo saben, por lo que también será más fácil ser contratado.

La familiaridad con el aprendizaje automático puede ser una habilidad de programación , al igual que cómo hacer consultas SQL sin bloquear la base de datos o trabajar una API web de manera eficiente es una habilidad. Pero es poco probable que ML sea una industria propia, por lo que no es suficiente elegir ML para ubicarlo en el camino correcto.

Si vas a trabajar con ML por el resto de tu carrera, querrás un poco de matemáticas. Los vectores, las matrices y las estadísticas son importantes, el cálculo no lo es tanto. Pero si desea obtener un título en aprendizaje automático, probablemente tendrá que estudiar hasta el nivel de maestría en una universidad, donde el cálculo, además de muchas otras cosas que encontrará tediosas, será un requisito absoluto. Si no está preparado para eso, no intente obtener un título en ML, que de todos modos lo capacitará para cumplir el papel No. 1.

Entonces, si actualmente está en el departamento de informática, quédese allí. Aprenda y use el aprendizaje automático siempre que pueda, pero también desarrolle un punto de vista ML de una o más industrias.

More Interesting

¿Cuál es la diferencia entre las pruebas de heterocedasticidad y las pruebas de normalidad de errores?

¿Cuáles son las diferentes técnicas de minería de texto?

¿Cuáles son algunos proyectos paralelos de Machine Learning que puedo implementar en mi tiempo libre?

Aprendizaje profundo: ¿Una versión suave de unidades lineales rectificadas funciona mejor o peor que una no lineal?

¿Por qué algunas personas confunden las estadísticas con el aprendizaje automático?

¿Cuál es el mejor clasificador HOG de detección de peatones para descargar?

¿Cuáles son los desafíos tecnológicos involucrados en alimentar el código fuente de una máquina Linux y hacer que aprenda a codificar un núcleo Linux similar?

RNN para modelado de idiomas en Tensorflow. ¿Cómo puedo rellenar las secuencias si mi entrada está constituida por la incorporación de palabras?

¿Cuáles son sus 5 mejores técnicas empíricas para detectar BS?

¿En qué casos notamos un problema de gradiente que explota o desaparece y por qué?

¿Qué es el aprendizaje por refuerzo?

¿Qué tan rápido es Theano en comparación con otras implementaciones de DBN? ¿Cómo se compara con otras implementaciones de GPU (potencialmente no públicas) para la velocidad de entrenamiento en grandes conjuntos de datos?

¿Cuáles son algunas ideas interesantes para un proyecto de investigación en procesamiento de lenguaje natural y / o traducción automática?

¿Cómo decidimos la clase de clústeres generados a través del clúster k-means?

¿Qué es la agrupación de datos?