Como iniciar na carreira de ciência de dados?

Original article was published on Artificial Intelligence on Medium

Como iniciar na carreira de ciência de dados?

O número de dados que produzimos está cada vez maior com o passar dos anos. Junto a isso, há a descoberta de que esses dados podem trazer um valor imenso para o negócio e que podem “opinar” sobre importantes decisões nos mais diversos segmentos, dando origem à frase “data is the new oil”.

Gráfico que demonstra o aumento do número de informações geradas, de 2010 a 2025 — Source

Esses são alguns dos fatores que fazem com que a carreira de ciência de dados esteja entre as mais solicitadas por diversas empresas, como é possível ver seu crescimento através do gráfico abaixo com dados do LinkedIn.

Gráfico que demonstra o crescimento da profissão de acordo com o LinkedIn, de 1990 a 2010 — Source

Neste artigo, irei apresentar um overview sobre essa carreira, abordar alguns dos principais pontos desta área para quem possui interesse em se reinventar como um(a) cientista de dados e dicas e sugestões de alguém que já passou por muito do que está aqui, errou, aprendeu e quer ajudar a fazer desta jornada a mais prazerosa possível para as pessoas interessadas em ingressar nesse navio (Titanic, competição, Kaggle… você vai entender a piadinha mais pra frente 😂)!

Como eu comecei na área?

Hoje atuo com ciência de dados na CI&T. Iniciei na carreira (atuando na profissão dentro de uma empresa, das 8h às 17h) no início de 2019. A parte interessante disso tudo é que, antes mesmo de 2019 começar, já tinha uma história iniciada e meus olhos já brilhavam pela área.

Tudo começou em junho de 2018, em um evento chamado Xamarin Summit, da Microsoft. A empresa em que eu trabalhava no momento era patrocinadora do evento, e possuía direito a alguns slots no evento para levar seus colaboradores para palestrar.

Eu sempre fui envolvida com comunidades, desde minha faculdade. Fazia palestras, publicava artigos, respondia dúvidas em fóruns e contribuía da forma que eu podia, intrinsecamente.

A empresa me chamou para ocupar um desses slots devido à facilidade que eu possuía com a comunicação e por já ter criado alguns aplicativos móveis com a tecnologia que o evento cobria. Eu aceitei o convite sem pestanejar, até porque era a primeira vez que eu iria me apresentar em uma empresa que tanto estimava, e numa conferência tão grande. Lembro até hoje como fiquei.

Sapinho apreensivo — Source

Chegada a hora de escolha do tema e da preparação do conteúdo. Nesse momento, eu era uma desenvolvedora C# pleno, avançando para sênior, que não se envolvia com o mundo mobile há alguns meses e já não estava por dentro das últimas novidades de suas tecnologias e diferentes frameworks. O que levar de diferente e que possa agregar algo para o público que ia me assistir?

Foi aí que, depois de muita pesquisa, conheci o assunto de chatbots, processamento de linguagem natural e speech to text/text to speech.Esse tópico é interessante? Deixa eu ler… MUITO! Esse tópico já está presente na grade? Hm…Eureka!

Imagem com informações do site Xamarin Summit 2018 — Arquivo pessoal

Comecei a estruturar a palestra. Encontrei um tutorial na internet sobre API’s cognitivas, comecei a chamá-las dentro do aplicativo que desenvolvi e o chatbot foi criando forma. Era época de copa do mundo, então desenvolvi um chatbot para o salão de beleza da Rochelle, mãe do Chris de Todo Mundo Odeia o Chris, e quem falava com ela era o Neymar, procurando um tratamento para queda (🥳).

No dia do evento deu tudo certo! Palestrei sobre o assunto e muitas pessoas falaram sobre o tema e gostaram muito! Nele, conheci muitas pessoas que eu admirava e que possuíam o título de MVP (Microsoft Most Valuable Professional) que eu nem imaginava que conquistaria um ano depois.

