Introduction à l'optimisation linéaire

Contenu

introduction

Les organisations utilisent la science des données et l'apprentissage automatique pour résoudre une variété de problèmes commerciaux aujourd'hui. Pour créer un réel impact commercial, une considération importante est de combler le fossé entre le pipeline de science des données et le pipeline de prise de décision commerciale.

Les résultats du pipeline de science des données sont des prédictions, modèles et informations à partir des données (normalement sans aucune notion de restrictions), mais cela seul ne suffit pas pour que les parties prenantes de l'entreprise prennent des décisions. Les résultats de la science des données doivent être intégrés dans le processus décisionnel de l'entreprise, ce qui implique un certain type d'optimisation qui implique des restrictions et des variables de décision qui modélisent les aspects clés de l'entreprise.

Par exemple, si vous dirigez une chaîne de supermarché, votre canal de science des données prévoirait les ventes attendues. Alors, prendrait ces intrants et créerait une stratégie d'inventaire optimisée / Ventes.

Dans cet article, nous allons montrer un exemple d'optimisation linéaire pour sélectionner les vidéos TED à regarder.

Table des matières

  • Introduction à l'optimisation linéaire
  • Le problème: créer une liste de surveillance pour les vidéos TED
  • Paso 1: importer des packages pertinents
  • Paso 2: créer une base de données pour les discussions TED
  • Paso 3: mettre en place le problème d'optimisation linéaire
  • Paso 4: convertir les résultats d'optimisation dans un format interprétable

Introduction à l'optimisation linéaire

Parmi les techniques d'optimisation, L'optimisation linéaire utilisant la méthode Simplex est considérée comme l'une des plus puissantes et a été classée comme l'une des 10 meilleurs algorithmes de la 20.e siècle. En tant que professionnels de la science des données, il est important d'avoir une connaissance pratique de la mise en œuvre de l'optimisation linéaire et cet article de blog illustre sa mise en œuvre à l'aide du package PuLP de Python.

Pour rendre les choses intéressantes et faciles à comprendre, Nous apprendrons cette technique d'optimisation en l'appliquant à un problème pratique quotidien.. Ayant dit cela, ce que nous apprenons est également applicable à une variété de problèmes commerciaux.

Noter: Cet article suppose que vous avez une compréhension de base de la programmation linéaire.. Vous pouvez lire cet article si vous souhaitez revoir le sujet.

Le problème: créer une liste de surveillance pour les vidéos TED

TED est une organisation à but non lucratif dédiée à la diffusion d'idées. TED a commencé en 1984 comme une conférence dans laquelle la technologie a convergé, Divertissement et design, et aujourd'hui, il couvre presque tous les sujets, de la science aux affaires et aux problèmes mondiaux, en plus de 100 langues. Les conférences TED sont animées par des experts passionnés par le travail dans leurs domaines de prédilection et disposant d'une mine d'informations.

À présent, aux fins de cet article de blog, imaginez une situation où l'on est intéressé à créer sa liste de surveillance des conférences TED les plus populaires compte tenu de ses limites (le temps qui peut être alloué pour regarder et le nombre de pourparlers). Nous verrons comment implémenter le programme Python pour nous aider à créer la watchlist de manière optimale.

Le code article Il peut être trouvé ici. Des captures d'écran de mon ordinateur portable Jupyter sont présentées ci-dessous:

image001-2656453

Paso 1: importer des packages pertinents

PuLP est un logiciel open source gratuit écrit en Python. Utilisé pour décrire les problèmes d'optimisation en tant que modèles mathématiques. PuLP peut appeler n'importe lequel des nombreux solveurs externes de LP (Radio-Canada, GLPK, CPLEX, Gurobi, etc.) pour résoudre ce modèle, puis utiliser les commandes python pour manipuler et afficher la solution. Par défaut, Le solveur CoinMP est inclus avec PuLP.

image002-4884036

Paso 2: créer une base de données pour les discussions TED

L'ensemble de données qui contient toutes les conférences TED (2550) est téléchargé depuis Kaggle et lu dans une trame de données. Un sous-ensemble de colonnes pertinentes est sélectionné et l'ensemble de données résultant a les détails suivants: indice de la discussion, parler du nom, Nom de l'événement TED, durée de la conversation (en quelques minutes), nombre de vues (proxy pour la popularité du chat)

image003-5622579

Paso 3: mettre en place le problème d'optimisation linéaire

Commencez par définir l'objet LP. La variable prob est créé pour contenir la formulation du problème.

image004-8906803

Paso 3.1: Créer les variables de décision

Répétez chaque ligne du bloc de données pour créer les variables de décision, pour que chaque conversation devienne une variable de décision. Étant donné que chaque conférence peut ou non être sélectionnée dans le cadre de la liste de surveillance finale, la variable de décision est de nature binaire (1 = sélectionné, 0 = non sélectionné)

image005-4581569

Paso 3.2: définir la fonction objectif

La fonction objectif est la somme de toutes les lignes des vues de chaque exposé. Les vues servent d'indicateur de la popularité du chat, Pour ce que, en substance, nous essayons de maximiser les vues (popularité) choisir les discours appropriés (variables de décision).

image006-7820970

Paso 3.3: définir des contraintes

Dans le problème, avoir 2 restrictions:

une) Nous n'avons qu'un temps total fixe qui peut être alloué pour voir les pourparlers

b) Nous ne voulons pas voir plus qu'un certain nombre d'entretiens pour éviter une surcharge d'informations

image007-4576228

Paso 3.4: Le format définitif (pour la formulation du problème)

Le format final du problème formulé est écrit dans un fichier .lp. Cela listera la fonction objectif, les variables de décision et les contraintes imposées au problème.

image008-3093581

Paso 3.5: l'optimisation réelle

L'optimisation réelle est une seule ligne de code qui appelle ‘prob.solve’. Une déclaration d'assertion est insérée pour déterminer si un résultat optimal a été obtenu pour le problème.

image009-1711112

Paso 4: convertir les résultats d'optimisation dans un format interprétable

Les résultats d'optimisation qui indiquent les variables de décision spécifiques (conversations) qui ont été sélectionnés pour maximiser le résultat doivent être convertis en un format de liste de surveillance, comme il est montré dans ce qui suit:

image010-2530610

image011-7062365

Remarques finales

Cet article fournit un exemple d'utilisation des techniques d'optimisation linéaire disponibles dans Python pour résoudre le problème quotidien de création d'une liste d'affichage vidéo.. Les concepts appris sont également applicables dans des situations commerciales plus complexes impliquant des milliers de variables de décision et de nombreuses contraintes différentes..

Tous les professionnels de la science des données devraient ajouter « techniques d'optimisation » à leur corpus de connaissances afin qu'ils puissent utiliser des analyses avancées pour résoudre des problèmes commerciaux réels et cet article est destiné à vous aider à faire le premier pas dans cette direction..

Karthikeyan-232x300-9590781Karthikeyan Sankaran Il est actuellement directeur de LatentView Analytics, fournir des solutions au carrefour commercial, la technologie et les mathématiques pour les problèmes commerciaux dans un large éventail d'industries. Karthik a près de deux décennies d'expérience dans l'industrie des technologies de l'information et a occupé plusieurs postes dans le domaine de la gestion des données., intelligence d'affaires et analyse.

Cette histoire a été reçue dans le cadre de Concours « Sur un blog » et DataPeaker. L'entrée de Karthikeyan était l'un des gagnants du concours.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.

Haut-parleur de données