ciência de dados
Compartilhar no facebook
Compartilhar no twitter
Compartilhar no linkedin
Diurno

Full-Stack em Ciência de Dados?

Nos últimos dias tenho pensado bastante a respeito da concepção coletiva de desenvolver uma excelência em tudo. No contexto de TI dá origem ao famoso desenvolvedor Full-Stack. Ele deve ser tanto o analista como o arquiteto da solução, deve implementar o front em linguagem web ou outra qualquer multiplataforma. Deve implementar o back muito provavelmente em API REST e ainda tem que cuidar das relações com o cliente. Simplesmente uau, tipo um level-up de humano para semi Deus!!! E será que tem full-stack em ciência de dados?

Possivelmente essa pretenção é suscitada pelo mito do super herói que tanto estimamos nas narrativas ficcionais

E, pelo visto parece até ser propagandeada como meta em algumas profissões.

Mas, se você observar bem, esse não é o caso para a maioria das profissões que precisam lidar com circunstâncias complicadas ou inusitadas. Quanto mais no desenvolvimento de software que junta as duas coisas, e pior ainda no contexto de aprendizado de máquina.

A medicina por exemplo já possui 53 especialidades médicas reconhecidas pelo CFM [1]. Já os advogados da OAB atuam em pelo menos em 12 áreas diferentes [2]. É até difícil contar quantas áreas de atuação possuem a engenharia civil e elétrica. Sem levar em conta que algumas outras áreas de certas profissões precisam até criar sub-áreas por causa da especificidade de detalhes envolvidos em sua atuação, como é o caso na TI dos arquitetos de softwares [3].

Note que não se trata aqui de uma obsessão por organização esse detalhamento em áreas e sub-áreas.

Mas, sim de uma genuína caracterização do cenário que cada profissional deve estar preparado para enfrentar de forma a trazer uma conscientização das habilidades que ele deve saber, aquelas que deve dominar e quais as suas responsabilidades perante os demais. Ora pois, é muito difícil jogar bem um jogo sem saber das regras. Assim como é muito difícil fazer alguns procedimentos cirúrgicos com uma especialidade médica apenas !

Quatro papéis

Foi por isso que eu aproveitei a oportunidade da palestra no MLEXP#6 [4] na dti para discorrer sobre uma proposta de atribuições dos quatro papeis relacionados ao aprendizado de máquina e ciência de dados. Tanto os papéis de Analista de Dados, Engenheiro de Dados, Engenheiro de Aprendizado de Máquina e o Cientista de Dados, como as habilidades relacionadas de programação, estatística, Machine Learning, álgebra linear e cálculo multivariável, preparação de dados, visualização e comunicação de dados, engenharia de software e intuição de dados, possuem uma relação de grau de importância conhecida [5].

Mas, como não encontrei uma boa descrição das atribuições de cada papel, resolvi lançar a seguinte proposta.

Sabendo que um Analista de Dados tem como objetivo coletar, interpretar, organizar e expor informações estatísticas por meio de relatórios e dashboards, ele deve:

  • Aplicar os princípios de codificação visual de dados,
  • Ser responsável pela comunicação das informações no geral,
  • Selecionar as melhores ferramentas para visualização e interação com dados,
  • Ajudar na disposição para tomada de decisão baseada em dados,
  • Apresentar informações usando técnicas de visualização de dados,
  • Escrever artigos e revisões com foco no público alvo,

e por isso ele deve “mergulhar” no mundo e expectativas do cliente.

Sabendo que um Engenheiro de Dados tem como objetivo desenvolver um serviço de dados resiliente, escalável, future-proof, ajustado e adequado às necessidades, ele deve:

  • Desenhar o análogo do DER e Diagrama de Fluxo de Dados,
  • Reprocessar dados estruturados e não estruturados, sejam esses datas, variáveis categóricas ou numéricas,
  • Realizar a limpeza e transformações necessárias nos mesmos,
  • Cuidar da prospecção ou mineração de dados,
  • Conduzir os joins, merges e agregações necessárias,
  • Instalar e manter a infraestrutura necessárias como Hadoop,
  • Escrever as funções MapReduce,
  • Gerar e acompanhar os logs,

e por isso ele deve “mergulhar” no tratamento e no escalonamento de dados.

Sabendo que um Engenheiro de Aprendizado de Máquina tem como objetivo a implementação garantindo fácil manutenção de algoritmos de ML apropriados com o devido pipeline, ele deve:

  • Selecionar a abordagem ML conveniente, ou seja, decidir por Regressor ou Classificador,
  • Decidir por aprendizado supervisionado, não supervisionado ou por reforço,
  • selecionar os algoritmos apropriados e ajustar os hiperparâmetros,
  • Decidir pela abordagem de otimização para automatizar a coleção de processos, ou seja, usar CPG vs GPU, usar Threads, PyTorch, TensorFlow ou Theano,
  • Implementar os modelos preditivos e algoritmos de aprendizado de máquina
  • Combinar os modelos através de modelagem por comitê (ensemble)
  • Procurar aprimorar o processo incansavelmente,

e por isso ele deve “mergulhar” na implementação e otimização.

Sabendo que um Cientista de Dados tem como objetivo detalhar a metodologia e analise grandes quantidades de dados em relação a alguma pergunta ou objetivo, ele deve:

  • Buscar as perguntas certas,
  • Transformar metas em entregáveis baseados em dados,
  • Analisar big data para descobrir tendências e padrões,
  • Diagnosticar fontes de dados valiosas,
  • Estabelecer teste de hipóteses,
  • Definir métodos, soluções e estratégias para responder às hipóteses,
  • Identificar, ou criar as características (features),
  • Propor processo de pipeline global,
  • Escolher as métricas para desempenho de modelo e precisão necessária,
  • Decidir sobre a viabilidade e se as aproximações fazem sentido,
  • Escreva artigos e relatórios científicos

e por isso ele deve “mergulhar” no problema e técnicas.

Com tantas atribuições tão específicas e suas características singulares, eu diria que não existe um Full-Stack Data Science!

Existe sim um time Data Science, composto por profissionais que possuem habilidades em comum, porém cada qual focado em um aspecto particular da solução. Ou seja, fazer ciência de dados é como fazer uma cirurgia que depende de várias especialidades da medicina, ou como montar um time para jogar futebol onde cada posição depende mais de certas habilidades do que outra posição.

Assim, finalizo indicando um roadmap proposto por outro colega [5] bem como algumas instituições que realizam certificações quanto às habilidades e por fim espero muito que todos os profissionais de aprendizado de máquina e ciência de dados estejam cientes e espalhem esse aspecto de time para que possamos conquistar cada vez mais melhores resultados para nossos clientes.

 

Referências:

[1] http://www.portalmedico.org.br/resolucoes/CFM/2011/1973_2011.htm

[2] https://www.catho.com.br/educacao/blog/voce-conhece-todas-as-areas-do-direito/

[3] https://iasaglobal.org/itabok-1/engagement-model/role-descriptions/

[4] https://www.meetup.com/meetup-machine-Learning-experience/events/256404285/

[5] https://blog.udacity.com/2014/11/data-science-job-skills.html

[6] http://nirvacana.com/thoughts/2013/07/08/becoming-a-data-scientist/