Uma foto minha palestrando no evento Xamarin Summit — Arquivo pessoal

Fui para casa extremamente feliz, e disposta a continuar estudando a área. A cada dia que passava, eu me interessava ainda mais por entender o que estava por trás daquelas API’s que eu havia chamado dentro do meu aplicativo — como elas retornavam aquelas informações de acurácia, de treinamento, e suas métricas. Comecei a estudar a matemática, a estatística, os modelos de machine learning e tudo que tange ciência de dados, criando minhas próprias API’s e entendo o que tinha por trás daquela caixinha preta.

Em setembro de 2018, conversei com o CEO da empresa que eu estava na época sobre a vontade de criar uma área de Inteligência Artificial na empresa. Mostrei a ele como as aplicações poderiam trazer valiosos insights para o negócio, e tudo o que eu havia estudado até aquele momento. Eu continuava como desenvolvedora profissionalmente, mas todos os dias quando chegava em casa me afundava em uma outra ciência. Eu queria focar naquilo, e estava decidida.

Essa área foi iniciada após eu conseguir provar o valor que ela possuía e me disponibilizar para formar colaboradores para atuarem em projetos que envolviam dados. Criei um plano de estudos, selecionei com carinho os conteúdos que deveriam aprender para conseguir colocar a mão na massa, coloquei várias dicas para evitar que passassem pelas várias dores que o autodidatismo me permitiu passar — e que valorizo até hoje — mas tornam o caminho mais tortuoso.

E assim nasceu a área que tanto sonhei. Nosso primeiro projeto chegou, e eu e mais 4 pessoas estávamos responsáveis para seu sucesso acontecer. Me vi feliz e realizada, pois atuava como líder da primeira área de ciência de dados da empresa e conseguia colocar em prática aquilo que tanto tempo de estudo me agregou, e formar pessoas a partir da minha pouca experiência.

Tive outras experiências com ciência de dados, iniciei em novos desafios e hoje sigo procurando impactar negócios e pessoas fazendo os dados falarem.

Comecei pela matemática? Não! Comecei pelo fim. Eu tinha um objetivo e fui destrinchando ele. Iniciei com API’s, e depois fui, de pouco em pouco, entendendo o que havia por trás delas. Isso, na minha opinião, deixou as coisas mais fáceis, porque minha formação era principalmente de engenharia de software, e não de matemática e estatística.

O que é Data Science?

Antes de iniciarmos a lista de pontos interessantes para entrar na área de ciência de dados, é importante definir o que é essa área.

A ciência de dados, de forma genérica, é a área que estuda os dados e tira deles informações relevantes. É através dela que hipóteses são testadas e validadas (quando possuímos um problema específico para ser resolvido com os dados) ou que a análise exploratória acontece (quando temos uma grande quantidade de dados dispersos e tiraremos conclusões e correlações deles).

O maior objetivo dessa área é extrair tais dados, interpretá-los e apresentá-los de forma eficaz para o usuário final, nivelando a linguagem conforme o público com o qual se comunica (saber apresentar para pessoas técnicas e pessoas que não possuem conhecimento no assunto).

O guarda-chuva da ciência de dados

Com o crescimento da área, algumas das vertentes do pipeline de ciência de dados tomaram grandes proporções e necessitaram de profissionais específicos para cuidarem de seu correto andamento. Tais profissionais entendem do pipeline como um todo com uma visão generalista mas veem cada uma das áreas, de acordo com sua preferência, com um olhar especialista. O diagrama abaixo representa uma ideia disso (que pode variar):

