
Data science: definição e aplicações práticas
Data science é uma área relativamente recente, em rápido crescimento e multifacetada, aplicada em diversos contextos. Ela usa um conjunto de técnicas avançadas de analytics e algoritmos de modelagem preditiva para extrair insights relevantes dos dados e ajudar a responder questões estratégicas de negócio ou científicas. Data science combina uma ampla gama de habilidades, das técnicas (programação, álgebra linear, estatística e modelagem) às não técnicas (apresentação eficiente e comunicação dos resultados). Além disso, dependendo do setor onde é aplicada, é essencial ter sólido conhecimento do domínio para interpretar corretamente as informações disponíveis e os insights gerados.
Algoritmos de data science podem ser aplicados com sucesso em cenários diversos onde há muito dado sendo ou podendo ser coletado: finanças, varejo, marketing, gestão de projetos, seguros, medicina, educação, manufatura, RH, linguística, sociologia e muito mais. Na prática, qualquer indústria ou ciência pode se beneficiar significativamente ao reunir, organizar, analisar e modelar seus dados.
O que é um caso de uso em data science?
Um caso de uso em data science é uma tarefa concreta do mundo real a ser resolvida com base nos dados disponíveis. No contexto de uma empresa, muitas variáveis são analisadas com técnicas de data science levando em conta as especificidades do setor. Casos de uso podem ser um problema a resolver, uma hipótese a validar ou uma pergunta a responder. Em essência, fazer data science é solucionar casos de uso reais.
Embora o conteúdo de cada caso varie bastante, há alguns pontos em comum que sempre valem atenção:
- Planejamento do caso de uso em data science: definir um objetivo claro e resultados esperados, entender o escopo do trabalho, avaliar os recursos disponíveis, provisionar os dados necessários, avaliar riscos e definir KPIs como medida de sucesso.
- Abordagens mais comuns para resolver casos de uso: previsão, classificação, detecção de padrões e anomalias, recomendações e reconhecimento de imagens.
- Alguns casos de uso são recorrentes em diferentes áreas e você pode recorrer a abordagens semelhantes para resolvê-los, como previsão de churn, segmentação de clientes, detecção de fraudes, sistemas de recomendação e otimização de preços.
Como resolver um case de data science?
A resposta é bastante específica para cada caso, guiada pela estratégia do negócio e pela natureza do estudo. Ainda assim, ajuda ter um roadmap geral para qualquer caso de uso em data science:
- Formular a pergunta certa. Esse primeiro passo é crucial e inclui revisar literatura e estudos de caso existentes, conhecer boas práticas, elaborar teorias relevantes e hipóteses de trabalho e suprir eventuais lacunas de conhecimento do domínio. O resultado deve ser uma pergunta clara a ser respondida no case em questão.
- Coleta de dados. Aqui fazemos o inventário e a coleta dos dados. No mundo real, é comum termos dados não representativos, incompletos, com falhas e desestruturados — longe de uma tabela limpa e pronta para análise. Por isso, é preciso buscar e identificar todas as fontes de dados que possam ser úteis ao tema. Os dados podem estar em arquivos internos, vir de web scraping, de um patrocinador, etc.
- Preparação e tratamento dos dados. Normalmente é a etapa que mais consome tempo e recursos. Avaliamos a qualidade e representatividade do que foi coletado e conduzimos uma exploração inicial. Os dados são limpos, pré-processados, transformados, manipulados e mapeados de seu formato bruto para algo mais adequado.
- Análise e modelagem. Com os dados limpos, analisamos seu estado atual e então os ajustamos a um modelo estatístico preditivo selecionado. Avaliamos a acurácia do modelo e, se não for satisfatória, testamos outras abordagens de modelagem. Repetimos até chegar ao modelo que melhor prevê cenários futuros. Esse processo, assim como os anteriores, tende a ser bastante iterativo.
- Comunicação dos resultados. Em comparação às etapas anteriores, esta exige mais comunicação e soft skills do que programação e técnica. Envolve compartilhar os principais achados e conclusões com a gestão, acionistas e outras partes interessadas. Os insights costumam ser apresentados em relatórios, artigos e slides, indicando possíveis próximos passos.
Casos de uso em data science por indústria
Casos de uso em data science podem estar ligados a praticamente qualquer setor em que um grande volume de dados é ou pode ser acumulado. Neste capítulo, vamos discutir alguns casos típicos nas áreas mais demandadas: logística, saúde e telecomunicações. Alguns dos casos que veremos são interdisciplinares e aparecem com facilidade em várias outras esferas. Isso os torna mais universais e aplicáveis — por isso, vale a pena conhecer a abordagem geral para resolvê-los. Além disso, para cada setor selecionado, apontaremos outros temas que podem ser modelados com métodos de data science.
Data science na saúde
Nos três capítulos anteriores, vimos como métodos de data science ajudam empresas de diferentes setores a aumentar a receita. Quando falamos de saúde, o uso e a interpretação corretos dos dados disponíveis beneficiam não só os profissionais de marketing do setor, mas também possibilitam o diagnóstico oportuno de doenças sérias — e até salvar vidas.
A medicina e os prestadores de serviços de saúde reúnem um volume enorme de dados de múltiplas fontes: prontuários eletrônicos (EHR), dispositivos vestíveis, estudos de pesquisa médica e documentos de faturamento. O uso de técnicas inovadoras de data science e análise de dados vem revolucionando o setor, oferecendo soluções promissoras e impactantes para o futuro. Áreas altamente especializadas, como genética, medicina reprodutiva, oncologia, biotecnologia, radiologia, diagnóstico preditivo e farmacêutica, avançaram a um novo patamar ao liberar todo o potencial dos seus dados.
Para entender melhor como data science agrega valor na medicina, vamos focar em um dos casos de uso mais clássicos.
Caso de uso em saúde: previsão de câncer de mama
Segundo o World Cancer Research Fund International, o câncer de mama é o tipo mais comum entre mulheres e o segundo mais comum no geral. Diagnosticar uma patologia mamária a tempo, benigna ou maligna, é fundamental, pois aumenta significativamente as chances de sucesso do tratamento e a taxa de sobrevivência. É aqui que data science ajuda.
O avanço de métodos de mineração de dados combinado a algoritmos de machine learning tornou possível prever o risco de câncer de mama, detectar potenciais anomalias em estágios iniciais, estimar sua evolução e, assim, definir um plano ideal de combate à doença. Na essência, é um típico problema de classificação em machine learning. A boa notícia é que, como esse tipo de oncologia é bastante comum, muitos estudos aprofundados foram conduzidos no mundo todo e, como resultado, há uma grande quantidade de dados acumulados de pacientes em diversos países.
O principal desafio ao usar esses conjuntos de dados em classificadores é o forte desbalanceamento possível. Por exemplo, quando o desfecho é câncer/não câncer, a probabilidade de patologia (classe minoritária) é bem menor do que a de não ter patologia (classe majoritária). Como efeito, o algoritmo tende a classificar novos casos como não patológicos. Assim, para avaliar melhor a acurácia desses modelos, faz sentido usar o F1-score como métrica, já que ele considera falsos positivos (erro tipo I) e falsos negativos (erro tipo II), em vez de focar apenas nos acertos.
Vamos analisar um conjunto de dados real de câncer de mama de um dos estados dos EUA. As variáveis estão detalhadas na documentação, mas, em resumo, incluem média, erro padrão e maiores valores de atributos de cada imagem digitalizada que mostra os núcleos celulares de uma massa mamária. Cada linha corresponde a uma mulher com tumor maligno ou benigno (ou seja, todas têm algum tipo de tumor). Os atributos incluem raio celular, textura, suavidade, compacidade, concavidade, simetria, etc.
import pandas as pd
cancer_data = pd.read_csv('data.csv')
pd.options.display.max_columns = len(cancer_data)
print(f'Number of entries: {cancer_data.shape[0]:,}\n'
f'Number of features: {cancer_data.shape[1]:,}\n\n'
f'Number of missing values: {cancer_data.isnull().sum().sum()}\n\n'
f'{cancer_data.head(2)}')
Number of entries: 569
Number of features: 33
Number of missing values: 569
id diagnosis radius_mean texture_mean perimeter_mean area_mean \
0 842302 M 17.99 10.38 122.8 1001.0
1 842517 M 20.57 17.77 132.9 1326.0
smoothness_mean compactness_mean concavity_mean concave points_mean \
0 0.11840 0.27760 0.3001 0.14710
1 0.08474 0.07864 0.0869 0.07017
symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se \
0 0.2419 0.07871 1.0950 0.9053 8.589
1 0.1812 0.05667 0.5435 0.7339 3.398
area_se smoothness_se compactness_se concavity_se concave points_se \
0 153.40 0.006399 0.04904 0.05373 0.01587
1 74.08 0.005225 0.01308 0.01860 0.01340
symmetry_se fractal_dimension_se radius_worst texture_worst \
0 0.03003 0.006193 25.38 17.33
1 0.01389 0.003532 24.99 23.41
perimeter_worst area_worst smoothness_worst compactness_worst \
0 184.6 2019.0 0.1622 0.6656
1 158.8 1956.0 0.1238 0.1866
concavity_worst concave points_worst symmetry_worst \
0 0.7119 0.2654 0.4601
1 0.2416 0.1860 0.2750
fractal_dimension_worst Unnamed: 32
0 0.11890 NaN
1 0.08902 NaN
Vamos remover a última coluna, que contém apenas valores ausentes:
cancer_data = cancer_data.drop('Unnamed: 32', axis=1)
Quantas mulheres, em %, têm câncer confirmado (tumor maligno)?
round(cancer_data['diagnosis'].value_counts()*100/len(cancer_data)).convert_dtypes()
B 63
M 37
Name: diagnosis, dtype: Int64
37% das respondentes têm câncer de mama; portanto, o conjunto de dados é relativamente balanceado.
Como os valores da variável diagnosis são categóricos, precisamos codificá-los como números para uso em machine learning. Antes, vamos separar as variáveis preditoras e a variável-alvo diagnosis:
X = cancer_data.iloc[:, 2:32].values
y = cancer_data.iloc[:, 1].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
labelencoder_y = LabelEncoder()
y = labelencoder_y.fit_transform(y)
Agora, vamos criar os conjuntos de treino e teste e padronizar os recursos:
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
Para modelar nossos dados, vamos aplicar os seguintes algoritmos com parâmetros padrão: k-nearest neighbors (KNN) e regressão logística:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# KNN
knn = KNeighborsClassifier()
knn.fit(X_train, y_train)
knn_predictions = knn.predict(X_test)
# Logistic regression
lr = LogisticRegression()
lr.fit(X_train, y_train)
lr_predictions = lr.predict(X_test)
Como vimos, nosso conjunto está razoavelmente balanceado, então podemos usar a métrica de acurácia para identificar o modelo mais preciso:
from sklearn.metrics import accuracy_score
print(f'Accuracy scores:\n'
f'KNN model:\t\t {accuracy_score(y_test, knn_predictions):.3f}\n'
f'Logistic regression model: {accuracy_score(y_test, lr_predictions):.3f}')
Accuracy scores:
KNN model: 0.956
Logistic regression model: 0.974
Com base nos dados, a regressão logística teve o melhor desempenho para prever tumor maligno/benigno em mulheres com alguma patologia mamária.
Como próximos passos, considerando que a regressão logística não tem parâmetros críticos para ajuste, podemos experimentar diferentes estratégias de divisão treino/teste e/ou outras técnicas de modelagem preditiva.
Outros casos comuns de data science na saúde:
- monitoramento em tempo real de dados de wearables
- analytics preditiva
- análise de imagens médicas
- descoberta de fármacos
- pesquisa em genética
- assistentes virtuais
- gestão de dados de pacientes
Data science em transporte e logística
Logística é a organização do processo de entrega de produtos de um ponto a outro, enquanto transporte envolve levar clientes ou mercadorias. Dependendo do perfil da empresa (por exemplo, entrega de refeições, correios, fretes internacionais, companhias aéreas, serviços de táxi ou ônibus), as fontes de dados podem incluir agendas, planilhas de horários, detalhes de rotas, inventário de armazém, relatórios, contratos, acordos, documentos legais e feedback de clientes. Os dados podem ser estruturados ou não, e incluir informações sobre tempos, itinerários, rotas, coordenadas, dados de clientes, detalhes de mercadorias, custos e preços.
A eficiência nos setores de cadeia de suprimentos e transporte nem sempre é direta e depende de inúmeros fatores: trânsito imprevisível, qualidade das rotas, condições climáticas, emergências, variações no preço do combustível, rupturas de estoque, falhas técnicas, atrasos por questões de segurança, regulações e sanções governamentais, entre outros. Além disso, nos últimos anos surgiram muitas novas empresas e a concorrência ficou acirrada. Para acompanhar o mercado e elevar a produtividade operacional, tornou-se obrigatório para empresas de logística/transporte analisar big data e transformá-lo em insights acionáveis.
Como exatamente data science pode ajudar os setores de transporte e logística? Eis uma lista parcial de aplicações:
- rastrear todo o processo de transporte, ponta a ponta,
- tornar as atividades automatizadas e transparentes,
- entregar no prazo,
- otimização de rotas,
- precificação dinâmica,
- manter o nível ideal de estoque,
- proteger bens perecíveis,
- monitorar as condições dos veículos,
- aperfeiçoar redes de produção,
- melhorar o atendimento ao cliente.
Caso de uso em transporte e logística: identificar o posicionamento ideal de táxis
A Uber Technologies Inc., ou Uber, é uma empresa americana que oferece diversos serviços de logística e transporte. Neste estudo de caso, vamos agrupar dados de GPS de corridas Uber para identificar o posicionamento ideal de veículos. Isso pode ser útil para:
- Cada nova solicitação de corrida é atribuída ao cluster mais próximo, e a Uber envia o carro mais próximo daquele cluster até o local do cliente.
- Ao analisar a carga de trabalho dos clusters, opcionalmente por hora ou dia da semana, a Uber pode redistribuir veículos com antecedência e posicioná-los em locais estratégicos com maior demanda.
- Dependendo da relação oferta/demanda em cada cluster, a empresa pode ajustar tarifas dinamicamente.
Usaremos um conjunto de dados do FiveThirtyEight sobre corridas da Uber em Nova York em abril de 2014:
import pandas as pd
uber_data = pd.read_csv('uber-raw-data-apr14.csv')
print(f'Number of trips: {uber_data.shape[0]:,}\n\n'
f'{uber_data.head()}')
Number of trips: 564,516
Date/Time Lat Lon Base
0 4/1/2014 0:11:00 40.7690 -73.9549 B02512
1 4/1/2014 0:17:00 40.7267 -74.0345 B02512
2 4/1/2014 0:21:00 40.7316 -73.9873 B02512
3 4/1/2014 0:28:00 40.7588 -73.9776 B02512
4 4/1/2014 0:33:00 40.7594 -73.9722 B02512
Vamos visualizar de forma esquemática todos os pontos de embarque, lembrando que longitude corresponde ao eixo x e latitude ao eixo y:
import matplotlib.pyplot as plt
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.show()
Para agrupar os dados, vamos usar o algoritmo não supervisionado k-means. A ideia é dividir as amostras em vários grupos de variância semelhante. Essencialmente, ele recebe o número de clusters n_clusters (8 por padrão) e separa os dados. Para descobrir o número ideal de clusters, usamos o método do cotovelo (elbow), que inclui:
- Treinar vários modelos com números diferentes de clusters e coletar os valores de WCSS (Within Cluster Sum of Squares), a soma dos quadrados das distâncias das observações ao centróide mais próximo.
- Plotar os valores de WCSS em função do número de clusters.
- Selecionar o menor número de clusters a partir do qual há uma queda significativa no WCSS.
from sklearn.cluster import KMeans
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, random_state=1)
kmeans.fit(uber_data[['Lat', 'Lon']])
wcss.append(kmeans.inertia_)
plt.figure(figsize=(12, 5))
plt.plot(range(1, 11), wcss)
plt.title('Elbow Method', fontsize=25)
plt.xlabel('Number of clusters', fontsize=18)
plt.ylabel('WCSS', fontsize=18)
plt.xticks(ticks=list(range(1, 11)),
labels=['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
plt.show()

No nosso caso, o número mais apropriado de clusters parece ser 7. Vamos usar esse valor para ajustar um modelo e prever o cluster de cada ponto de embarque. Também ilustraremos os dados novamente, agora com as localizações dos sete centróides:
kmeans = KMeans(n_clusters=7, random_state=1)
kmeans.fit_predict(df[['Lat', 'Lon']])
plt.scatter(uber_data.iloc[:, 2], uber_data.iloc[:, 1])
plt.scatter(kmeans.cluster_centers_[:, 1], kmeans.cluster_centers_[:, 0], s=100, c='lime')
plt.show()
Agora, vamos extrair as coordenadas exatas de todos os centróides e exibí-las separadamente, sem os dados:
centroids = pd.DataFrame(kmeans.cluster_centers_)
centroids.columns = ['Lat', 'Lon']
print(centroids)
plt.scatter(centroids['Lon'], centroids['Lat'])
plt.show()
Lat Lon
0 40.688588 -73.965694
1 40.765423 -73.973165
2 40.788001 -73.879858
3 40.656997 -73.780035
4 40.731074 -73.998644
5 40.700541 -74.201673
6 40.971229 -73.611288
Ficará mais ilustrativo mostrar esses centróides em um mapa de Nova York:
import folium
centroids_values = centroids.values.tolist()
nyc_map = folium.Map(location=[40.79659011772687, -73.87341741832425], zoom_start=50000)
for point in range(0, len(centroids_values)):
folium.Marker(centroids_values[point], popup=centroids_values[point]).add_to(nyc_map)
nyc_map

Com o modelo, podemos prever o cluster mais próximo para qualquer localização em Nova York expressa em coordenadas geográficas. Na prática, isso significa que a Uber enviará o táxi disponível mais próximo, atendendo o cliente mais rápido.
Vamos encontrar o cluster mais próximo do Lincoln Center for the Performing Arts, em Manhattan:
lincoln_center = [(40.7725, -73.9835)]
kmeans.predict(lincoln_center)
array([1])
E para Howard Beach, no Queens:
howard_beach = [(40.6571, -73.8430)]
kmeans.predict(howard_beach)
array([3])
Como próximos passos, podemos aplicar outros algoritmos de clusterização, analisar diferentes recortes (por hora/dia da semana/mês), identificar os clusters mais e menos carregados ou estudar a relação entre os clusters e a variável Base do dataframe.
Outros casos comuns em transporte e logística:
- precificação dinâmica para equilibrar oferta e demanda
- previsão de demanda
- automação de operações manuais
- veículos autônomos
- visibilidade da cadeia de suprimentos
- detecção de avarias
- gestão de armazéns
- análise de sentimento de clientes
- chatbots de atendimento
Data science em telecom
Nas últimas décadas, as tecnologias de telecomunicações evoluíram em ritmo acelerado e entraram em uma nova fase. Hoje estamos cercados por dispositivos eletrônicos de todo tipo, e muitos se tornaram literalmente dependentes da Internet, especialmente de redes sociais e mensageiros. Às vezes, essa dependência é criticada por substituir o contato presencial. Ainda assim, é inegável que as telecoms facilitaram bastante nossas vidas, permitindo conectar pessoas no mundo todo em poucos segundos.
Isso ficou ainda mais evidente durante a pandemia de COVID-19, quando muitas empresas e escolas adotaram trabalho e estudo remotos. Nesse contexto de rápidas mudanças, a qualidade e a estabilidade da conexão digital ganharam importância sem precedentes. O período de isolamento fez com que as pessoas precisassem ligar e mandar mensagens para colegas, familiares e amigos com muito mais frequência. Essas novas tendências levaram a um grande salto no volume de telecomunicações — e, consequentemente, à geração de enormes quantidades de dados no setor.
Aplicar métodos de data science a esses dados acumulados pode ajudar a indústria de telecom de várias formas:
- tornar operações mais eficientes,
- otimizar a rede,
- filtrar spam,
- melhorar transmissões de dados,
- realizar analytics em tempo real,
- desenvolver estratégias de negócio mais eficazes,
- criar campanhas de marketing mais assertivas,
- aumentar a receita.
Vamos explorar em mais detalhe uma tarefa comum em telecom: detectar e filtrar mensagens indesejadas.
Caso de uso em telecom: construção de um filtro de spam
Filtro de spam é uma função vital em canais modernos de comunicação escrita, pois nos protege de e-mails diários tentando aplicar golpes. Tecnicamente, é outro exemplo de problema de classificação: com base em dados históricos, cada nova mensagem é rotulada como ham (mensagem normal), indo direto ao destinatário, ou como spam, sendo bloqueada ou indo para a pasta de spam.
Um algoritmo supervisionado popular para isso é o classificador Naive Bayes. Ele se baseia no teorema homônimo da probabilidade, enquanto o "naive" vem da suposição de que todas as palavras na mensagem são independentes entre si. Essa suposição não é totalmente correta, pois ignora embeddings naturais e contexto. Ainda assim, em muitas tarefas de classificação de texto com poucos dados, essa abordagem funciona bem e faz boas previsões.
Há várias versões do Naive Bayes, cada uma com casos de aplicação: multinomial, Bernoulli, Gaussiano e flexível. Para detecção de spam, o mais indicado é o Naive Bayes multinomial, baseado em contagens discretas de frequência das features categóricas ou contínuas que representam a contagem de palavras por mensagem.
Vamos aplicar o Naive Bayes multinomial no SMS Spam Collection Data Set do UCI Machine Learning Repository.
import pandas as pd
sms_data = pd.read_csv('SMSSpamCollection', sep='\t', header=None, names=['Label', 'SMS'])
print(f'Number of messages: {sms_data.shape[0]:,}\n\n'
f'{sms_data.head()}')
Number of messages: 5,572
Label SMS
0 ham Go until jurong point, crazy.. Available only ...
1 ham Ok lar... Joking wif u oni...
2 spam Free entry in 2 a wkly comp to win FA Cup fina...
3 ham U dun say so early hor... U c already then say...
4 ham Nah I don't think he goes to usf, he lives aro...
São 5.572 mensagens classificadas por humanos. Quantas delas (em %) são spam?
round(sms_data['Label'].value_counts()*100/len(sms_data)).convert_dtypes()
ham 87
spam 13
Name: Label, dtype: Int64
13% dos SMS foram identificados manualmente como spam.
Para preparar os dados para o Naive Bayes multinomial, precisamos concluir estes passos:
- Codificar os rótulos de string para formato numérico. No nosso caso, são binários, então vamos usar 0/1.
- Extrair as variáveis preditoras e a variável-alvo.
- Dividir os dados em treino e teste.
- Vectorizar as strings da coluna SMS dos conjuntos preditores de treino e teste para obter matrizes CSR (compressed sparse row).
O 4º passo precisa de mais detalhes. Criamos um objeto de matriz, ajustamos com o dicionário de vocabulário (todas as palavras únicas de todas as mensagens do conjunto preditor de treino com suas frequências) e então transformamos os conjuntos de treino e teste em matrizes. O resultado são duas matrizes para os preditores de treino e teste: colunas correspondem a cada palavra única das mensagens do treino, linhas às próprias mensagens e os valores são as contagens de frequência por mensagem.
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
# Encoding labels
sms_data = sms_data.replace('ham', 0).replace('spam', 1)
X = sms_data['SMS'].values
y = sms_data['Label'].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Vectorizing strings from the 'SMS' column
cv = CountVectorizer(max_df=0.95)
cv.fit(X_train)
X_train_csr_matrix = cv.transform(X_train)
X_test_csr_matrix = cv.transform(X_test)
Em seguida, vamos treinar um Naive Bayes multinomial com parâmetros padrão e verificar sua acurácia:
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, f1_score
clf = MultinomialNB()
clf.fit(X_train_csr_matrix, y_train)
predictions = clf.predict(X_test_csr_matrix)
print(f'Model accuracy:\n'
f'Accuracy score: {accuracy_score(y_test, predictions):.3f}\n'
f'F1-score: {f1_score(y_test, predictions):.3f}\n')
Model accuracy:
Accuracy score: 0.990
F1-score: 0.962
O resultado é um filtro de spam com alta precisão.
Como próximos passos, podemos testar outras formas de divisão treino/teste, melhorar a vetorização ajustando seus diversos parâmetros (por exemplo, o corte para palavras muito frequentes em spam e ham) e investigar os poucos casos em que o classificador errou para entender o motivo. Também podemos visualizar as palavras mais frequentes em spam e ham usando nuvem de palavras (após limpeza e remoção de stopwords e termos pouco informativos). Por fim, dá para aplicar outros algoritmos de machine ou deep learning (SVM, árvores de decisão, redes neurais) e comparar com Naive Bayes.
Outros casos comuns em telecom:
- segmentação de clientes
- desenvolvimento de produtos
- análise de registros de chamadas
- sistemas de recomendação
- previsão de churn
- marketing direcionado
- detecção de fraudes
- gestão e otimização de redes
- aumento da segurança da rede
- otimização de preços
- previsão de lifetime value do cliente
Estudos de caso em data science: cursos
Até aqui, exploramos em detalhes várias aplicações de data science em diferentes áreas. Se você ficou com vontade de aprender mais casos de uso com dados reais e aplicar seu novo conhecimento e habilidades técnicas para resolver tarefas práticas no seu contexto, estes cursos curtos para iniciantes podem ajudar:
- Case Study: School Budgeting with Machine Learning in Python. Neste curso baseado em um case de competição de machine learning na DrivenData, você explorará um problema de orçamento de distritos escolares e como facilitar e acelerar a comparação de gastos entre escolas. Aplicando técnicas de linguagem natural, você preparará os orçamentos e construirá um modelo para classificar automaticamente seus itens, começando com uma versão simples e avançando gradualmente. Além disso, você poderá ver e analisar a solução do vencedor e as submissões dos demais participantes.
- Analyzing Marketing Campaigns with pandas. Pandas é a biblioteca mais popular do Python, e dominar seu toolkit é fundamental para qualquer cientista de dados. Neste curso prático, você vai consolidar fundamentos de Python e pandas (criar novas colunas, mesclar/fatiar dados, trabalhar com datas, visualizar no matplotlib) usando um dataset fictício de um negócio de assinaturas online. Você vai praticar traduzir perguntas típicas de marketing em métricas mensuráveis: "Como essa campanha performou?", "Por que um canal está com desempenho abaixo do esperado?", "Qual canal traz mais assinantes?", etc.
- Analyzing US Census Data in Python. Você vai aprender a navegar facilmente pelo Censo Decenal e pela American Community Survey anual e extrair diversos dados demográficos e socioeconômicos, como renda domiciliar, deslocamento, raça e estrutura familiar. Usará Python para solicitar dados para diferentes regiões via Census API e pandas para manipulá-los e gerar insights. Além disso, praticará mapeamento com a biblioteca geopandas.
- Case Study: Exploratory Data Analysis in R. Este curso curto é ideal se você já tem noções básicas de manipulação e visualização em R. Você colocará as habilidades em prática com um conjunto de dados real para explorar votos históricos da Assembleia Geral da ONU, analisando tendências de votação entre países, ao longo do tempo e por temas internacionais. O case permite conduzir uma análise exploratória ponta a ponta, ganhar mais prática com dplyr e ggplot2 e aprender novas técnicas.
- Human Resources Analytics: Exploring Employee Data in R. O R é conhecido por ser mais adaptado à análise estatística do que o Python. Neste curso, você vai aproveitar essa vantagem para manipular, visualizar e executar testes estatísticos em uma série de estudos de caso de analytics em RH. Técnicas de data science chegaram ao setor de recursos humanos há relativamente pouco tempo, mas hoje representam uma frente promissora, já que muitas empresas contam cada vez mais com seus departamentos de RH para gerar insights acionáveis com a base de colaboradores.
- Data-Driven Decision Making in SQL. Aqui você aprenderá a usar SQL para apoiar a tomada de decisão e reportar resultados à gestão. O estudo de caso foca uma locadora de filmes online com base de clientes, avaliações, informações de elenco etc. Entre as tarefas, estão consultas SQL para estudar preferências dos clientes, engajamento e evolução de vendas. Você também conhecerá extensões de SQL para processamento analítico online que ajudam a extrair insights de dados multidimensionais complexos.
Quer você busque se tornar um expert em data science, quer só queira aprender habilidades úteis de programação para extrair insights valiosos orientados por dados na sua área, os recursos acima são um ótimo ponto de partida.
Conclusão
Em resumo, neste artigo investigamos o que é data science sob vários ângulos, como ela difere de data analytics, em quais áreas se aplica, o que é um caso de uso e um roadmap geral para resolvê-lo com sucesso. Discutimos como data science pode ser útil em tarefas do mundo real em setores de alta demanda. Ao apresentar diversas aplicações existentes e potenciais, destacamos os casos mais comuns em cada área e mostramos como resolvê-los usando algoritmos de data science e analytics. Se você quer conhecer mais casos de uso em outros setores, confira nossos artigos de use cases em banking, marketing e vendas. Por fim, revisamos cursos on-line úteis para se aprofundar em outros estudos de caso de data science.
Uma última observação curiosa: nenhum dos setores que consideramos aqui é exatamente novo. Alguns, como medicina e vendas, existem há séculos. Ao longo de toda a sua história — muito antes da era da digitalização — os dados desses setores também eram coletados de alguma forma; escritos em livros e documentos, guardados em arquivos e bibliotecas. O que mudou radicalmente nos últimos anos, com o advento de novas tecnologias, foi o entendimento do imenso potencial oculto em qualquer dado e a importância vital de registrá-lo, coletá-lo e armazená-lo de forma adequada. Graças a esses esforços e à melhoria contínua dos sistemas de gestão de dados, tornou-se possível acumular big data em todas as indústrias, abrindo caminho para análises e previsões mais poderosas.





