View on GitHub

manual-da-engenharia-para-codar

Este é o manual para compromissos de "código com" a engenharia.

Visão e Formulação do Problema

Antes de iniciar uma investigação de ciência de dados, é necessário definir uma declaração de problema que a equipe de ciência de dados possa explorar; essa declaração de problema pode ter uma influência significativa na probabilidade de sucesso do projeto.

Metas de Visão

As principais metas do processo de visão são:

O processo de visão geralmente envolve uma série de sessões de ‘visão’ onde a equipe de ciência de dados trabalha junto com especialistas no assunto para formular o problema de tal maneira que haja uma compreensão compartilhada do domínio do problema, um objetivo claro e uma abordagem predefinida para avaliar uma solução potencial.

Compreensão do Domínio do Problema

Geralmente, antes de definir o escopo de um projeto para uma investigação de ciência de dados, devemos primeiro compreender o domínio do problema:

No entanto, estabelecer essa compreensão pode ser difícil, especialmente para aqueles que não estão familiarizados com o domínio do problema. Para facilitar esse processo, podemos abordar problemas de maneira estruturada, seguindo as etapas a seguir:

Depois que uma compreensão do domínio do problema for estabelecida, pode ser necessário decompor o problema geral em partes menores e significativas para manter o foco da equipe e garantir um escopo de projeto realista dentro do prazo estabelecido.

Ouvindo o Usuário Final

Esses problemas são complexos e requerem compreensão de uma variedade de perspectivas. Não é incomum que as partes interessadas não sejam os usuários finais do framework de solução. Nesses casos, ouvir os usuários finais reais é fundamental para o sucesso do projeto.

As seguintes perguntas podem ajudar a orientar a discussão na compreensão das perspectivas das partes interessadas:

Orientações para a Visão

Durante as sessões de visão, o seguinte pode ser útil para orientar a discussão. Muitos desses pontos são retirados diretamente, ou adaptados de, [1] e [2].

Formulação do Problema

  1. Defina o objetivo em termos de negócios.
  2. Como a solução será usada?
  3. Quais são as soluções atuais/truques (se houver)? Que trabalho foi feito nessa área até agora? Essa solução precisa se encaixar em um sistema existente?
  4. Como o desempenho deve ser medido?
  5. A medida de desempenho está alinhada com o objetivo de negócios?
  6. Qual seria o desempenho mínimo necessário para atingir o objetivo de negócios?
  7. Existem restrições conhecidas em relação a requisitos não funcionais que precisariam ser considerados? (por exemplo, tempos de computação)
  8. Estruture esse problema (supervisionado/não supervisionado, online/offline, etc.)
  9. Existe experiência humana disponível?
  10. Como você resolveria o problema manualmente?
  11. Existem restrições quanto ao tipo de abordagens que podem ser usadas? (por exemplo, a solução precisa ser completamente explicável?)
  12. Liste as suposições que você ou outros fizeram até agora. Verifique essas suposições, se possível.
  13. Defina algumas declarações de hipóteses iniciais a serem exploradas.
  14. Destaque e discuta quaisquer preocupações de AI responsável, se apropriado.

Fluxo de Trabalho

  1. Quais habilidades de ciência de dados existem na organização?
  2. Quantos cientistas/engenheiros de dados estariam disponíveis para trabalhar neste projeto? Em que capacidade esses recursos estariam disponíveis (tempo integral, meio período, etc.)?
  3. Como são as práticas atuais de fluxo de trabalho da equipe? Eles trabalham na nuvem/local? Em cadernos/IDE? O controle de versão é usado?
  4. Como os dados, experimentos e modelos são rastreados atualmente?
  5. A equipe utiliza uma metodologia Ágil? Como o trabalho é rastreado?
  6. Existem atualmente soluções de ML em produção? Quem é responsável por manter essas soluções?
  7. Quem seria responsável por manter uma solução produzida durante este projeto?
  8. Existem restrições quanto às ferramentas que devem/não devem ser usadas?

Exemplo - um problema de mecanismo de recomendação

Para ilustrar como o processo acima pode ser aplicado a um domínio de problema tangível, considere, como exemplo, que estamos olhando para implementar um mecanismo de recomendação para uma loja de roupas. Este exemplo foi, em parte, inspirado em [3].

Frequentemente, o objetivo pode ser apresentado de forma simples, como “aumentar as vendas”. No entanto, embora este seja o principal objetivo, podemos nos beneficiar sendo mais específicos aqui. Suponha que implantamos uma solução em novembro e observamos um aumento nas vendas em dezembro; como poderíamos distinguir quanto disso se deve ao novo mecanismo de recomendação, em oposição ao fato de dezembro ser uma temporada de compras de pico?

Um objetivo melhor, neste caso, seria “aumentar as vendas adicionais, apresentando ao cliente itens que eles não teriam comprado sem a recomendação”. Aqui, os inputs que podemos controlar são a escolha dos itens apresentados a cada cliente e a ordem em que são exibidos, considerando fatores como com que frequência devem ser alterados, sazonalidade, etc.

Os dados necessários para avaliar uma solução potencial neste caso seriam quais recomendações resultaram em novas vendas e uma estimativa da probabilidade de um cliente comprar um item específico sem uma recomendação. Observe que, embora esses dados também possam ser usados para construir um mecanismo de recomendação, é improvável que esses dados estejam disponíveis antes que um sistema de recomendação tenha sido implementado. Portanto, é provável que tenhamos que usar uma fonte de dados alternativa para construir o modelo.

Podemos ter uma ideia inicial de como abordar uma solução para esse problema considerando como ele seria resolvido por um especialista no assunto. Pensando em como um estilista pessoal pode fazer uma recomendação, é provável que eles recomendem itens com base em um ou mais dos seguintes critérios:

Embora esta lista não seja exaustiva, ela fornece uma boa indicação dos dados que provavelmente serão úteis para nós:

Então, poderíamos usar esses dados para explorar:

que podem ser usados para criar e classificar recomendações. Dependendo do escopo do projeto e dos dados disponíveis, uma ou mais dessas áreas podem ser selecionadas para criar hipóteses a serem exploradas pela equipe de ciência de dados. Alguns exemplos de hipóteses podem ser:

Próximos Passos

Para garantir clareza e alinhamento, é útil resumir as descobertas da etapa de concepção, concentrando-se em cenários detalhados propostos, suposições e decisões acordadas, bem como próximos passos.

Sugerimos confirmar que você tem acesso a todos os recursos necessários (incluindo dados) como próximo passo antes de prosseguir com as oficinas de exploração de dados.

Aqui estão os links para o modelo de documento de saída e algumas perguntas que podem ser úteis para confirmar o acesso aos recursos.

Referências

Muitas das ideias apresentadas aqui - e muito mais - foram inspiradas por e podem ser encontradas nos seguintes recursos, todos altamente recomendados.

  1. Lista de Verificação de Projetos de Aprendizado de Máquina de Aurélien Géron
  2. Lista de Verificação de Projetos de Dados da Fast.ai
  3. Designing great data products. Jeremy Howard, Margit Zwemer e Mike Loukides