Imagem contendo algumas skills relacionadas com dados e as profissões Data Analyst, Machine Learning Engineer, Data Engineer e Data Scientist com a necessidade de cada uma delas — Source
  • Analista de dados: especialistas em relatórios e visualização, são profissionais que auxiliam na tomada de decisão a partir das informações que geram e comunicam. Analisam as informações obtidas dos processos e trazem relações entre elas, traduzindo-as para o uso no dia-a-dia. Possuem um maior foco em responder perguntas e gerar suas respostas de forma rápida e precisa.
  • Engenheiro(a) de dados: profissional focado(a) na extração dos dados e tratamento dos mesmos. Se especializa no processo de obtenção dos dados, das mais diversas fontes, e é capaz de tratá-los a fim de garantir que os modelos de machine learning recebam os inputs necessários para fazer as predições corretas. São responsáveis pela modelagem dos dados, pela mineração e paralelismo, utilizando frequentemente ferramentas de ETL (Extract, Transform e Load) para esse processo.
  • Machine Learning Engineer: aprimoram a capacidade e desempenho dos modelos preditivos criados e são responsáveis por garantir que tais modelos terão um bom desempenho quando em ambiente de produção. Possuem grande conhecimento em algoritmos de machine learning e em arquitetura, desde a modelagem até o monitoramento, garantindo escalabilidade e um pipeline de Continuous Integration/Continuous Delivery consistente.
  • Cientista de dados: responsável desde o processo de concepção do problema, auxiliando a área de negócio em suas decisões e no caminho que deve ser seguido com autonomia e criatividade, até a entrega da solução; emprega métodos de aprendizado de máquina para a preparação de modelos preditivos, explorando oportunidades e tendências. É a pessoa que, de todas as áreas, possui o maior entendimento do processo de ponta a ponta, sendo capaz de construir modelos preditivos e apresentá-los para a área de negócio de forma compreensível sem perder sua base científica. Possui grande embasamento matemático e estatístico.
  • Estatista: atua principalmente junto do cientista de dados com o conhecimento estatístico que possui para a criação e gerenciamento de modelos preditivos. Tem a habilidade de utilizar teorias, probabilidade e matemática para transformar problemas cotidianos e encontrar suas soluções. É o(a) profissional que menos tem contato com engenharia de software, e mais tem contato com estatística e álgebra linear.

Obs.: não tente se aprofundar em tudo. Tentar ser um unicórnio (🦄), que tem todas as skills, não vai dar certo — o mundo é muito grande e sempre tem algo novo saindo!

Alinhando expectativas

O erro mais comum de alguém que está entrando em ciência de dados é acreditar que irá apenas criar modelos de machine learning.

Imagem com os dizeres em inglês, traduzindo: “O que você quer dizer com limpar todos esses dados? Isso foi vendido para mim como o trabalho mais atraente do século XXI” — Source

A criação de modelos de machine learning acontece sim, dependendo principalmente da subárea que você escolha se aprofundar. No entanto, mesmo que você opte por uma área que, majoritariamente, cria modelos, você não fará isso 100% do tempo, porque:

  1. Essa é uma área que as empresas ainda estão entendendo como implantar, então você provavelmente fará muitas coisas que não tangem apenas seu papel;
  2. Você pode vir a encontrar dados que estão de forma totalmente desorganizada, ou até não ter dados suficientes. Precisará tratá-los, limpá-los, uniformizá-los. Se você não tiver uma boa base de dados para trabalhar — e não tiver noções de feature engineering (transformar dados não tratados em um dado de valor que represente melhor o problema para os modelos preditivos)—você não terá um modelo que funciona adequadamente, e pode se frustrar.

Defendo a ideia de que ciência de dados é sobre um pipeline como um todo, e não apenas algoritmos.

A lista que vem tem bastante coisa. Bastante mesmo! Não tente absorver tudo de uma vez. Eu mesma estou me aperfeiçoando em cada um dos pontos e não me considero fluente em todos, até porque nossa área é a que mais se atualiza e todos os dias temos coisas novas para estudar.

Gatinho branco de olhos fechados recebendo uma massagem na face por bracinhos de esqueleto — Source

Faça do processo de aprendizado, algo prazeroso!

A lista

1) Análise e entendimento do negócio

