Introducción a la optimización lineal

Contenidos

Introducción

Las organizaciones utilizan la ciencia de datos y el aprendizaje automático para resolver una variedad de problemas comerciales en la actualidad. Para crear un impacto empresarial real, una consideración importante es cerrar la brecha entre la canalización de la ciencia de datos y la canalización de la toma de decisiones empresariales.

El resultado de la canalización de la ciencia de datos son predicciones, patrones y conocimientos a partir de los datos (normalmente sin ninguna noción de restricciones), pero eso por sí solo es insuficiente para que las partes interesadas de la empresa tomen decisiones. Los resultados de la ciencia de datos deben incorporarse al proceso de toma de decisiones comerciales, lo que implica algún tipo de optimización que implica restricciones y variables de decisión que modelan los aspectos clave del negocio.

Por ejemplo, si está ejecutando una cadena de Supermercado, su canal de ciencia de datos pronosticaría las ventas esperadas. Luego, tomaría esas entradas y crearía una estrategia optimizada de inventario / ventas.

En este artículo, mostraremos un ejemplo de optimización lineal para seleccionar qué videos TED ver.

Tabla de contenido

  • Introducción a la optimización lineal
  • El problema: crear la lista de observación para videos TED
  • Paso 1: importar paquetes relevantes
  • Paso 2: crea un marco de datos para las charlas TED
  • Paso 3: configurar el problema de optimización lineal
  • Paso 4: convierta los resultados de la optimización en un formato interpretable

Introducción a la optimización lineal

Entre las técnicas de optimización, la Optimización lineal mediante el método Simplex se considera una de las más poderosas y ha sido calificada como uno de los 10 mejores algoritmos de los 20.th siglo. Como profesionales de la ciencia de datos, es importante tener conocimientos prácticos sobre la implementación de la optimización lineal y esta publicación de blog es para ilustrar su implementación utilizando el paquete PuLP de Python.

Para hacer las cosas interesantes y fáciles de entender, aprenderemos esta técnica de optimización aplicándola en un problema práctico del día a día. Dicho esto, lo que aprendemos también es aplicable a una variedad de problemas comerciales.

Nota: Este artículo asume que tiene conocimientos básicos de programación lineal. Puede leer este artículo si desea revisar el tema.

El problema: crear la lista de observación para videos TED

TED es una organización sin fines de lucro dedicada a difundir ideas. TED comenzó en 1984 como una conferencia en la que convergieron Tecnología, Entretenimiento y Diseño, y hoy cubre casi todos los temas, desde la ciencia hasta los negocios y los problemas globales, en más de 100 idiomas. Las charlas TED son impartidas por expertos apasionados por el trabajo en los dominios que eligen y tienen una gran cantidad de información.

Ahora, para el propósito de esta publicación de blog, imagine una situación en la que uno esté interesado en crear su lista de observación de las charlas TED más populares dadas sus limitaciones (tiempo que se puede asignar para ver y la cantidad de charlas). Veremos cómo implementar el programa Python para ayudarnos a crear la lista de seguimiento de la manera óptima.

El código del artículo se puede encontrar aquí. Las capturas de pantalla de mi cuaderno Jupyter se muestran a continuación:

image001-2656453

Paso 1: importar paquetes relevantes

PuLP es un software gratuito de código abierto escrito en Python. Se utiliza para describir problemas de optimización como modelos matemáticos. PuLP puede llamar a cualquiera de los numerosos solucionadores LP externos (CBC, GLPK, CPLEX, Gurobi, etc.) para resolver este modelo y luego usar comandos de Python para manipular y mostrar la solución. De forma predeterminada, el solucionador de CoinMP se incluye con PuLP.

image002-4884036

Paso 2: crea un marco de datos para las charlas TED

El conjunto de datos que tiene todas las charlas TED (2550) se descarga de Kaggle y se lee en un marco de datos. Se selecciona un subconjunto de columnas relevantes y el conjunto de datos resultante tiene los siguientes detalles: índice de la charla, nombre de la charla, nombre del evento TED, duración de la charla (en minutos), número de vistas (proxy para la popularidad de la charla)

image003-5622579

Paso 3: configurar el problema de optimización lineal

Empiece por definir el objeto LP. La variable prob se crea para contener la formulación del problema.

image004-8906803

Paso 3.1: Cree las variables de decisión

Repita cada fila del marco de datos para crear las variables de decisión, de modo que cada conversación se convierta en una variable de decisión. Dado que cada charla puede seleccionarse o no seleccionarse como parte de la lista de observación final, la variable de decisión es de naturaleza binaria (1 = seleccionada, 0 = no seleccionada)

image005-4581569

Paso 3.2: definir la función objetivo

La función objetivo es la suma de todas las filas de las vistas de cada charla. Las vistas sirven como un indicador de la popularidad de la charla, por lo que, en esencia, estamos tratando de maximizar las vistas (popularidad) seleccionando charlas apropiadas (variables de decisión).

image006-7820970

Paso 3.3: definir las restricciones

En el problema, tenemos 2 restricciones:

a) Solo tenemos una cantidad fija de tiempo total que se puede asignar para ver las charlas

b) No queremos ver más de un cierto número de charlas para evitar la sobrecarga de información

image007-4576228

Paso 3.4: El formato final (para la formulación del problema)

El formato final del problema formulado se escribe en un archivo .lp. Esto enumerará la función objetivo, las variables de decisión y las restricciones impuestas al problema.

image008-3093581

Paso 3.5: la optimización real

La optimización real es una sola línea de código que llama a ‘prob.solve’. Se inserta una declaración de afirmación para determinar si se obtuvo un resultado óptimo para el problema.

image009-1711112

Paso 4: convierta los resultados de la optimización en un formato interpretable

Los resultados de optimización que indican las variables de decisión específicas (conversaciones) que se seleccionaron para maximizar el resultado deben convertirse en un formato de lista de observación, como se muestra a continuación:

image010-2530610

image011-7062365

Notas finales

Este artículo proporciona un ejemplo de cómo utilizar las técnicas de optimización lineal disponibles en Python para resolver el problema diario de crear una lista de visualización de videos. Los conceptos aprendidos también son aplicables en situaciones comerciales más complejas que involucran miles de variables de decisión y muchas restricciones diferentes.

Todos los profesionales de la ciencia de datos deben agregar «técnicas de optimización» a su cuerpo de conocimientos para que puedan usar análisis avanzados para resolver problemas comerciales del mundo real y este artículo está destinado a ayudarlo a dar el primer paso en esa dirección.

karthikeyan-232x300-9590781Karthikeyan Sankaran Actualmente es director de LatentView Analytics, que brinda soluciones en la intersección de negocios, tecnología y matemáticas para problemas comerciales en una amplia gama de industrias. Karthik tiene cerca de dos décadas de experiencia en la industria de la tecnología de la información y ha trabajado en múltiples roles en el espacio de gestión de datos, inteligencia empresarial y análisis.

Esta historia fue recibida como parte de Concurso «Blogatón» en DataPeaker. La entrada de Karthikeyan fue una de las ganadoras del concurso.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.