Introdução à otimização linear

Conteúdo

Introdução

Organizações usam ciência de dados e aprendizado de máquina para resolver uma variedade de problemas de negócios hoje. Para criar impacto real nos negócios, uma consideração importante é fazer a ponte entre canalizar a ciência de dados e canalizar a tomada de decisões empresariais..

O resultado da canalização da ciência de dados são as previsões, padrões e insights de dados (geralmente sem qualquer noção de restrições), mas isso por si só é insuficiente para os stakeholders da empresa tomar decisões. Os resultados da ciência de dados devem ser incorporados ao processo de tomada de decisão empresarial, o que implica algum tipo de otimização que envolve restrições e variáveis de decisão que modelam os principais aspectos do negócio.

Por exemplo, se você está executando uma cadeia de supermercados, seu canal de ciência de dados previria vendas esperadas. Mais tarde, pegaria essas entradas e criaria uma estratégia de inventário otimizada / vendas.

Neste artigo, vamos mostrar um exemplo de otimização linear para selecionar quais vídeos TED assistir.

Tabela de conteúdo

  • Introdução à otimização linear
  • O problema: criar a lista de observação para vídeos TED
  • Paso 1: importar pacotes relevantes
  • Paso 2: cria uma estrutura de dados para palestras TED
  • Paso 3: configurar o problema de otimização linear
  • Paso 4: converter resultados de otimização em um formato interpretativo

Introdução à otimização linear

Entre as técnicas de otimização, A otimização linear usando o método Simplex é considerada uma das mais poderosas e foi classificada como uma das 10 melhores algoritmos do 20.º século. Como profissionais de ciência de dados, é importante ter conhecimento prático sobre a implementação da otimização linear e este post no blog é para ilustrar sua implementação usando o pacote PuLP da Python.

Para tornar as coisas interessantes e fáceis de entender, aprenderemos essa técnica de otimização aplicando-a a um problema prático do dia-a-dia. Dito isto, o que aprendemos também é aplicável a uma variedade de problemas de negócios.

Observação: Este artigo assume que você tem conhecimento básico de programação linear. você pode ler este artigo se você quiser rever o tópico.

O problema: criar a lista de observação para vídeos TED

TED é uma organização sem fins lucrativos dedicada a espalhar ideias. TED começou em 1984 como uma conferência em que a tecnologia convergiu, Entretenimento e Design, e hoje abrange quase todos os tópicos, da ciência para questões empresariais e globais, em mais de 100 línguas. As palestras ted são ministradas por especialistas que são apaixonados por trabalhar nos domínios que escolhem e têm uma riqueza de informações..

Agora, para o propósito deste post blog, imagine uma situação em que se está interessado em criar sua lista de observação das palestras TED mais populares dadas suas limitações (tempo que pode ser alocado para visualização e o número de conversas). Veremos como implementar o programa Python para nos ajudar a criar a lista de observação da maneira ideal.

O código do item pode ser encontrado aqui. Capturas de tela do meu notebook Jupyter são mostradas abaixo:

image001-2656453

Paso 1: importar pacotes relevantes

PuLP é um software de código aberto gratuito escrito em Python. Usado para descrever problemas de otimização como modelos matemáticos. celulose pode chamar qualquer um dos numerosos lp resolvers externos (Cbc, GLPK, CPLEX, Gurobi, etc.) para resolver este modelo e, em seguida, usar comandos Python para manipular e exibir a solução. Por padrão, Solver CoinMP é incluído com PuLP.

imagem002-4884036

Paso 2: cria uma estrutura de dados para palestras TED

O conjunto de dados que tem todas as palestras TED (2550) é baixado de Kaggle e lido em um quadro de dados. Um subconjunto de colunas relevantes é selecionado e o conjunto de dados resultante tem os seguintes detalhes: índice de la charla, nome da conversa, Nome do evento TED, duração da conversa (em minutos), número de visualizações (proxy para popularidade do chat)

imagem003-5622579

Paso 3: configurar o problema de otimização linear

Comece definindo o objeto LP. o variável prob se crea para contener la formulación del problema.

imagem004-8906803

Paso 3.1: Criar as variáveis de decisão

repetir cada linha no quadro de dados para criar as variáveis de decisão, para que cada conversa se torne uma variável de decisão. Uma vez que cada palestra pode ser selecionada ou não como parte da lista final de observação, a variável de decisão é binária na natureza (1 = selecionado, 0 = não selecionado)

imagem005-4581569

Paso 3.2: definir a função alvo

a função objetiva é a soma de todas as linhas dos pontos de vista de cada palestra. As opiniões servem como um indicador da popularidade da palestra, pelo que, em essência, estamos tentando maximizar as visualizações (popularidade) seleção de palestras apropriadas (variáveis de decisão).

imagem006-7820970

Paso 3.3: definir restrições

No problema, tenho 2 restrições:

uma) Nós só temos uma quantidade fixa de tempo total que pode ser alocado para ver as negociações

b) Não queremos ver mais do que um certo número de conversas para evitar a sobrecarga de informações

imagem007-4576228

Paso 3.4: O formato final (para a formulação do problema)

o formato final do problema formulado é escrito em um arquivo .lp. isso irá listar a função alvo, as variáveis de decisão e restrições impostas ao problema.

imagem008-3093581

Paso 3.5: otimização real

A otimização real é uma única linha de código que chama de "prob.solve". Uma declaração de afirmação é inserida para determinar se um resultado ideal foi obtido para o problema.

imagem009-1711112

Paso 4: converter resultados de otimização em um formato interpretativo

Resultados de otimização que indicam variáveis de decisão específicas (Conversas) que foram selecionados para maximizar o resultado devem ser convertidos em um formato de lista de observação, como é mostrado a seguir:

imagem010-2530610

imagem011-7062365

Notas finais

Este artigo fornece um exemplo de como usar as técnicas de otimização linear disponíveis no Python para resolver o problema diário de criar uma lista de visualização de vídeo.. Os conceitos aprendidos também são aplicáveis em situações de negócios mais complexas envolvendo milhares de variáveis de decisão e muitas restrições diferentes..

Todos os profissionais de ciência de dados devem adicionar “técnicas de otimização” ao seu corpo de conhecimento para que eles possam usar análises avançadas para resolver problemas de negócios do mundo real e este artigo é destinado a ajudá-lo a dar o primeiro passo nessa direção..

karthikeyan-232x300-9590781Karthikeyan Sankaran Atualmente é diretor da LatentView Analytics, fornecendo soluções na intersecção de negócios, tecnologia e matemática para problemas de negócios em uma ampla gama de indústrias. Karthik tem quase duas décadas de experiência na indústria de tecnologia da informação e trabalhou em múltiplas funções no espaço de gerenciamento de dados., inteligência de negócios e análises.

Esta história foi recebida como parte de Concurso “Blogathon” em DataPeaker. A entrada de Karthikeyan foi uma das vencedoras do concurso..

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.