Antes mesmo de mais nada, é importante sempre lembrar que tecnologia é meio, e não fim. No final do dia, o que realmente trará valor serão os resultados gerados a partir das implementações que fazemos, quer elas envolvam ferramenta a, b ou c.

O trabalho junto ao business vai acontecer, porque muitas vezes tem-se um problema para se solucionar que parece turno, e é necessário melhor entendimento — às vezes, nem problemas se tem. Skills importantes são pensamento crítico, capacidade de resolver problemas e senso de urgência.

E como conseguir isso, quando se deseja entrar na área e não se trabalha nela e em nenhum projeto para colocar isso em prática? O Kaggle possui uma série de projetos que você pode utilizar como ponto de partida para exercitar sua capacidade de organização de pensamento e traçar uma linha de raciocínio que possibilite a resolução do problema. Além disso, há várias competições no site, que possibilita que você de fato simule um cenário onde você precisa ter pensamento veloz.

Outra dica é utilizar notebooks (como Jupyter e Colab) para documentar sua linha de raciocínio e simular como apresentaria as informações que coletou, desde seu início até suas conclusões. Isso pode ser útil mais pra frente, quando você for criar seu portfólio.

📌 Kaggle

📌 Jupyter Notebook

📌 Google Colab

2) Linguagens e Programação

Você vai sim, precisar programar. Em todas as subáreas a programação é importante, o que difere é a linguagem que uma utiliza mais do que a outra.

Conhecimento em linguagens como Python e R é importante. Você não precisa ser especialista em ambas; sugiro que escolha uma para se especializar e saiba seus limites e as diferenças em comparação com a outra. Eu, por exemplo, escolhi me especializar em Python e ele solucionou meus problemas em todos os aspectos até hoje, por ter suporte tanto para construção de algoritmos quanto para expor suas API’s na web (com Flask ou Django).

Há outras linguagens, como Java e C, que são utilizadas em vez de Python e R em alguns projetos. Defendo que, uma vez que você conhece programação, o que mais difere entre uma linguagem e outra é a sintaxe e a maneira de implementação, mas a lógica para resolver o problema é a chave.

Banco de dados também será muito utilizado! Bancos relacionais e não relacionais podem aparecer pelo seu caminho. Por isso, é importante ter noções de SQL (como Microsoft SQL Server), NoSQL (como MongoDB), Spark e Scala e ir avançando para Hadoop, Hive, Kafka e MapReduce para cobrir soluções em Big Data e conseguir participar de discussões sobre esse tipo de assunto.

Ainda sobre programação, não esquecer de pontos como escalabilidade, testes, código limpo, versionamento de código e boas práticas de desenvolvimento é crucial. Esse tipo de preocupação fez parte dos meus anos como desenvolvedora web e continuam presentes mesmo como cientista de dados.

📌 Repositório de Web Scrapping, no meu github

📌 Python para Zumbis, do Fernando Masanori

📌 Python Fluente, do Luciano Ramalho

📌 Cursos da edX

📌 A Beginner’s Guide to R, livro gratuito por pouco tempo no site da Springer (corre baixar, Forrest, corre!)

📌 MongoDB University

📌 Blog com conteúdos do básico ao avançado sobre SQL, do Fabiano Amorim.

📌 Artigo com dicas sobre SQL, da Dani Monteiro

📌 Playlist sobre SQL Server, do Bóson Treinamentos

📌 Código Limpo, do Robert C. Martin

📌 Documentação do Docker (para DevOps e escalabilidade)

3) Machine Learning

Existem muitos modelos de machine learning, vários já pré-treinados com diversos dados e que já estão prontos para utilização.

