A visualização de dados é a representação gráfica de dados por meio de elementos visuais, como gráficos, diagramas e dashboards. Essa representação ajuda a tornar dados complexos compreensíveis para stakeholders ou para um público não técnico, que pode usá-los na tomada de decisões.
No aprendizado de máquina (ML), a visualização vai além de criar um dashboard ou um relatório. Ela faz parte do trabalho de criar, depurar e aprimorar os modelos de ML. Com ela, é possível examinar a fundo os dados antes do treinamento, monitorar o que acontece durante esse processo e diagnosticar o que deu certo ou errado depois da avaliação.O foco está menos na apresentação e mais na investigação.
Na prática, apresentação e investigação se sobrepõem. Um bom profissional de aprendizado de máquina ou de ciência de dados usa a visualização de dados para si mesmo, ao detectar problemas e otimizar modelos, e para os outros, ao explicar as descobertas e gerar confiança nos resultados do modelo.
A visualização de dados no aprendizado de máquina afeta diretamente a qualidade dos seus modelos, as decisões que você toma e a clareza com que outras pessoas entendem o seu trabalho.
A visualização está presente em todo o fluxo de trabalho de ML, desde o momento em que você recebe os dados brutos até a avaliação final do seu modelo.Veja onde ela aparece em cada etapa. As técnicas de visualização mencionadas em cada etapa serão abordadas em detalhes nas seções seguintes.
Antes de começar qualquer análise, você precisa entender com o que está trabalhando. Isso significa verificar valores ausentes, tipos de dados inconsistentes e registros duplicados, porque qualquer problema estrutural nos dados nessa etapa vai comprometer silenciosamente tudo o que vier depois. Mapas de calor de valores ausentes, gráficos de distribuição de tipos de dados e gráficos de frequência de registros oferecem um panorama rápido e confiável da integridade dos dados antes que você invista tempo em construir algo sobre essa base.
A análise exploratória de dados ajuda a entender a estrutura, a distribuição e as relações no conjunto de dados antes de construir qualquer coisa: histogramas, gráficos de dispersão, matrizes de correlação, diagramas de caixa e gráficos de pares revelam padrões, anomalias e relações que os números brutos, por si sós, não mostram. A EDA é iterativa por natureza: você visualiza algo, formula uma hipótese, testa essa hipótese e visualiza novamente até entender de fato o que os dados estão dizendo.
Depois de entender os dados brutos, você começa a transformar e selecionar funcionalidades para o modelo. Visualizar os dados nessa fase permite conferir se as transformações produzem o efeito esperado e ajuda a identificar quais funcionalidades são realmente úteis. Interpretar gráficos de distribuição, gráficos de importância das funcionalidades ou o comportamento das funcionalidades em diferentes grupos da variável-alvo transforma um pré-processamento arbitrário em escolhas que você consegue justificar com clareza.
Durante o treinamento do modelo de ML, a visualização deixa de servir para examinar os dados e passa a ser uma forma de acompanhar o processo de aprendizado do modelo. Gráficos como curvas de aprendizado ou de perda revelam se o modelo está melhorando, se está se estabilizando ou se apresenta overfitting. Esse feedback permite refinar os hiperparâmetros, ajustar a regularização ou alterar a duração do treinamento antes do término da tarefa.
Depois do treinamento, é com a visualização que você vai além de um único número de acurácia e entende de fato o desempenho do modelo. Matrizes de confusão, curvas ROC, curvas de precisão-recall e gráficos de resíduos revelam, cada um, uma dimensão diferente do comportamento do modelo. Essas visualizações decompõem o desempenho por classe, em diferentes limiares e ao longo de toda a faixa de valores previstos, para que você saiba não só qual é o desempenho do modelo, mas também onde ele acerta e onde deixa a desejar.
Entender os tipos de visualização de dados usados no aprendizado de máquina significa pensar em casos de uso, e não apenas em nomes de gráficos.Veja a seguir uma divisão estruturada desses tipos.
Um histograma mostra a distribuição de uma única funcionalidade numérica. O histograma divide os valores em intervalos no eixo x e registra no eixo y quantos pontos de dados caem em cada intervalo. Em Python, com ferramentas como o matplotlib ou o seaborn, plotar um histograma mostra rapidamente se a distribuição de uma funcionalidade parece normal, assimétrica à direita, bimodal ou próxima da uniforme.
Cada padrão sugere uma etapa de pré-processamento diferente.Por exemplo, você pode plotar um histograma dos preços dos produtos e ver que a maioria fica abaixo de US$ 50, mas há uma cauda longa de valores que chega a US$ 500. Esse padrão indica que vale a pena aplicar uma transformação logarítmica à funcionalidade antes de usá-la em um modelo.
Os gráficos de dispersão posicionam duas variáveis numéricas nos eixos x e y e representam cada ponto de dados como um marcador.Esses gráficos são úteis para perceber tanto padrões lineares quanto não lineares, identificar onde se formam agrupamentos e sinalizar valores discrepantes, que ficam distantes do restante dos dados.Por exemplo, plotar o tamanho da casa em relação ao preço de venda pode revelar uma tendência de alta bem definida até determinado limite de tamanho, a partir do qual os preços se estabilizam: um padrão que vale a pena investigar antes do treinamento.
Uma matriz de correlação exibe a correlação entre cada par de funcionalidades numéricas do seu conjunto de dados. Representada como um mapa de calor, em que a cor de cada célula indica a intensidade da correlação, a matriz torna a multicolinearidade visível à primeira vista.Funcionalidades com correlação igual ou superior a 0,95 costumam ser candidatas à remoção durante a seleção de funcionalidades, pois carregam informações redundantes.
A correlação capta apenas relações lineares; por isso, uma correlação próxima de zero não significa que duas funcionalidades sejam independentes.Por exemplo, em um conjunto de dados de imóveis, “total de cômodos” e “total de quartos” quase sempre apresentam correlação muito alta, e manter os dois não acrescenta nenhuma informação nova ao modelo.
Os diagramas de caixa oferecem um resumo rápido da dispersão de uma variável, mostrando a mediana, a faixa principal dos dados (o intervalo interquartil) e eventuais valores atípicos.Esse tipo de gráfico é especialmente útil no aprendizado de máquina para comparar como uma funcionalidade numérica varia entre grupos da variável-alvo: por exemplo, a renda de quem ficou inadimplente em um empréstimo em comparação com a de quem não ficou.
Os gráficos de pares geram uma grade com um gráfico de dispersão para cada combinação de funcionalidades numéricas do conjunto de dados, com histogramas ou gráficos de densidade na diagonal. A função pairplot() do Seaborn gera esses gráficos com uma única linha de código. Em conjuntos de dados com até 10 a 15 funcionalidades, os gráficos de pares oferecem uma visão geral multivariada rápida que, de outro modo, exigiria muitos gráficos individuais.
Funcionalidades, nesse contexto, são simplesmente as colunas individuais do seu conjunto de dados, como idade, renda ou frequência de compra.Por exemplo, um gráfico de pares de um conjunto de dados de vendas pode revelar rapidamente que a receita e as unidades vendidas variam em estreita sintonia, enquanto a taxa de desconto tem pouca relação com qualquer uma delas. Insights como esse podem ajudar você a decidir quais funcionalidades vale a pena manter.
Os gráficos de densidade são como versões mais suaves dos histogramas.Esses gráficos são úteis para comparar como uma funcionalidade se distribui entre dois grupos.Quando as curvas estão bem afastadas, a funcionalidade geralmente tem forte valor preditivo. Mas, se as curvas se sobrepõem, a funcionalidade é menos útil.
Por exemplo, se você plotar a densidade da “frequência de compra” de clientes fiéis e de clientes que cancelaram, e as duas linhas formarem picos claramente separados, isso é um bom sinal de que a funcionalidade vai ajudar em um modelo de previsão de churn.
Depois de treinar um modelo, você pode extrair as pontuações de importância das funcionalidades e visualizá-las em um gráfico de barras para ver quais funcionalidades têm mais peso.Os modelos baseados em árvores de decisão são um exemplo comum, já que fornecem essas pontuações de importância de forma nativa.Funcionalidades com importância muito baixa costumam ser boas candidatas à remoção, e ferramentas como o Plotly ou o matplotlib criam esses gráficos com facilidade, mesmo quando há muitas funcionalidades.
Esses gráficos comparam a distribuição de uma funcionalidade antes e depois de uma transformação (escalonamento, codificação, transformação logarítmica) e confirmam se a etapa de pré-processamento teve o efeito pretendido.Essa comparação é importante porque alimentar um modelo com uma funcionalidade mal transformada pode distorcer as previsões, e um simples gráfico lado a lado revela esse problema antes que ele chegue ao treinamento.
A curva de aprendizado é um tipo de visualização de treinamento de modelos que mostra o desempenho do modelo (acurácia ou perda) no eixo y em função do tamanho do conjunto de treinamento ou das iterações de treinamento no eixo x, com linhas separadas para treinamento e validação.
Sozinha, essa visualização diagnostica os dois modos de falha mais comuns em modelos de ML: overfitting (grande diferença entre o desempenho de treinamento e o de validação) e underfitting (as duas linhas ficam baixas e convergem rapidamente). Com a curva de aprendizado à vista, os ajustes na complexidade do modelo, na regularização ou no volume de dados de treinamento deixam de ser palpite e passam a ser direcionados.
Em modelos de deep learning, é prática padrão plotar a perda de treinamento e a perda de validação ao longo das épocas. Quando a perda de validação para de melhorar ou começa a aumentar enquanto a perda de treinamento continua caindo, é sinal de que convém interromper o treinamento antecipadamente. Esses gráficos costumam ser gerados em tempo real durante o treinamento, com ferramentas como o TensorBoard.
De modo mais geral, gráficos de linhas que acompanham qualquer métrica (acurácia, pontuação F1, área sob a curva) ao longo das iterações de treinamento revelam, de forma contínua, como o modelo evolui.Esses gráficos são mais informativos do que uma única métrica ao fim do treinamento porque mostram a trajetória, não apenas o destino.
A matriz de confusão é um tipo de visualização de avaliação de modelos que organiza em uma grade todas as combinações de rótulos de classe reais e previstos (verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos), para que você veja exatamente onde o seu modelo acerta e onde erra.
Essa matriz é a base da maioria das métricas de classificação: precisão, recall e pontuação F1 derivam dela. Quando representada como mapa de calor, com anotações de contagens ou porcentagens, a matriz de confusão permite identificar à primeira vista as falhas em cada classe. Quando um modelo “parece bom” pela acurácia, mas tem uma linha vazia para uma classe crítica, a matriz de confusão deixa essa falha evidente de imediato.
As curvas ROC representam graficamente a taxa de verdadeiros positivos em função da taxa de falsos positivos em todos os limiares de classificação possíveis, de 0 a 1. A área sob a curva (AUC) resume em um único número a capacidade geral de discriminação do modelo: 0,5 equivale a um palpite aleatório e 1,0 indica um resultado perfeito. As curvas ROC são particularmente úteis para comparar vários modelos ou quando o custo dos falsos positivos é diferente do custo dos falsos negativos.Ferramentas como o scikit-learn e o plotly oferecem recursos nativos para gerar essas curvas.
Quando o seu conjunto de dados é fortemente desbalanceado, as curvas de precisão-recall oferecem uma visão bem mais fiel do desempenho do modelo do que as curvas ROC. Um classificador forte se aproxima do canto superior direito do gráfico, mantendo alta precisão sem sacrificar o recall. A curva de precisão-recall mostra a precisão no eixo y em função do recall no eixo x, em vários limiares de decisão.
Em áreas críticas, como diagnóstico médico ou detecção de fraudes, em que deixar de identificar o caso raro é muito mais prejudicial do que um alarme falso, essa curva costuma revelar mais do que qualquer outro método.
Em modelos de regressão, o gráfico de resíduos mostra no eixo y a diferença entre os valores previstos e os reais (o resíduo) em função do valor previsto no eixo x. Os resíduos devem se dispersar aleatoriamente em torno de zero, sem nenhum padrão perceptível. Se os resíduos se abrirem em leque, descreverem curvas sistemáticas ou se agruparem, o modelo tem um problema estrutural: ele não está capturando algum aspecto da relação presente nos dados.
O Matplotlib é a base de código aberto sobre a qual se apoia todo o restante. O módulo “pyplot” do Matplotlib (importado como “plt”) dá conta de toda a gama de gráficos padrão: histogramas, gráficos de dispersão, gráficos de linhas, gráficos de barras e outros.A biblioteca é verbosa em comparação com as mais recentes, mas essa verbosidade oferece controle preciso sobre cada detalhe: anotações, rótulos dos eixos, layout e dimensionamento das figuras.
O Seaborn é construído sobre o matplotlib e reduz consideravelmente o código repetitivo. Um mapa de calor, um gráfico de pares ou um diagrama de caixa que exigiria 15 linhas no matplotlib exige uma ou duas no seaborn. Ele lê dados diretamente de DataFrames do pandas, o que faz dele a opção preferida para EDA em ambientes Jupyter Notebook.
O Plotly é a escolha certa quando a saída precisa ser interativa. Os gráficos são renderizados em HTML, e quem os visualiza pode passar o cursor sobre os pontos de dados, aplicar zoom e ativar ou desativar séries. Isso torna o Plotly muito mais útil do que imagens estáticas para apresentar resultados aos stakeholders em dashboards ou relatórios na web.
O NumPy não é, em si, uma ferramenta de visualização, mas é a base de quase todo fluxo de trabalho de visualização: cuida da manipulação de arrays e da preparação dos dados dos eixos x e y de que o matplotlib e o seaborn dependem.
O Yellowbrick foi criado especificamente para a avaliação de modelos de ML. Ele encapsula o scikit-learn e gera matrizes de confusão, curvas ROC, curvas de aprendizado e gráficos de importância das funcionalidades com uma única chamada de função, dispensando a configuração manual que o matplotlib exige.
O TensorBoard cuida da parte de deep learning. Ele transmite em tempo real métricas de treinamento, curvas de perda e grafos do modelo à medida que o treinamento avança, algo necessário para monitorar grandes conjuntos de dados e tarefas de redes neurais de longa duração.
Uma visualização de dados eficaz não se resume a escolher o gráfico certo: ela também passa por evitar os padrões que, silenciosamente, induzem ao erro.
A visualização de dados no aprendizado de máquina não é uma etapa de acabamento: ela permeia todas as fases de um projeto.É com a visualização que os cientistas de dados diagnosticam problemas que não conseguiriam enxergar em uma tabela, identificam falhas do modelo que as métricas escondem, comunicam conclusões aos stakeholders e tomam, com segurança, decisões baseadas em dados em cada etapa do fluxo de trabalho.
Criar o hábito de visualizar de forma deliberada em todas as etapas é uma das medidas mais simples e de maior impacto que você pode adotar para melhorar tanto a qualidade dos seus modelos quanto a clareza do seu raciocínio.
Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.
Use a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.