É importante entender aqui para que servem esses modelos e os tipos aos quais se enquadram, por exemplo:

  • Supervisionado: os dados de treinamento que estão no dataset de treino do algoritmo possuem as categorias (chamadas de labels) do output do modelo. Basicamente, nós mostramos onde queremos chegar. Exemplos: K-Nearest Neighbors, Linear and Logistic Regression, Support Vector Machines (SVM’s), Decision Trees and Random Forests, Neural Networks.
  • Não-supervisionado: os dados de treinamento não estão no dataset de treino e o sistema tentará chegar ao output através de propriedades semelhantes entre cada um dos dados, sem guia ou auxílio. Exemplos: K-Means, Hierarchical Cluster Analysis (HCA), Principal Component Analysis (PCA).
  • Semi-supervisionado: os dados de treinamento que estão no dataset de treino do algoritmo possuem parcialmente as categorias.
  • Por reforço: neste tipo de aprendizagem, o modelo é chamado de agente e realiza ações em busca de recompensas, tendo como objetivo sempre aumentar esse número. É como adestrar seu cachorro e dar um biscoito a ele sempre que ele deita, por exemplo.

Adicionei abaixo uma lista com exemplos dos vários modelos existentes, cada um sendo utilizado para uma abordagem específica.

Exemplos de algoritmos de Machine Learning — Source

Entender modelos de regressão, de classificação, de clusterização é bem interessante e conseguirá te diferenciar quando for procurar uma oportunidade no mercado.

Bibliotecas e frameworks que podem estar presentes no seu dia a dia (voltadas para Python):

Extração dos dados e pré-processamento (foco em texto)

📌 Spacy

📌 NLTK

📌 Beautiful Soup

📌 Selenium

Transformação:

📌 Pandas

📌 Numpy

Modelagem:

📌 Tensorflow

📌 Keras (incorporado no Tensorflow 2.0)

📌 Scikit Learn

📌 PyTorch

Para áudio:

📌 LibROSA

Para imagem:

📌 OpenCV

Ah, já ia me esquecendo: GPU. Mano do céu, isso salva vidas — e tempo! Com a GPU, você consegue ter alta capacidade de processamento e treinar seus algoritmos mais rápido. Você talvez já ouviu falar dela ao ver sobre PC’s gamers, e agora consegue visualizar mais uma aplicação sua! Saiba mais sobre ela aqui.

Sempre que quero ver mais sobre Machine Learning e suas aplicações, acesso o Towards Data Science. Esse site é como se fosse uma bíblia para nós, por ter artigos valiosos das mais diversas tecnologias do universo de dados. Já salva nos favoritos (⭐️).

4) Datasets

Os datasets são o conjunto de dados que utilizaremos para treino e teste dos nossos modelos. É comum que eles estejam em formato .csv, separados principalmente por vírgulas, mas se seu problema é com classificação de imagens o formato será diferente.

Ponto importante: não considere que o dataset chegará perfeito para você (😅).

O que quero dizer aqui é que os dados podem vir com várias anomalias da fonte. Podem estar com um tipo de separador numa parte do documento e com outro tipo em outra, podem estar com campos faltantes que são cruciais para o modelo, ou você pode precisar obter um outro dado a partir dos que foram recebidos por ser uma variável importante. Nesse último caso entra o feature engineering que comentei no início do artigo.

Alguns dos pontos que precisa-se ter atenção quanto a datasets são:

  • Quantidade insuficiente de dados. Reconhecimento de padrões em imagens, por exemplo, demandam milhões de exemplos.
  • Número de casos observados equilibrado. Imagine que você tem um sistema que distinguirá sentimentos positivos de negativos. Se você tiver 9 linhas do dataset com exemplos de sentimentos positivos e apenas 1 linha com um sentimento negativo, você estará enviesando seu modelo a ter um output positivo, devido à quantidade maior de exemplos positivos que o treinou.
  • Qualidade ruim dos dados. Exemplos são dados cheios de caracteres insignificantes, vários espaços em branco, e outros tipos de ruído que interferem no reconhecimento de padrões do modelo.

Datasets públicos podem ser encontrados em:

📌 Datasets do Kaggle

📌 Pesquisa de datasets da Google

📌 Repositório do awesomedata no GitHub

E pesquisando por “public datasets” no Google! 🤓

Captura de tela de pesquisa no Google por “public datasets”