Prévia do material em texto
85
CIÊNCIA DE DADOS
Unidade II
5 PREPARAÇÃO E PRÉ‑PROCESSAMENTO DE DADOS
A preparação e o pré-processamento de dados são etapas cruciais no processo de ciência de dados
e mineração de dados. Essas etapas visam transformar e organizar os dados brutos em um formato
adequado para análise e modelagem.
Constam a seguir algumas das principais tarefas envolvidas na preparação e pré-processamento
de dados:
Limpeza de dados
Envolve a identificação e o tratamento de dados ausentes, inconsistentes ou incorretos. Os dados
ausentes podem ser preenchidos por meio de técnicas como imputação, em que os valores faltantes são
estimados com base em outros dados. Já os dados inconsistentes ou incorretos podem ser corrigidos ou
removidos, dependendo do contexto.
Por exemplo: vamos imaginar que você tenha um conjunto de dados com os seguintes campos para
cada cliente.
Nome Idade E-mail Número de telefone Endereço
Durante a limpeza de dados, é possível encontrar várias questões que precisam ser abordadas:
• Valores ausentes: alguns campos podem estar vazios. Por exemplo, certos clientes podem não
ter fornecido o número de telefone ou o endereço.
• Outliers: valores que são muito diferentes da maioria dos outros. Por exemplo, uma idade de
150 anos pode ser um outlier e precisa ser examinada.
• Formato incorreto: e-mails e números de telefone podem ter formatos incorretos ou inválidos.
• Duplicatas: pode haver registros duplicados no conjunto de dados.
• Erros de digitação: nomes mal escritos, endereços incorretos e outras formas de erros de digitação
podem ocorrer.
86
Unidade II
Normalização e padronização
Os dados podem estar em diferentes escalas e unidades de medida, o que talvez afete a
análise. A normalização e a padronização são técnicas para transformar os dados em uma escala
comum. A primeira ajusta os dados para um intervalo específico, como entre 0 e 1, enquanto a segunda
transforma os dados para ter média zero e desvio padrão um.
Codificação de variáveis categóricas
Variáveis categóricas, como cores, categorias ou estados civis, precisam ser codificadas de forma
numérica para que os algoritmos de aprendizado de máquina possam processá-las adequadamente. Isso
pode ser feito por meio da técnica de codificação one-hot, em que cada categoria se torna uma nova
coluna binária.
Redução de dimensionalidade
Em conjuntos de dados com muitas características ou variáveis, a redução de dimensionalidade pode
ser aplicada para diminuir a complexidade do modelo e melhorar a eficiência computacional. Técnicas
como análise de componentes principais (PCA) ou seleção de características podem ser utilizadas para
identificar os aspectos mais relevantes ou combinar propriedades correlacionadas.
Tratamento de outliers
Como vimos, outliers são valores atípicos que se desviam significativamente do padrão geral dos
dados. Eles podem afetar negativamente a análise e os modelos. Os outliers podem ser detectados e
tratados, seja removendo-os, substituindo-os por valores próximos ou atribuindo um valor especial a
eles, dependendo da situação.
Divisão de dados
É comum dividir o conjunto de dados em conjuntos de treinamento, validação e teste. O conjunto
de treinamento é usado para treinar o modelo, o conjunto de validação é utilizado para ajustar os
hiperparâmetros do modelo e o conjunto de teste é empregado para avaliar o desempenho final do
modelo. Essa divisão é importante a fim de evitar o sobreajuste do modelo aos dados de treinamento.
Essas são apenas algumas das tarefas comuns na preparação e pré-processamento de dados.
O objetivo é obter um conjunto de dados limpo, consistente e bem-estruturado, pronto para ser utilizado
em análises estatísticas, algoritmos de aprendizado de máquina e outras técnicas de mineração de dados.
Uma boa preparação e pré-processamento de dados consegue impactar diretamente a qualidade e a
eficácia dos resultados obtidos.
Em alguns casos, os conjuntos de dados podem ser muito grandes e, portanto, trabalhar com o
conjunto completo torna-se inviável ou demorado. Nessas hipóteses, é comum realizar amostragem dos
dados, selecionando uma parte representativa do conjunto completo. Existem diferentes técnicas de
87
CIÊNCIA DE DADOS
amostragem, como amostragem aleatória simples, estratificada ou por conglomerados, dependendo da
natureza dos dados e do objetivo da análise.
Em problemas de classificação, é possível que as classes não estejam balanceadas, ou seja, exista
uma grande diferença no número de amostras entre as classes. Isso pode levar a um viés no modelo de
aprendizado de máquina. Nesses casos, devemos aplicar técnicas de balanceamento de classes, como
oversampling (aumento da quantidade de amostras da classe minoritária) ou undersampling (redução
da quantidade de amostras da classe majoritária), para criar um conjunto de dados equilibrado.
Além do balanceamento de classes, é importante lidar com dados desbalanceados em outras variáveis,
como atributos categóricos. Por exemplo, se um atributo categórico tem uma categoria dominante
que ocorre com frequência muito maior do que as outras, isso pode introduzir um viés no modelo.
Consequentemente, é possível agrupar as categorias menos frequentes em uma única ou aplicar técnicas
de amostragem estratificada para garantir uma representação adequada de todas as categorias.
Em problemas com dados temporais, como séries temporais, precisamos considerar a dependência
temporal dos dados. É comum aplicar técnicas como suavização, diferenciação ou decomposição para
identificar tendências, padrões sazonais ou componentes de erro nos dados. Além disso, é importante
garantir que a ordem temporal seja preservada ao dividir o conjunto de dados em treinamento,
validação e teste.
Dados duplicados podem afetar negativamente a análise e os modelos. Portanto, devemos identificar
e lidar com essas duplicações. Isso pode ser feito por meio da remoção de linhas duplicadas ou por
técnicas mais avançadas, como detecção de duplicatas baseada em algoritmos de hashing.
Quando os dados estão desbalanceados em termos de distribuição, como, por exemplo, em dados
que seguem uma distribuição exponencial ou log-normal, é possível aplicar técnicas de normalização
para torná-los mais adequados a modelos de aprendizado de máquina. Isso pode incluir transformações
logarítmicas ou exponenciais a fim de ajustar a distribuição dos dados.
A preparação e o pré-processamento de dados são etapas cruciais para garantir a qualidade e a
utilidade dos dados em análises posteriores. Essas etapas ajudam a tornar os dados mais adequados
para a aplicação de algoritmos de aprendizado de máquina, melhorando a eficácia e a confiabilidade
dos modelos resultantes. Ao realizá-las, é importante também manter um registro claro e documentado
de todas as transformações aplicadas. Isso ajuda a rastrear e reproduzir as etapas de pré-processamento,
garantindo a consistência dos resultados.
Além disso, é fundamental considerar a aplicação de técnicas de pré-processamento específicas para
lidar com problemas e características dos dados em questão. Por exemplo, dados textuais podem exigir
etapas de pré-processamento adicionais, como remoção de stopwords, stemming ou lematização, para
extrair informações relevantes.
88
Unidade II
Observação
Remoção de stopwords: as “stopwords” são palavras muito comuns
em um idioma e em geral não contribuem significativamente para o
significado de uma frase. Elas incluem artigos, preposições, pronomes e
outras palavras de ligação. A remoção de stopwords envolve eliminar essas
palavras de um texto para reduzir a dimensionalidade e focar nos termos
mais importantes para análise.
Exemplo:
Frase original: “o cachorro pulou sobre a cerca.”
Frase após a remoção de stopwords: “cachorro pulou cerca.”
Stemming: o stemming é um processo de redução de palavras ao
seu “stem” (raiz), removendo os sufixos e prefixos para encontrar a forma
básica da palavra. Isso pode ajudar a tratar diferentesformas de uma
mesma palavra como iguais, reduzindo a sua variabilidade e simplificando
o processamento.
Exemplo:
Palavra original: “correndo”
Stem: “corr”
Lematização: a lematização também envolve a redução das palavras
às suas formas básicas, mas de uma maneira mais precisa do que o
stemming. Ela considera a morfologia da palavra e a transforma em seu
“lemma” (forma base), que é um dicionário ou forma padrão do termo.
Isso é mais preciso do que o stemming, mas também pode ser mais
complexo computacionalmente.
Exemplo:
Palavra original: “correndo”
Lemma: “correr”
Vale ressaltar que a preparação e o pré-processamento de dados não são etapas únicas e imutáveis.
Dependendo dos resultados obtidos na análise ou nos modelos de aprendizado de máquina, pode ser
necessário iterar e ajustar as etapas de pré-processamento para melhorar a qualidade dos dados ou
refinar os resultados.
89
CIÊNCIA DE DADOS
A preparação e o pré-processamento de dados são etapas essenciais na jornada de análise de dados e
modelagem de aprendizado de máquina. Elas envolvem desde a limpeza e a transformação dos dados
até a seleção e o ajuste das variáveis relevantes para a análise. Um pré-processamento adequado pode
contribuir significativamente para a qualidade dos resultados e garantir que os modelos de aprendizado
de máquina sejam treinados em dados confiáveis e representativos.
5.1 Principais fontes de dados
Existem várias fontes de dados disponíveis para os profissionais de ciência de dados e análise de
dados. Constam a seguir algumas das principais delas utilizadas:
• Bases de dados internas: muitas organizações possuem bases de dados internas que contêm
informações sobre seus processos, operações, clientes, transações, entre outros. Elas são fonte
valiosa de dados estruturados que podem ser explorados para obter insights e impulsionar a
tomada de decisões.
• Bases de dados públicas: há uma grande variedade de bases de dados públicas disponíveis,
fornecidas por instituições governamentais, organizações de pesquisa, instituições acadêmicas e
outras fontes. Elas podem conter informações demográficas, econômicas, ambientais, científicas
e muito mais, sendo úteis para diversas análises e estudos.
• Redes sociais e plataformas online: as redes sociais e outras plataformas online são fontes
ricas de dados não estruturados, como postagens, comentários, fotos e vídeos. Esses dados podem
ser coletados e analisados para entender o comportamento do usuário, opiniões, tendências de
mercado e até mesmo a fim de identificar padrões e insights relevantes.
• Sensores e dispositivos conectados: com o avanço da Internet das Coisas (IoT), cada vez mais
dispositivos estão conectados à internet, gerando uma quantidade massiva de dados em tempo
real. Sensores em veículos, aparelhos domésticos, wearables e outros dispositivos coletam dados
sobre localização, temperatura, atividades, saúde e muito mais. Eles podem ser utilizados para
análises em tempo real, previsões e otimização de processos.
• Dados de pesquisas e estudos: dados provenientes de pesquisas e estudos acadêmicos também
podem ser uma fonte valiosa de informações. Eles abrangem áreas como saúde, ciências sociais,
economia, psicologia, entre outras. Muitas vezes, esses dados estão disponíveis publicamente ou
podem ser adquiridos por meio de colaborações ou acordos com instituições de pesquisa.
• Dados externos de terceiros: existem várias empresas que coletam e fornecem dados para fins
comerciais. Esses dados podem incluir informações de mercado, dados demográficos, dados de
vendas, dados de comportamento do consumidor, entre outros. O acesso a eles pode ser pago ou
gratuito, dependendo da fonte e das informações desejadas.
• Web scraping: o web scraping envolve a extração de dados de sites e páginas da web por
meio de técnicas automatizadas. Trata-se de uma forma de obter dados não estruturados ou
90
Unidade II
semiestruturados de fontes diversas, como notícias, blogs, fóruns, e-commerce, entre outros.
No entanto, é importante seguir as diretrizes éticas e legais ao realizá-lo.
Essas são apenas algumas das principais fontes de dados utilizadas na ciência de dados e análise de
dados. É importante lembrar que a escolha das fontes de dados depende do contexto, do objetivo da
análise e dos dados necessários para responder às perguntas ou resolver os problemas específicos em
mãos. Além disso, é fundamental garantir a qualidade e a confiabilidade dos dados obtidos, realizando
verificações e validações a fim de garantir sua integridade. Isso inclui a verificação da procedência
dos dados, a detecção e correção de erros ou inconsistências e a aplicação de técnicas de limpeza e
normalização, conforme necessário.
Ademais, ao utilizar fontes de dados externas ou dados coletados de terceiros, devemos considerar
questões de privacidade e conformidade legal. Certifique-se de ter permissão para acessar e utilizar
esses dados de acordo com as leis e regulamentações aplicáveis, como a Lei Geral de Proteção de Dados
Pessoais (LGPD) no Brasil.
Ao trabalhar com diferentes fontes de dados, pode ser necessário realizar processos de integração e
fusão de dados para combinar informações provenientes de várias fontes em um único conjunto coeso
e abrangente. Essa etapa envolve mapear e relacionar as variáveis correspondentes entre as fontes de
dados, garantindo a consistência e a interoperabilidade dos dados combinados.
A escolha das fontes de dados adequadas desempenha um papel importante no sucesso de um
projeto de ciência de dados. Ao utilizar uma variedade de fontes de dados relevantes, conseguimos
obter uma visão mais abrangente e precisa do problema em questão. No entanto, devemos garantir
a qualidade, a integridade e a conformidade dos dados, além de seguir as práticas éticas e legais ao
coletar, processar e utilizar essas informações.
5.2 Coleta, limpeza e organização das informações
A coleta, limpeza e organização das informações são etapas essenciais no processo de análise de
dados. Elas visam obter dados confiáveis, livres de ruídos e prontos para serem utilizados na análise.
Vamos explorar cada uma delas:
Coleta de dados
O primeiro passo é definir o problema a ser resolvido, mas fazê-lo nem sempre é tão simples quanto
parece, por uma variedade de razões, que incluem a complexidade dos dados, as expectativas dos
stakeholders e a clareza dos objetivos. Após definido o problema, com base nele, são selecionados os
dados a serem utilizados na análise.
A coleta de dados envolve a obtenção das informações necessárias para a análise. Isso pode ser feito
por meio de diferentes fontes de dados, como bases de dados internas, fontes públicas, redes sociais,
dispositivos conectados, entre outros. Dependendo da fonte, os dados podem ser obtidos por meio de
consultas a bancos de dados, APIs, web scraping ou até mesmo coleta manual. É importante definir
91
CIÊNCIA DE DADOS
quais variáveis e informações são relevantes para a análise e garantir que os dados coletados sejam
representativos e abrangentes o suficiente a fim de responder às perguntas da pesquisa.
Antes de iniciar a coleta de dados, é fundamental definir claramente o objetivo do projeto.
Compreender o que você deseja alcançar ajuda a determinar quais dados são necessários, quais fontes
devem ser exploradas e como os dados precisam ser coletados e organizados. Identificar as fontes de
onde os dados podem ser obtidos é uma etapa muito importante.
Crie um plano detalhado de como os dados serão coletados. Isso inclui decidir quais campos ou
variáveis são relevantes, como os dados serão estruturados, qual a frequência da coleta e como eles serão
armazenados. É importante garantir que os dados coletados sejam precisos, completos e representativos
do seu objetivo. A qualidade dos dados é essencial.
Ao coletar dados, necessitamos respeitar a privacidade das pessoas e seguir diretrizes éticas.
Certifique-se de estar em conformidade com as regulamentaçõesde proteção de dados, especialmente se
eles envolverem informações pessoais. Os dados coletados devem ser armazenados de forma organizada
e segura. Use sistemas de gerenciamento de banco de dados ou estruturas de armazenamento adequadas
para garantir que os dados sejam acessíveis e protegidos.
Mantenha um registro detalhado de todo o processo de coleta, incluindo fontes, datas, métodos,
transformações aplicadas, e quaisquer problemas encontrados. Isso ajuda a preservar um histórico
confiável dos dados. Em muitos casos, os dados precisam ser atualizados regularmente para permanecerem
relevantes. Certifique-se de ter um plano para manter seus dados atualizados e refletindo as mudanças
ao longo do tempo.
Após coletar e preparar os dados, eles estão prontos para análise, modelagem ou outras atividades
específicas de seu projeto. A qualidade dos resultados dependerá da qualidade dos dados coletados e da
forma como foram processados.
A coleta de dados é um processo iterativo que envolve planejamento, execução, revisão e ajustes
conforme necessário. A qualidade dos dados coletados e a precisão das informações que eles representam
são fundamentais para tomar decisões informadas e obter insights significativos.
Limpeza de dados
A limpeza de dados é uma etapa crítica para garantir a qualidade dos dados. Nessa etapa, são
identificados e tratados problemas como dados ausentes, erros de digitação, valores inconsistentes
ou outliers. Também é comum lidar com dados duplicados ou inconsistentes, que precisam ser
removidos ou corrigidos. A limpeza de dados pode envolver a aplicação de técnicas estatísticas, como
imputação de dados faltantes, remoção de outliers, padronização de valores, entre outros. É importante
realizar uma análise exploratória dos dados para identificar possíveis problemas e aplicar as estratégias
corretas de limpeza.
92
Unidade II
Explicaremos melhor os três tipos principais de problemas que frequentemente são tratados na
limpeza de dados: valores ausentes, valores ruidosos (outliers) e valores inconsistentes.
Valores ausentes
Valores ausentes ocorrem quando um campo ou variável não possui um valor válido. Lidar com
valores ausentes é importante para evitar distorções e imprecisões em análises.
Exemplo: suponha que você esteja trabalhando com um conjunto de dados de avaliações de
produtos, e alguns registros não possuam uma classificação atribuída. Nesse caso, será possível optar
por preencher esses valores ausentes com a média das classificações existentes ou remover as entradas
sem classificação, dependendo do contexto.
Decida se os valores ausentes podem ser preenchidos com valores calculados (média, mediana) ou se
a linha inteira deve ser removida. A escolha depende do impacto nos resultados e do contexto.
Valores ruidosos (outliers)
Outliers são valores que se desviam significativamente do padrão dos demais dados e podem
distorcer análises e modelos. Tratar outliers envolve decidir se eles são erros reais ou representam
informações valiosas.
Exemplo: considere um conjunto de dados de renda familiar, em que a maioria das famílias possui
rendas na faixa de $ 3.000 a $ 10.000, mas há um registro com renda de $ 1.000.000. Nesse caso,
precisaremos avaliar se esse valor é um erro de entrada ou representa uma situação legítima, como uma
família de alto rendimento.
Avalie a legitimidade dos outliers e considere se eles são erros de entrada ou representam situações
reais. Em alguns casos, você pode decidir mantê-los para não perder informações valiosas.
Valores inconsistentes
Valores inconsistentes ocorrem quando os dados não seguem as regras ou padrões esperados. Isso
pode ser causado por erros de entrada, problemas na coleta de dados ou outras fontes.
Exemplo: se você está trabalhando com um conjunto de dados de idade de pessoas e encontra
registros de pessoas com idades negativas, isso é uma inconsistência. Eles precisam ser revisados e
corrigidos, já que a idade não pode ser negativa.
Identifique os padrões de inconsistência e aplique transformações para corrigir os valores ou remova
as entradas com inconsistências graves.
93
CIÊNCIA DE DADOS
A limpeza de dados requer uma combinação de conhecimento de domínio, senso crítico e técnicas
analíticas. Ela pode ser uma etapa iterativa, na qual você avalia os resultados após cada etapa de limpeza
a fim de garantir que os dados estejam prontos para análises subsequentes.
Organização dos dados
A organização dos dados refere-se à estruturação e formatação dos dados para facilitar a análise. Isso
inclui a definição de variáveis e seus tipos, a criação de tabelas ou matrizes estruturadas, a organização
de dados em formatos específicos, como CSV, JSON ou bancos de dados relacionais. Também pode
envolver a criação de variáveis derivadas ou transformações nos dados para melhor representar a
informação desejada. A organização adequada dos dados facilita a aplicação de técnicas de análise e
modelagem posteriormente.
Precisamos ressaltar que coleta, limpeza e organização de dados não são tarefas únicas, mas
sim um processo contínuo. À medida que novos dados são coletados ou novas necessidades surgem
na análise, pode ser necessário iterar e repetir essas etapas. Além disso, é fundamental documentar
todas as transformações e decisões tomadas durante esse processo para garantir a rastreabilidade e a
replicabilidade da análise.
A coleta, limpeza e organização das informações são etapas muito importantes para garantir a
qualidade e a confiabilidade dos dados utilizados na análise. Essas etapas permitem que os dados sejam
preparados de forma adequada, livres de ruídos e prontos para a análise exploratória e modelagem de dados.
5.3 Métodos de raspagem
A raspagem de dados, também conhecida como web scraping, é uma técnica utilizada para extrair
informações de páginas da web de forma automatizada. Essa abordagem permite coletar dados de
diferentes fontes online de maneira eficiente e rápida, sem a necessidade de intervenção manual.
Existem diversos métodos de raspagem de dados, cada um com suas particularidades e aplicações
específicas. Alguns dos mais comuns incluem:
Análise de HTML
Este método envolve a análise do código HTML da página web para identificar os elementos desejados
e extrair as informações relevantes. É possível utilizar bibliotecas e ferramentas específicas para realizar
essa análise, como BeautifulSoup em Python.
Web scraping baseado em API
Alguns sites e plataformas fornecem APIs (application programming interfaces) que permitem
acessar e obter dados de maneira estruturada. Por meio delas, é possível enviar requisições e receber
respostas em um formato específico, como JSON, facilitando a extração de dados de forma mais direta
e organizada.
94
Unidade II
Uso de bibliotecas específicas
Existem várias bibliotecas e frameworks disponíveis em diferentes linguagens de programação que
facilitam a raspagem de dados. Exemplos populares incluem Scrapy em Python e Selenium, que permite
automatizar a interação com páginas web, preenchendo formulários, clicando em botões e navegando
por diversas seções do site.
Raspagem de dados de mídias sociais
Para extrair dados de plataformas de mídia social, como Twitter, Facebook ou Instagram, podem
ser utilizadas APIs específicas fornecidas pelas próprias plataformas ou bibliotecas que simplificam a
interação com essas APIs. Além disso, algumas bibliotecas de raspagem de dados podem ser usadas para
coletar informações publicamente disponíveis nessas plataformas.
É importante ressaltar que, ao realizar a raspagem de dados, precisamos seguir as diretrizes éticas
e legais. Alguns sites podem ter políticas específicas que proíbem a raspagem de dados sem permissão,
portanto, devemos verificar os termos de serviço e as políticas de privacidade dos sites antes de efetuar
qualquer raspagem de dados.
Ademais, é importante considerar a estrutura e o layout do site-alvo, uma vez que esses elementos
podem mudar ao longo dotempo, exigindo ajustes na lógica de raspagem. Também recomenda-se
monitorar a taxa de solicitações para evitar sobrecarregar os servidores do site e respeitar os
limites impostos.
Os métodos de raspagem de dados são ferramentas poderosas para extrair informações de páginas
web e outras fontes online. Ao utilizar esses métodos de forma ética e respeitando as políticas dos sites,
é possível obter dados valiosos para análise e tomada de decisões.
5.4 Tabulação
Tabulação, também conhecida como tabulação cruzada ou tabulação de dados, é uma técnica
estatística usada para resumir e analisar dados em forma de tabelas. Essa técnica é utilizada em pesquisas
de opinião, estudos de mercado, análise de dados quantitativos e em várias outras áreas.
Ela permite visualizar e compreender os relacionamentos entre diferentes variáveis em um conjunto
de dados. Seu objetivo principal é apresentar as frequências e proporções de cada combinação de valores
das variáveis, permitindo identificar padrões, tendências e associações.
O processo de tabulação envolve os seguintes passos:
1. Identificação das variáveis: determine quais variáveis são relevantes para a análise e quais
categorias ou valores elas podem assumir. Por exemplo, em uma pesquisa de opinião, as variáveis podem
ser idade, gênero, nível educacional e preferências. É importante defini-las de forma clara e precisa para
garantir uma tabulação adequada.
95
CIÊNCIA DE DADOS
2. Organização dos dados: organize os dados em uma tabela, na qual cada linha representa uma
observação (indivíduo ou caso) e cada coluna uma variável. Os valores correspondentes às variáveis são
registrados nas células da tabela.
3. Contagem de frequências: conte o número de ocorrências para cada combinação de valores
das variáveis. Isso pode ser feito manualmente ou utilizando software estatístico ou ferramentas de
análise de dados.
4. Cálculo de proporções: calcule as proporções ou percentagens em relação ao total ou a um
subconjunto específico. Isso permite comparar as frequências relativas das diferentes combinações de
valores e obter insights sobre a distribuição dos dados.
5. Apresentação dos resultados: os resultados da tabulação podem ser apresentados em tabelas
ou gráficos, dependendo da natureza dos dados e da finalidade da análise. Tabelas de frequência, tabelas
de contingência e gráficos de barras ou de pizza são comumente utilizados para visualizar os resultados
da tabulação.
A tabulação permite analisar dados de forma rápida e eficiente, identificando associações entre
variáveis e destacando padrões relevantes. Trata-se de uma técnica fundamental para a exploração
inicial de um conjunto de dados e pode servir como base para análises mais avançadas, como testes de
hipóteses, modelagem estatística e tomada de decisões.
No entanto, devemos destacar que a tabulação é uma técnica descritiva e não inferencial. Ela fornece
informações sobre as relações observadas nos dados, mas não permite estabelecer relações causais ou
fazer inferências sobre a população em geral. A tabulação é uma técnica estatística utilizada para resumir
e analisar dados em forma de tabelas. Ela permite identificar padrões e associações entre variáveis,
facilitando a compreensão dos dados e fornecendo insights valiosos para a análise e interpretação
dos resultados.
5.5 Seleção de atributos
A seleção de atributos, também conhecida como seleção de variáveis, é uma etapa importante no
processo de análise de dados e modelagem preditiva. Ela envolve a escolha dos atributos mais relevantes
e informativos em um conjunto de dados para construir modelos mais eficientes e precisos.
Tal seleção é realizada com o objetivo de reduzir a dimensionalidade dos dados, ou seja, diminuir o
número de atributos a serem considerados no modelo, sem comprometer a qualidade da análise. Existem
diversas técnicas e abordagens para efetuar essa seleção, sendo que a escolha da técnica mais adequada
depende do tipo de dados, do objetivo do modelo e das características do problema em questão.
Ao selecionar os atributos mais relevantes, o modelo tende a ser mais preciso, uma vez que se
concentra nas informações mais importantes e descarta ruídos ou dados irrelevantes. Ao reduzir o
número de atributos, o modelo se torna mais simples de interpretação, facilitando a compreensão dos
96
Unidade II
fatores que influenciam nas previsões ou classificações. Com menos atributos, o tempo de treinamento
do modelo é reduzido, o que é especialmente útil em conjuntos de dados grandes e complexos.
Existem diferentes técnicas de seleção de atributos, que podem ser divididas em três categorias
principais:
• Métodos baseados em filtros: utilizam métricas estatísticas ou heurísticas para avaliar a relação
entre cada atributo e a variável-alvo, sem levar em consideração o modelo de aprendizado.
Exemplos comuns incluem a análise de correlação, testes de independência, ganho de informação
e índice de relevância.
• Métodos baseados em wrappers: um modelo de aprendizado é utilizado para avaliar a
importância dos atributos. Ele é treinado repetidamente, removendo ou adicionando atributos de
forma iterativa e avaliando a performance do modelo em cada iteração. Exemplos incluem busca
exaustiva, busca para frente e busca para trás.
• Métodos incorporados: incorporam a seleção de atributos diretamente no processo de treinamento
do modelo. Alguns algoritmos de aprendizado, como, por exemplo, árvores de decisão, possuem
mecanismos internos para selecionar automaticamente os atributos mais relevantes durante o
processo de construção do modelo.
A seleção de atributos não é uma etapa trivial e requer análise cuidadosa dos dados e do problema
em questão. Precisamos considerar fatores como relevância, redundância, correlação entre atributos,
impacto na performance do modelo e interpretabilidade. Além disso, é recomendado utilizar técnicas
de validação cruzada para avaliar o desempenho do modelo com diferentes conjuntos de atributos.
Essa seleção visa escolher os atributos mais relevantes e informativos a fim de construir modelos mais
precisos, eficientes e interpretativos.
5.6 Engenharia de características
A engenharia de características, também conhecida como seleção ou criação de atributos, é um
processo essencial na análise de dados e modelagem preditiva. Envolve a transformação dos dados
brutos em um conjunto de características relevantes e informativas, que possam ser utilizadas pelos
algoritmos de aprendizado de máquina para construir modelos mais precisos e eficientes.
A importância da engenharia de características reside no fato de que nem sempre os dados brutos
estão em um formato adequado para a construção de modelos. Muitas vezes, os dados originais contêm
informações irrelevantes, ruídos ou podem estar incompletos. Através da engenharia de características, é
possível extrair e criar informações que sejam mais relevantes para o problema em questão, melhorando
a performance dos modelos.
A primeira abordagem é a seleção de características, que consiste em selecionar um subconjunto
relevante de características do conjunto de dados original. A seleção pode ser feita com base em critérios
estatísticos, como a análise de correlação, testes de independência ou ganho de informação. Também é
97
CIÊNCIA DE DADOS
possível utilizar algoritmos de aprendizado de máquina para avaliar a importância das características.
A seleção de características reduz a dimensionalidade do conjunto de dados, eliminando características
irrelevantes ou redundantes, o que pode resultar em modelos mais simples e eficientes.
A segunda abordagem é a criação de características que envolve a origem de novas características com
base nas características existentes no conjunto de dados. Essa abordagem busca capturar informações
adicionais e relevantes que possam estar ocultas nos dados originais. Alguns exemplos de técnicas de
criação de características incluem a combinação linear de características, aextração de características
a partir de textos ou imagens e a criação de variáveis categóricas a partir de variáveis contínuas.
A criação de características pode ser feita com base no conhecimento do domínio do problema, em
técnicas de processamento de linguagem natural, em algoritmos de extração de características ou
em métodos de aprendizado não supervisionado.
Devemos ressaltar que a engenharia de características é um processo iterativo e criativo. Requer um
bom entendimento do domínio do problema, além de uma análise aprofundada dos dados. Também é
recomendado avaliar o desempenho dos modelos com diferentes conjuntos de características, utilizando
técnicas de validação cruzada, para selecionar as melhores características e evitar overfitting.
A engenharia de características envolve a seleção e criação de características relevantes e informativas
a partir dos dados brutos, com o objetivo de melhorar a performance dos modelos de aprendizado
de máquina. A escolha adequada das características pode levar a modelos mais precisos, eficientes
e interpretáveis.
5.7 Normalização dos dados
A normalização dos dados é um processo importante na preparação e pré-processamento de dados
antes de aplicar algoritmos de aprendizado de máquina. Consiste em ajustar a escala dos dados para que
eles estejam em um intervalo específico ou sigam uma distribuição padrão, tornando-os comparáveis e
facilitando a análise.
Existem diferentes técnicas de normalização que podem ser aplicadas, dependendo das características
dos dados e dos requisitos do problema. Algumas das técnicas mais comuns são:
Normalização Min-Max
Nesta técnica, os valores dos dados são ajustados para um intervalo específico, geralmente entre 0 e 1.
A fórmula utilizada é dada por:
x_norm = (x- min(x) / (max(x) - min(x)
Onde:
• x é o valor original;
98
Unidade II
• x norm_ é o valor normalizado;
• min(x) é o menor valor dos dados;
• max(x) é o maior valor dos dados.
A normalização Min-Max é útil quando os dados possuem limites bem definidos e não são sensíveis
a outliers. Ela preserva a distribuição dos dados, mantendo as relações proporcionais entre eles.
Exemplo:
Suponha que você tenha as seguintes notas dos alunos em uma escala de 0 a 100:
• Aluno A: 75
• Aluno B: 90
• Aluno C: 60
• Aluno D: 85
Vamos normalizar essas notas usando a fórmula Min-Max:
1 – Encontre min( )x e max( )x das notas:
min( )
max( )
x
x
=
=
60
90
2 – Aplique a fórmula de normalização Min-Max para cada aluno:
Para o aluno A:
xnormA �
�
�
�
( )
( )
.
75 60
90 60
0 5
Para o aluno B:
xnormB �
�
�
�
( )
( )
.
90 60
90 60
1 0
Para o aluno C:
xnormC �
�
�
�
( )
( )
.
60 60
90 60
0 0
99
CIÊNCIA DE DADOS
Para o aluno D:
xnormD �
�
�
�
( )
( )
.
85 60
90 60
0 8
Agora as notas dos alunos foram normalizadas na faixa de 0 a 1:
• Aluno A: 0.5
• Aluno B: 1.0
• Aluno C: 0.0
• Aluno D: 0.8
A normalização Min-Max é útil quando você deseja trazer diferentes variáveis para a mesma escala,
especialmente quando se trabalha com algoritmos sensíveis à escala dos dados, como redes neurais e
algoritmos de otimização.
Normalização Z-score
Também conhecida como padronização, esta técnica ajusta os dados de forma que tenham uma
média zero e um desvio padrão de um. A fórmula utilizada é dada por:
x_norm = (x- mean(x)) /std(x)
Onde:
• x é o valor original;
• x_norm é o valor normalizado;
• mean(x) é a média dos dados;
• std(x) é o desvio padrão dos dados.
A normalização Z-score é útil quando se deseja comparar os dados com base na sua posição relativa
em relação à média e ao desvio padrão. Ela é sensível a outliers, uma vez que considera a média e o
desvio padrão dos dados.
Exemplo:
Vamos utilizar as mesmas notas dos alunos:
100
Unidade II
• Aluno A: 75
• Aluno B: 90
• Aluno C: 60
• Aluno D: 85
Primeiramente, calcule a mean(x) e std(x) o das notas:
mean(x)=
75 90 60 85
4
77 5
� � �
� .
std(x)=
( ( ))x mean x
n
ii
n ��� 21
std(x)= (
( , ) ( . ) ( . ) ( . )
)
75 77 5 90 77 5 60 77 5 85 77 5
4
5 152 2 2 2� � � � � � �
�
� 66 25 306 25 56 25
4
. . .� �
std x( ) .=11 4
Na sequência, aplique a fórmula de normalização Z-score para cada aluno:
Para o aluno A:
xnorm A_
.
.
.�
�
� �
75 77 5
11 4
0 2
Para o aluno B:
xnorm B_
.
.
.�
�
�
90 77 5
11 4
1 1
Para o aluno C:
xnorm C_
.
.
.�
�
� �
60 77 5
11 4
1 5
Para o aluno D:
xnorm D_
.
.
.�
�
�
85 77 5
11 4
0 6
101
CIÊNCIA DE DADOS
Por fim, as notas dos alunos foram normalizadas usando o Z-score:
• Aluno A: -0.2
• Aluno B: 1.1
• Aluno C: -1.5
• Aluno D: 0.6
A normalização Z-score é útil quando você deseja comparar e analisar dados que podem ter diferentes
médias e desvios padrão. Ela transforma os dados para terem uma distribuição normal com média zero e
desvio padrão um. Quanto mais próximo de 0 for o desvio padrão, mais homogêneo são os dados.
Normalização por escala logarítmica
Em alguns casos, os dados podem apresentar distribuição assimétrica ou amplitude muito grande.
Nesses casos, a normalização por escala logarítmica pode ser aplicada para reduzir a variação e tornar
os dados mais comparáveis.
A fórmula utilizada é dada por:
x norm x_ log( )=
Onde:
• x é o valor original;
• x norm_ é o valor normalizado.
A normalização por escala logarítmica é útil quando se deseja reduzir a influência de valores extremos
e ampliar a capacidade de distinguir diferenças nos valores menores.
Exemplo:
Vamos considerar as mesmas notas dos alunos:
• Aluno A: 75
• Aluno B: 90
• Aluno C: 60
• Aluno D: 85
102
Unidade II
Primeiramente, aplique a normalização por escala logarítmica a cada nota:
• Para o aluno A: log( ) .75 4 317≈
• Para o aluno B: log( ) .90 4 499≈
• Para o aluno C: log( ) .60 4 094≈
• Para o aluno D: log( ) .85 4 442≈
Na sequência, as notas dos alunos foram normalizadas usando a escala logarítmica:
• Aluno A: 4.317
• Aluno B: 4.499
• Aluno C: 4.094
• Aluno D: 4.442
A normalização por escala logarítmica é útil quando os dados possuem ampla variação e a escala
logarítmica pode torná-los mais comparáveis. Essa técnica é frequentemente usada quando os dados
originalmente variam em ordens de magnitude diferentes.
Vale lembrar que a normalização por escala logarítmica pode distorcer as diferenças relativas entre
valores e é mais adequada quando os dados têm distribuição assimétrica ou as diferenças relativas são
menos importantes do que as diferenças absolutas.
Precisamos ressaltar que a escolha da técnica de normalização depende do tipo de dados, da
distribuição dos dados e dos requisitos específicos do problema. Além disso, a normalização deve ser
aplicada separadamente em conjuntos de treinamento e teste, para evitar vazamento de informações.
A normalização dos dados permite que os algoritmos de aprendizado de máquina tratem os dados
de forma adequada, evitando que variáveis com escalas diferentes dominem a análise. Ela facilita a
comparação, interpretação e visualização dos dados, além de melhorar a performance e a convergência
dos modelos de machine learning.
5.8 Dados ausentes
Dados ausentes são um desafio comum na análise de dados, e ocorrem quando não há valores
disponíveis para uma ou mais variáveis em determinadas observações. A presença de dados ausentes
pode comprometer a qualidade da análise e dos modelos de aprendizado de máquina, pois a falta de
informações leva a conclusões imprecisas ou enviesadas.
103
CIÊNCIA DE DADOS
Existem diferentes razões pelas quais os dados podem estar ausentes, devido a erros de coleta,
problemas técnicos, recusa dos respondentes em fornecer certas informações ou simplesmente por não
terem sido registrados. Independentemente da causa, é importante lidar de forma adequada com os
dados ausentes para evitar viés nos resultados.
Há várias abordagens para lidar com dados ausentes, algumas delas são as seguintes:
• Exclusão de casos ou variáveis: uma abordagem simples é excluir os casos ou variáveis com
dados ausentes. Sea proporção de dados ausentes for pequena em relação ao tamanho total
do conjunto de dados, essa abordagem pode ser viável. No entanto, a exclusão de dados pode
levar a perda de informações importantes, além de potencialmente introduzir viés nos resultados,
especialmente se os dados ausentes não estiverem aleatoriamente distribuídos.
• Preenchimento com valor fixo: outra abordagem é preencher os valores ausentes com um
valor fixo, como a média, mediana ou moda dos dados existentes. Essa abordagem é simples
de implementar, mas pode distorcer as propriedades estatísticas dos dados, especialmente se os
dados ausentes forem significativos.
• Preenchimento com valor estimado: uma abordagem mais sofisticada é estimar os valores
ausentes com base em técnicas de imputação. Isso envolve a utilização de algoritmos e modelos
estatísticos para prever os valores ausentes com base nos dados disponíveis. Alguns métodos
populares de imputação incluem imputação por regressão, imputação por médias condicionais e
imputação por múltiplas imputações. Essas técnicas levam em consideração as relações entre as
variáveis e fornecem estimativas mais precisas dos valores ausentes.
• Modelagem especializada: em alguns casos, é possível construir modelos especializados para
lidar com dados ausentes. Por exemplo, podem ser aplicados modelos de aprendizado de máquina
que levam em consideração explicitamente a presença de dados ausentes. Esses modelos podem
ser treinados para lidar com a ausência de dados e fornecer previsões mais precisas.
Ao lidar com dados ausentes, precisamos avaliar cuidadosamente a abordagem mais adequada,
considerando a natureza dos dados, a proporção de dados ausentes e o impacto potencial nas análises
subsequentes. Além disso, é fundamental documentar e relatar o tratamento dos dados ausentes para
garantir a transparência e a reprodutibilidade das análises.
A presença de dados ausentes é uma realidade comum na análise de dados. Lidar com esses dados
de maneira apropriada é fundamental para evitar viés e garantir resultados confiáveis. Diversas técnicas
estão disponíveis para tratar dados ausentes, e a escolha da abordagem depende das características dos
dados e das necessidades específicas do problema.
104
Unidade II
6 MODELOS PREDITIVOS
Modelos preditivos são algoritmos ou sistemas que utilizam dados históricos para fazer previsões
ou estimativas sobre eventos futuros. Eles são utilizados em diversas áreas, como ciência de dados,
aprendizado de máquina, estatística e inteligência artificial, com o objetivo de obter insights e tomar
decisões informadas.
A ideia por trás dos modelos preditivos é identificar padrões e relações nos dados disponíveis e usá-los
para prever o resultado de um evento futuro. Esses modelos podem ser aplicados a uma ampla variedade
de problemas, como previsão de vendas, detecção de fraudes, previsão de demanda, diagnóstico médico,
recomendação de produtos e muito mais.
Existem vários tipos de modelos preditivos, cada um com suas próprias características e técnicas de
construção. Alguns dos mais comuns incluem:
• Regressão: é usada para prever um valor contínuo com base em variáveis independentes.
Há diferentes tipos de regressão, como regressão linear, regressão logística, regressão polinomial,
entre outros.
• Árvores de decisão: são modelos que dividem os dados com base em perguntas ou condições
em uma estrutura hierárquica de decisões. Cada ramo representa uma decisão apoiada nas
características dos dados.
• Redes neurais: são modelos inspirados no funcionamento do cérebro humano, compostos de
camadas de neurônios interconectados. Eles são capazes de aprender padrões complexos nos
dados e realizar previsões com base nessas aprendizagens.
• Máquinas de vetores de suporte (SVM): são modelos que mapeiam os dados em um espaço
dimensional superior e separam as classes de forma otimizada. Elas são regularmente usadas em
problemas de classificação, mas também podem ser aplicadas a problemas de regressão.
• Naive Bayes: é um modelo baseado no teorema de Bayes, que utiliza a probabilidade condicional
para fazer previsões. Ele assume que as características são independentes entre si, o que simplifica
o processo de modelagem.
• Random forest: é uma técnica que combina várias árvores de decisão para tomar decisões coletivas.
Ela cria múltiplas árvores e faz previsões com base na média das previsões de todas as árvores.
Esses são apenas alguns exemplos de modelos preditivos. A escolha do modelo adequado depende
do tipo de problema, dos dados disponíveis e dos objetivos específicos da previsão. Cada modelo tem
suas vantagens e limitações, e a seleção correta é fundamental para obter previsões precisas e confiáveis.
105
CIÊNCIA DE DADOS
Uma parte importante do desenvolvimento de modelos preditivos é o treinamento e a validação do
modelo. Isso envolve a utilização de dados históricos conhecidos para ajustar os seus parâmetros e, em
seguida, testá-lo em dados desconhecidos para avaliar sua capacidade de fazer previsões precisas.
No entanto, é importante ter em mente que os modelos preditivos não são uma solução mágica
e apresentam desafios próprios, como, por exemplo, a necessidade de identificar quais variáveis ou
recursos são relevantes para a tarefa de previsão. Nem todos os dados disponíveis podem ser úteis
ou informativos, e a seleção cuidadosa dos recursos certos é fundamental para a obtenção de um
modelo preciso e eficiente.
Os dados nem sempre estão prontos para serem usados diretamente nos modelos preditivos.
É necessário realizar tarefas de limpeza, como tratamento de dados ausentes, remoção de outliers e
normalização dos dados. Além disso, a transformação e o pré-processamento dos dados podem ser
necessários para melhorar a qualidade das previsões. Pode ocorrer o overfitting quando o modelo se
ajusta em excesso aos dados de treinamento, capturando ruídos e detalhes irrelevantes, o que prejudica
a capacidade de generalização para novos dados. Por outro lado, o underfitting ocorre quando o modelo
não é capaz de capturar adequadamente os padrões nos dados. Encontrar o equilíbrio certo entre esses
extremos é essencial para a obtenção de um modelo preditivo robusto e preciso.
A avaliação e a validação do modelo são etapas indispensáveis para determinar sua eficácia e
desempenho. Isso envolve a separação dos dados em conjuntos de treinamento, validação e teste, e a
utilização de métricas apropriadas para medir a precisão, o recall, a precisão, entre outros aspectos
relevantes. À medida que os modelos se tornam mais complexos, a interpretação dos resultados
pode se tornar desafiadora. Compreender como o modelo toma suas decisões e quais características
são mais importantes para a previsão pode ser fundamental para obter insights úteis e confiar nas
previsões geradas.
A construção de modelos preditivos envolve um conjunto de etapas que vão desde a seleção de
recursos e preparação dos dados até a avaliação e interpretação dos resultados. Trata-se de um processo
iterativo que requer habilidades técnicas, compreensão do domínio e experiência para obter previsões
precisas e relevantes. Quando usado corretamente, o aprendizado de máquina e os modelos preditivos
têm o potencial de trazer insights valiosos e melhorar a tomada de decisões em uma ampla variedade
de setores e aplicativos.
6.1 Regressão linear simples
A regressão linear simples é uma técnica estatística que busca estabelecer relação linear entre duas
variáveis: uma variável dependente (alvo de previsão) e uma variável independente (variável de entrada).
Seu objetivo é encontrar a melhor linha reta que representa essa relação e pode ser usada para prever
valores da variável dependente com base nos valores da variável independente.
A equação da regressão linear simples é uma representação matemática da relação linear entre uma
variável independente (x) e outra dependente (y). A forma geral da equação da regressão linear simples é:
yx� �� �0 1
106
Unidade II
Nesta equação:
• y é a variável dependente (a que queremos prever);
• x é a variável independente (a que usamos para fazer a previsão);
• β0 é o coeficiente linear (intercepto), que representa o valor de y quando x é igual a 0;
• β1 é o coeficiente angular (inclinação), que representa a mudança em y para uma unidade de
mudança em x.
Em termos simples, a equação descreve uma reta que melhor se ajusta aos dados, tentando minimizar
a soma dos quadrados dos resíduos (diferenças entre os valores reais de y e os valores previstos pela
equação).
Quando você treina um modelo de regressão linear, o objetivo é encontrar os valores de β0 e β1 que
minimizam o erro total entre os valores observados e aqueles previstos pela equação da regressão. Uma
vez que o modelo está treinado, será possível usar essa equação para fazer previsões com base em novos
valores de x.
Para estimar os valores de β0 e β1, são utilizados os dados disponíveis de x e y. O método mais
comumente utilizado para estimar esses coeficientes é o método dos mínimos quadrados, que busca
minimizar a soma dos quadrados dos erros entre os valores previstos pela equação da regressão e os
valores reais observados.
Após obter os coeficientes, o modelo de regressão linear simples pode ser usado para fazer previsões.
Dado um novo valor de x, pode-se calcular o valor correspondente de y usando a equação da regressão.
Além da previsão, a regressão linear simples permite avaliar a força e a direção da relação entre as
variáveis. O coeficiente de correlação (r) é uma medida comum usada para avaliar a correlação linear
entre as variáveis. O valor de r varia de -1 a 1, onde -1 indica uma relação negativa perfeita, 1 indica
uma relação positiva perfeita e 0 indica ausência de relação linear.
No entanto, é importante considerar algumas suposições ao aplicar a regressão linear simples, como
a linearidade da relação entre as variáveis, a independência dos erros, a homoscedasticidade (variância
constante dos erros) e a normalidade dos erros. Violar essas suposições pode levar a resultados imprecisos
ou inválidos.
A regressão linear simples é uma técnica básica, porém poderosa, que pode ser aplicada em uma
variedade de problemas. É utilizada em áreas como estatística, economia, ciências sociais e engenharia
para fazer previsões, entender relações entre variáveis e tomar decisões informadas com base nos
resultados da análise.
107
CIÊNCIA DE DADOS
A regressão linear simples oferece várias vantagens. Algumas delas incluem:
• Interpretabilidade: a natureza simples da regressão linear torna os resultados facilmente
interpretáveis. Os coeficientes β0 e β1 fornecem informações sobre o intercepto e a inclinação da
linha de regressão, respectivamente. Isso permite entender a direção e a magnitude da relação
entre as variáveis.
• Facilidade de implementação: a regressão linear simples é uma técnica estudada e implementada
em várias plataformas e linguagens de programação. Há muitas bibliotecas e pacotes disponíveis
que facilitam a implementação da regressão linear em projetos de análise de dados.
• Eficiência computacional: a regressão linear simples é um método computacionalmente
eficiente, especialmente quando comparado a modelos mais complexos. A análise de um conjunto
de dados relativamente grande pode ser realizada em um tempo razoável.
• Baixa dimensionalidade: a regressão linear simples é adequada para problemas de baixa
dimensionalidade, ou seja, quando há apenas uma variável independente. É particularmente útil
quando se deseja entender o efeito de uma variável específica no resultado.
• Base para modelos mais complexos: a regressão linear simples serve como uma base importante
para modelos de regressão mais avançados, como a regressão linear múltipla e os modelos de
aprendizado de máquina. Ela permite compreender e estabelecer as bases da análise de regressão
antes de explorar métodos mais complexos.
Exemplo: suponha que temos um conjunto de dados que relaciona a quantidade de horas de estudo
(variável independente) com as notas obtidas em um exame (variável dependente). Queremos criar
um modelo de regressão linear simples para prever a nota em um exame com base no número de
horas de estudo.
Neste exemplo, LinearRegression é um modelo de regressão linear da biblioteca scikit-learn. Ele é
treinado com os dados de horas de estudo e notas do exame, e depois é usado para fazer previsões
com base em novos valores de horas de estudo. A reta de regressão é plotada com os dados reais para
visualizar a relação entre as variáveis.
1. import numpy as np
2. from sklearn.linear_model import LinearRegression
3. import matplotlib.pyplot as plt
4. # Dados de exemplo
5. horas_de_estudo = np.array([2, 4, 6, 7, 8, 10])
6. notas_do_exame = np.array([65, 75, 80, 82, 90, 95])
7. # Reshape para o formato necessário
8. horas_de_estudo = horas_de_estudo.reshape(-1, 1)
108
Unidade II
9. # Criar o modelo de regressão linear
10. modelo = LinearRegression()
11. # Treinar o modelo com os dados de treinamento
12. modelo.fit(horas_de_estudo, notas_do_exame)
13. # Fazer previsões para novos valores
14. horas_novas = np.array([[5], [9]])
15. notas_previstas = modelo.predict(horas_novas)
16. # Coeficiente angular (inclinação da reta)
17. coef_angular = modelo.coef_[0]
18. # Coeficiente linear (intercepto da reta)
19. coef_linear = modelo.intercept_
20. # Imprimir os coeficientes
21. print(“Coeficiente Angular:”, coef_angular)
22. print(“Coeficiente Linear:”, coef_linear)
23. # Plotar os dados e a reta de regressão
24. plt.scatter(horas_de_estudo, notas_do_exame, label=’Dados reais’)
25. plt.plot(horas_novas, notas_previstas, color=’red’, label=’Reta de regressão’)
26. plt.xlabel(‘Horas de Estudo’)
27. plt.ylabel(‘Notas do Exame’)
28. plt.legend()
29. plt.show()
Saída:
Coeficiente angular: 3.693877551020409
Coeficiente linear: 58.38775510204081
109
CIÊNCIA DE DADOS
No
ta
s d
o
ex
am
e
2 3 4 5 6 7 8 9 10
Horas de estudo
95
90
85
80
75
70
65
Dados reais
Reta de regressão
Figura 18
No entanto, a regressão linear simples também possui algumas limitações:
• Pressuposições: assume uma relação linear entre as variáveis e a independência dos erros.
Se essas pressuposições não forem atendidas, os resultados podem ser inválidos ou imprecisos.
• Sensibilidade a outliers: pode afetar significativamente os resultados da regressão linear através
da presença de outliers. Os outliers influenciam a estimativa dos coeficientes e distorcem a linha
de regressão.
• Limitação da complexidade do modelo: é limitada em sua capacidade de capturar relações
não lineares entre as variáveis. Se a relação entre as variáveis não for linear, o modelo de regressão
linear simples pode fornecer resultados inadequados.
• Dependência da qualidade dos dados: deve haver qualidade dos dados de entrada para a
obtenção de resultados confiáveis. Dados ausentes, erros de medição ou outras inconsistências
podem afetar a precisão das previsões.
A regressão linear simples é uma técnica estatística utilizada para modelar a relação linear entre
duas variáveis. Ela oferece simplicidade, interpretabilidade e eficiência computacional. No entanto,
precisa estar ciente das suas limitações e das suposições subjacentes. Em muitos casos, a regressão
linear simples serve como uma ferramenta inicial para análise de dados antes de explorar modelos mais
complexos e avançados.
110
Unidade II
6.2 Ajuste com mínimos quadrados
O ajuste com mínimos quadrados é uma técnica estatística utilizada para encontrar os parâmetros
de um modelo matemático que melhor se ajusta a um conjunto de dados observados. Essa abordagem
busca minimizar a soma dos quadrados dos resíduos, que são as diferenças entre os valores observados
e aqueles previstos pelo modelo.
O método dos mínimos quadrados é utilizado em várias áreas, como estatística, econometria e ciência
de dados, sendo especialmente comum em problemas de regressão, quandoo objetivo é encontrar uma
função que relacione uma variável dependente com uma ou mais variáveis independentes.
O processo de ajuste com mínimos quadrados envolve os seguintes passos:
1. Especificação do modelo: escolher o modelo matemático que representa a relação entre as
variáveis. Por exemplo, em um problema de regressão linear, o modelo pode ser uma função linear da
forma y = β0 + β1*x, onde y é a variável dependente, x é a variável independente e β0 e β1 são os
coeficientes a serem estimados.
2. Cálculo dos resíduos: com o modelo especificado, calculam-se os valores previstos para a variável
dependente com base nos valores das variáveis independentes. Em seguida, computam-se os resíduos
subtraindo os valores observados por aqueles previstos. Os resíduos representam as diferenças entre os
dados observados e as previsões do modelo.
3. Estimação dos parâmetros: o próximo passo é estimar os parâmetros do modelo que minimizam
a soma dos quadrados dos resíduos. Isso é feito por meio de técnicas de otimização, como o método dos
mínimos quadrados. O objetivo é encontrar os valores dos coeficientes do modelo que tornem a soma
dos quadrados dos resíduos o menor possível.
4. Avaliação do ajuste: após estimar os parâmetros, devemos avaliar a qualidade do ajuste. Isso pode
ser feito por meio de diversas métricas, como o coeficiente de determinação (R²), que mede a proporção
da variabilidade dos dados explicada pelo modelo. Também é possível realizar testes estatísticos para
avaliar a significância dos coeficientes e a adequação do modelo aos dados.
5. Interpretação dos resultados: por fim, interpreta-se os coeficientes estimados do modelo. Eles
representam a relação entre as variáveis e podem ser utilizados para fazer previsões ou inferências
sobre o comportamento do sistema estudado. Por exemplo, em um modelo de regressão linear simples,
o coeficiente β1 representa o efeito médio da variável independente sobre a variável dependente. Um
valor positivo indica uma relação positiva, enquanto um valor negativo indica uma relação negativa.
Exemplo: faremos o ajuste de uma regressão linear simples utilizando o método dos mínimos
quadrados em Python. Suporemos que temos os seguintes dados de horas de estudo e notas do exame:
111
CIÊNCIA DE DADOS
1. import numpy as np
2. import matplotlib.pyplot as plt
3. # Dados de exemplo
4. horas_de_estudo = np.array([2, 4, 6, 7, 8, 10])
5. notas_do_exame = np.array([65, 75, 80, 82, 90, 95])
6. # Calculando as médias das variáveis
7. media_x = np.mean(horas_de_estudo)
8. media_y = np.mean(notas_do_exame)
9. # Calculando os desvios em relação às médias
10. desvio_x = horas_de_estudo - media_x
11. desvio_y = notas_do_exame - media_y
12. # Calculando o coeficiente angular (beta_1)
13. beta_1 = np.sum(desvio_x * desvio_y) / np.sum(desvio_x ** 2)
14. # Calculando o coeficiente linear (beta_0)
15. beta_0 = media_y - beta_1 * media_x
16. # Criando a reta de regressão
17. reta_regressao = beta_0 + beta_1 * horas_de_estudo
18. # Imprimindo os coeficientes
19. print(“Coeficiente Angular (beta_1):”, beta_1)
20. print(“Coeficiente Linear (beta_0):”, beta_0)
21. # Plotando os dados e a reta de regressão
22. plt.scatter(horas_de_estudo, notas_do_exame, label=’Dados reais’)
23. plt.plot(horas_de_estudo, reta_regressao, color=’red’, label=’Reta de regressão’)
24. plt.xlabel(‘Horas de Estudo’)
25. plt.ylabel(‘Notas do Exame’)
26. plt.legend()
27. plt.show()
Saída:
Coeficiente angular (beta_1): 3.693877551020408
Coeficiente linear (beta_0): 58.38775510204082
112
Unidade II
No
ta
s d
o
ex
am
e
2 3 4 5 6 7 8 9 10
Horas de estudo
95
90
85
80
75
70
65
Dados reais
Reta de regressão
Figura 19
Neste exemplo, estamos calculando manualmente os coeficientes da regressão linear (coeficiente
angular β1 e coeficiente linear β0) usando o método dos mínimos quadrados. Depois, criamos a reta
de regressão utilizando esses coeficientes e plotamos os dados com a reta de regressão para visualizar
como o ajuste foi feito.
Lembrete
Em aplicações reais, normalmente usaríamos bibliotecas como NumPy
e SciPy para realizar esses cálculos de maneira mais eficiente.
O ajuste com mínimos quadrados é uma abordagem poderosa, pois fornece uma maneira sistemática
de encontrar os parâmetros que melhor descrevem os dados observados. No entanto, é importante estar
ciente de algumas considerações:
• Suposições: o método dos mínimos quadrados assume que os erros de medição são independentes e
têm distribuição normal com média zero e variância constante. É importante verificar se essas
suposições são atendidas antes de aplicar o procedimento.
• Outliers: valores discrepantes ou extremos podem ter um impacto significativo no ajuste com
mínimos quadrados, pois eles têm um peso maior na soma dos quadrados dos resíduos. É importante
identificar e lidar com esses outliers de forma adequada para evitar que eles distorçam o ajuste.
113
CIÊNCIA DE DADOS
• Overfitting: o ajuste com mínimos quadrados pode levar ao overfitting (sobreajuste) quando
o modelo se torna muito complexo e se ajusta demais aos dados de treinamento. Isso pode
resultar em um modelo que não generaliza bem para novos dados. É importante ter cuidado ao
escolher a complexidade do modelo e considerar técnicas como validação cruzada para avaliar
seu desempenho em dados não observados.
O ajuste com mínimos quadrados é uma técnica fundamental na modelagem estatística e na análise
de dados. Ele permite encontrar os parâmetros que melhor descrevem a relação entre as variáveis em
um modelo matemático. No entanto, devemos compreender suas suposições e considerar as limitações
associadas a outliers e overfitting. Com uma abordagem cuidadosa, o ajuste com mínimos quadrados
fornece resultados úteis e insights sobre o comportamento dos dados.
6.3 Gradiente descendente
O gradiente descendente é um algoritmo de otimização utilizado em aprendizado de máquina e em
outras áreas relacionadas, como otimização de função e aprendizado de parâmetros. Ele é utilizado para
encontrar o mínimo de uma função de perda, ou seja, minimizar a diferença entre os valores previstos
e os valores reais.
O algoritmo do gradiente descendente é baseado no cálculo do gradiente da função de perda em
relação aos parâmetros do modelo. O gradiente indica a direção e a magnitude do maior aumento da
função de perda. Portanto, ao caminhar na direção oposta ao gradiente, é possível aproximar-se do
mínimo global ou local da função.
O processo do gradiente descendente pode ser resumido nas seguintes etapas:
1. Inicialização dos parâmetros: os parâmetros do modelo são inicializados com valores aleatórios
ou predefinidos.
2. Cálculo do gradiente: o gradiente da função de perda em relação aos parâmetros é calculado.
Isso envolve calcular as derivadas parciais da função de perda em relação a cada parâmetro.
3. Atualização dos parâmetros: os parâmetros do modelo são atualizados usando a seguinte fórmula:
novo_parâmetro = parâmetro_atual - taxa_aprendizado * gradiente, onde a taxa de aprendizado é um
hiperparâmetro que controla o tamanho do passo dado em cada iteração.
4. Repetição: os passos 2 e 3 são repetidos até que uma condição de parada seja atendida. Isso
pode ser um número fixo de iterações, uma tolerância para a melhoria da função de perda ou outros
critérios definidos.
Existem diferentes variantes do gradiente descendente, como o gradiente descendente estocástico (SGD)
e o gradiente descendente em lote (batch gradient descent). O SGD atualiza os parâmetros a cada
exemplo de treinamento, enquanto o batch gradient descent usa todo o conjunto de treinamento para
114
Unidade II
calcular o gradiente e atualizar os parâmetros. O SGD é mais rápido, mas pode ser mais ruidoso, enquanto
o batch gradient descent é mais preciso, mas pode ser mais lento em grandes conjuntos de dados.
O gradiente descendente é utilizado em algoritmos de aprendizado de máquina, como regressão
linear, regressão logística e redesneurais. Ele permite ajustar os parâmetros do modelo de forma iterativa,
buscando minimizar a função de perda e melhorar o desempenho do modelo na tarefa desejada.
Exemplo: utilizaremos um exemplo simples de como implementar o gradiente descendente para
ajustar uma regressão linear em Python:
1. import numpy as np
2. import matplotlib.pyplot as plt
3. # Dados de exemplo
4. horas_de_estudo = np.array([2, 4, 6, 7, 8, 10])
5. notas_do_exame = np.array([65, 75, 80, 82, 90, 95])
6. # Inicialização dos parâmetros
7. alpha = 0.01 # Taxa de aprendizado
8. num_iteracoes = 1000 # Número de iterações
9. # Inicialização dos coeficientes
10 beta_0 = 0.0
11. beta_1 = 0.0
12. # Gradiente Descendente
13. for _ in range(num_iteracoes):
14. predicoes = beta_0 + beta_1 * horas_de_estudo
15. erro = predicoes - notas_do_exame
16. # Atualização dos coeficientes usando o Gradiente Descendente
17. beta_0 -= alpha * (1.0 / len(horas_de_estudo)) * np.sum(erro)
18. beta_1 -= alpha * (1.0 / len(horas_de_estudo)) * np.sum(erro * horas_de_estudo)
19. # Coeficientes ajustados
20. print(“Coeficiente Linear (beta_0):”, beta_0)
21. print(“Coeficiente Angular (beta_1):”, beta_1)
22. # Criação da reta de regressão
23. reta_regressao = beta_0 + beta_1 * horas_de_estudo
115
CIÊNCIA DE DADOS
24. # Plotando os dados e a reta de regressão
25. plt.scatter(horas_de_estudo, notas_do_exame, label=’Dados reais’)
26. plt.plot(horas_de_estudo, reta_regressao, color=’red’, label=’Reta de regressão’)
27. plt.xlabel(‘Horas de Estudo’)
28. plt.ylabel(‘Notas do Exame’)
29. plt.legend()
30. plt.show()
Saída:
Coeficiente linear (beta_0): 45.597677085080264
Coeficiente angular (beta_1): 5.458972545781039
No
ta
s d
o
ex
am
e
2 3 4 5 6 7 8 9 10
Horas de estudo
100
90
80
70
60
Dados reais
Reta de regressão
Figura 20
Neste exemplo, estamos usando o gradiente descendente para ajustar os coeficientes da regressão
linear. O algoritmo itera várias vezes, atualizando os coeficientes com base nas derivadas parciais da
função de erro em relação a esses coeficientes. A taxa de aprendizado (α) determina o tamanho dos
passos que o algoritmo dá em direção ao mínimo da função de erro.
116
Unidade II
Lembrete
Em problemas reais, é mais comum utilizar bibliotecas como NumPy
e scikit-learn para fazer ajustes de regressão linear e otimização, uma vez
que elas já implementam esses algoritmos de maneira eficiente.
No entanto, é importante ajustar a taxa de aprendizado adequadamente, pois um valor muito
pequeno pode levar a um treinamento lento ou a um mínimo local subótimo, e um valor muito grande
pode causar oscilações ou não convergir para o mínimo global. Além disso, o gradiente descendente pode
sofrer com problemas de gradientes esparsos, que ocorrem quando a função de perda tem áreas planas
ou regiões onde o gradiente é próximo de zero.
O gradiente descendente é um algoritmo fundamental para otimização de modelos em aprendizado
de máquina. Ele utiliza o cálculo do gradiente da função de perda para atualizar iterativamente os
parâmetros do modelo, buscando minimizar a função de perda e melhorar o desempenho do modelo
na tarefa de aprendizado. Com o gradiente descendente, conseguimos ajustar os parâmetros de forma
iterativa, permitindo que o modelo se adapte aos dados de treinamento e generalize para novos exemplos.
Nem sempre o gradiente descendente converge para o mínimo global da função de perda. Em alguns
casos, ele pode convergir para um mínimo local ou ficar preso em um platô. Existem técnicas, como o
uso de diferentes variantes do gradiente descendente ou a inicialização dos parâmetros com valores
diferentes, que podem ajudar a melhorar a convergência.
Em problemas com muitas características (alta dimensionalidade), o gradiente descendente pode
enfrentar dificuldades devido ao chamado “espaço emagrecido” (vanishing gradient) ou “espaço
inchado” (exploding gradient). Nestes casos, é comum aplicar técnicas como regularização ou redução
de dimensionalidade para mitigar esses problemas.
Como dito, a escolha inicial dos parâmetros pode afetar o desempenho do gradiente descendente.
Uma inicialização inadequada leva a um treinamento ineficiente ou a uma convergência para mínimos
subótimos. Precisamos explorar diferentes técnicas de inicialização e encontrar a mais adequada para o
modelo específico.
Trata-se de uma técnica poderosa que permite a otimização iterativa dos parâmetros de um modelo
de aprendizado de máquina. Com suas variantes e considerações, é uma ferramenta essencial para treinar
modelos em uma ampla gama de problemas. Ao entender as nuances do gradiente descendente e ajustar
adequadamente seus hiperparâmetros, obtemos modelos bem ajustados e com bom desempenho.
117
CIÊNCIA DE DADOS
6.4 Regressão linear múltipla
A regressão linear múltipla é uma técnica de aprendizado de máquina que visa modelar a relação
entre uma variável dependente contínua e várias variáveis independentes. Trata-se de uma extensão da
regressão linear simples, na qual apenas uma variável independente é considerada.
Aqui, o objetivo é encontrar uma equação que represente a relação linear entre as variáveis
independentes e a variável dependente. Ela é chamada de modelo de regressão, sendo expressa da
seguinte forma:
Y X X n Xn� � � � � �� � � �0 1 1 2 2 ...
Onde:
• Y é a variável dependente (variável a ser prevista);
• X1, X2,..., Xn são as variáveis independentes;
• β0, β1, β2,..., βn são os coeficientes que representam os pesos atribuídos a cada variável independente.
O processo de ajuste de um modelo de regressão linear múltipla envolve encontrar os valores ideais
para os coeficientes β0, β1, β2,..., βn, de modo a minimizar a diferença entre os valores previstos pelo
modelo e os valores reais da variável dependente.
A seleção adequada das variáveis independentes é um aspecto crítico na regressão linear múltipla.
Devemos escolher as variáveis que possuem uma forte correlação com a variável dependente e que
sejam relevantes para o problema em questão. A inclusão de variáveis irrelevantes ou altamente
correlacionadas pode levar a problemas de multicolinearidade e ao superajuste do modelo.
Existem diferentes técnicas e métodos para estimar os coeficientes do modelo de regressão linear
múltipla, sendo os mais comuns:
• Mínimos quadrados ordinários (OLS): é o método mais utilizado, que minimiza a soma dos
quadrados das diferenças entre os valores previstos e os valores reais. Ele encontra os coeficientes
que minimizam essa soma, produzindo o melhor ajuste linear aos dados.
• Regularização (como Lasso e Ridge): são técnicas que adicionam um termo de penalização
aos coeficientes do modelo para evitar o superajuste e reduzir a influência de variáveis menos
relevantes. O Lasso realiza uma seleção automática de variáveis, enquanto o Ridge reduz os
coeficientes, mas não os zera.
• Métodos de seleção de variáveis: existem abordagens para selecionar automaticamente as
variáveis mais relevantes para o modelo, como Stepwise, Forward, Backward, entre outros. Esses
métodos consideram diferentes combinações de variáveis para encontrar o melhor conjunto
de preditores.
118
Unidade II
Exemplo: suponha que temos um conjunto de dados que relaciona a quantidade de horas de estudo,
a quantidade de horas de sono e a quantidade de exercícios feitos (três variáveis independentes) com
as notas obtidas em um exame (variável dependente). Queremos criar um modelo de regressão linear
múltipla para prever a nota do exame com base nessas variáveis independentes.
1. import numpy as np
2. from sklearn.linear_model import LinearRegression
3. # Dados de exemplo
4. horas_de_estudo = np.array([2, 4, 6, 7, 8, 10])
5. horas_de_sono = np.array([7, 6, 8, 7, 9, 6])
6. exercicios_feitos = np.array([0, 1, 2, 3, 2, 1])
7. notas_do_exame = np.array([65, 75, 80, 82, 90, 95])
8. # Preparando os dados em uma matriz de características (X) e um vetor de rótulos (y)
9. X = np.column_stack((horas_de_estudo, horas_de_sono, exercicios_feitos))10. y = notas_do_exame
11. # Criar o modelo de regressão linear múltipla
12. modelo = LinearRegression()
13. # Treinar o modelo com os dados de treinamento
14. modelo.fit(X, y)
15. # Coeficientes (parâmetros) ajustados pelo modelo
16. coeficientes = modelo.coef_
17. coef_intercepto = modelo.intercept_
18. # Imprimir os coeficientes
19. print(“Coeficientes:”, coeficientes)
20. print(“Intercepto:”, coef_intercepto)
21. # Fazer previsões para novos valores
22. novos_dados = np.array([[5, 8, 1], [9, 7, 2]])
23. notas_previstas = modelo.predict(novos_dados)
24. print(“Notas previstas:”, notas_previstas)
Saída:
Coeficientes: [3.82157969 0.57299013 -0.83533145]
Intercepto: 54.74682651622003
Notas previstas: [77.60331453 91.48131171]
119
CIÊNCIA DE DADOS
Neste exemplo, estamos criando um modelo de regressão linear múltipla usando as três variáveis
independentes: horas de estudo, horas de sono e exercícios feitos. O modelo é treinado com esses dados
e, em seguida, o utilizamos para fazer previsões com base em novos valores de horas de estudo, horas
de sono e exercícios feitos.
A regressão linear múltipla é utilizada em várias áreas, como economia, ciências sociais, finanças,
saúde e muitas outras. Ela permite fazer previsões e entender a relação entre múltiplas variáveis
independentes e uma variável dependente contínua. Ao interpretar os coeficientes do modelo, é possível
inferir o impacto das variáveis independentes sobre a variável dependente, bem como prever com base
nos valores das variáveis independentes.
6.5 Regressão logística
A regressão logística é um modelo estatístico utilizado para realizar análise de classificação binária,
ou seja, para prever a probabilidade de um evento pertencer a uma das duas categorias possíveis. Apesar
do nome “regressão”, ela é, na verdade, um modelo de classificação.
A regressão logística é especialmente útil quando a variável dependente é categórica e não contínua.
Ela estima a probabilidade de um evento ocorrer com base em um conjunto de variáveis independentes.
A variável dependente é binária, assumindo valores como 0 e 1, ou Verdadeiro e Falso.
O modelo de regressão logística utiliza a função logística, também conhecida como função sigmoide,
para mapear a saída linear da combinação linear das variáveis independentes em um intervalo entre 0 e 1.
Essa transformação permite interpretar a saída como uma probabilidade.
A equação da regressão logística é dada por:
p X X n Xn� � � � � � � �1 1 0 1 1 2 2/ ( exp( ( ... )))� � � �
Onde:
• p é a probabilidade de o evento ocorrer;
• β0, β1, β2,..., βn são os coeficientes que representam os pesos atribuídos a cada variável independente;
• X1, X2,..., Xn são as variáveis independentes.
Os coeficientes β0, β1, β2,..., βn são estimados utilizando técnicas de otimização, como a máxima
verossimilhança, de forma a encontrar os melhores valores que maximizem a probabilidade de observar
os dados reais.
A interpretação dos coeficientes na regressão logística é feita em termos de odds ratio. O odds ratio
representa a mudança na razão de chances de ocorrência do evento quando uma variável independente
aumenta em uma unidade, mantendo todas as outras variáveis constantes.
120
Unidade II
A regressão logística tem diversas aplicações em ciência de dados e análise preditiva, sendo utilizada
em problemas de classificação, como prever se um e-mail é spam ou não, se um cliente fará uma compra
ou não, se um paciente tem uma doença ou não, entre outros.
Além da regressão logística simples, existem variantes, como a regressão logística multinomial para
classificação em mais de duas categorias e a regressão logística ordinal para classificação ordenada. Elas
permitem lidar com problemas de classificação mais complexos.
Exemplo: suponha que temos um conjunto de dados que contém informações sobre alunos e
queremos prever se um deles será aprovado (1) ou reprovado (0) com base em suas horas de estudo
e notas em exames anteriores. Usaremos a regressão logística para construir um modelo que faça
essa previsão.
1. import numpy as np
2. from sklearn.model_selection import train_test_split
3. from sklearn.linear_model import LogisticRegression
4. from sklearn.metrics import accuracy_score
5. # Dados de exemplo
6. horas_de_estudo = np.array([5, 1, 6, 7, 4, 9, 2, 8, 3, 10])
7. notas_exame = np.array([85, 50, 80, 90, 60, 95, 55, 92, 70, 98])
8. aprovado = np.array([1, 0, 1, 1, 0, 1, 0, 1, 0, 1])
9. # Preparando os dados em uma matriz de características (X) e um vetor de rótulos (y)
10. X = np.column_stack((horas_de_estudo, notas_exame))
11. y = aprovado
12. # Dividindo os dados em conjuntos de treinamento e teste
13. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
14. # Criar o modelo de regressão logística
15. modelo = LogisticRegression()
16. # Treinar o modelo com os dados de treinamento
17. modelo.fit(X_train, y_train)
18. # Fazer previsões para os dados de teste
19. previsoes = modelo.predict(X_test)
20. # Calcular a acurácia do modelo
21. acuracia = accuracy_score(y_test, previsoes)
22. print(“Acurácia do modelo:”, acuracia)
Saída:
Acurácia do modelo: 1.0
121
CIÊNCIA DE DADOS
Neste exemplo, estamos usando a regressão logística para classificar se um aluno será aprovado
ou reprovado com base nas horas de estudo e nas notas em exames anteriores. O modelo é treinado
com os dados de treinamento e, em seguida, é avaliado usando os dados de teste para calcular a
acurácia do modelo.
A regressão logística é um método poderoso para a análise de classificação binária, permitindo
estimar a probabilidade de um evento ocorrer com base em um conjunto de variáveis independentes. Ela
é utilizada na prática de ciência de dados e fornece insights valiosos para a tomada de decisões.
7 PLANEJAMENTO DE EXPERIMENTOS
O planejamento de experimentos (design of experiments, DoE) é uma abordagem estatística para
investigar e otimizar processos, sistemas ou produtos por meio de experimentos controlados. Seu objetivo
principal é identificar fatores que afetam a resposta desejada e determinar as melhores configurações
desses fatores para atingir os resultados desejados.
Ele envolve a seleção cuidadosa das variáveis de interesse, a definição das configurações ou níveis
dessas variáveis e a realização de experimentos controlados para coletar os dados necessários. Esses
experimentos são projetados de forma sistemática e eficiente, de modo a obter informações relevantes
com o menor número possível de tentativas.
Existem vários tipos de designs de experimentos, cada um adequado para diferentes situações e
objetivos. Alguns dos designs mais comuns incluem:
Design fatorial
Tipo de design em que todas as combinações possíveis dos níveis dos fatores são testadas. Isso
permite investigar o efeito de cada fator individualmente, bem como as interações entre eles.
Design fracionado
Design que permite testar apenas uma fração dos possíveis tratamentos. Fato útil quando o número
de combinações possíveis é muito grande, não sendo possível realizar todos os experimentos. O design
fracionado possibilita a obtenção de informações úteis sobre os efeitos principais dos fatores, mas não
a investigação de interações entre eles.
Design de blocos
Design em que os experimentos são divididos em blocos ou grupos. Em cada bloco, os tratamentos
são atribuídos de forma aleatória. Isso é útil quando há fontes de variação não controladas que podem
afetar os resultados, e os blocos ajudam a controlar essas variações.
122
Unidade II
Design central composto
Tipo que combina um desenho fatorial completo com pontos adicionais no centro do espaço de
trabalho. Esses pontos permitem estimar os efeitos quadráticos dos fatores e verificar se existe uma
região ótima de operação.
O planejamento de experimentos possibilita que os cientistas de dados e os engenheiros obtenham
informações valiosas sobre os processos e sistemas que estão investigando. Eles podem identificar quaisfatores são mais significativos e quais têm um impacto insignificante na resposta desejada. Isso ajuda
na tomada de decisões, na otimização de processos e na melhoria da qualidade dos produtos.
Além disso, ele auxilia na redução de custos, pois permite encontrar a melhor configuração dos
fatores sem a necessidade de realização de muitos experimentos. Através da análise dos resultados,
conseguimos fazer inferências estatísticas e obter insights sobre o sistema em estudo.
O planejamento de experimentos é essencial para investigar e otimizar processos, sistemas ou
produtos, possibilitando aos cientistas de dados e aos engenheiros obter informações valiosas sobre os
fatores que afetam uma resposta desejada e determinar as melhores configurações desses fatores para
atingir os resultados desejados.
7.1 Split de dados – treino, teste e validação
O split de dados é uma técnica comumente usada em aprendizado de máquina para dividir o conjunto
de dados em três partes distintas: treinamento, teste e validação. Essa divisão é realizada com o objetivo
de avaliar e validar o desempenho do modelo de aprendizado de máquina de forma adequada. Seus
principais itens são: conjunto de treinamento, conjunto de teste e conjunto de validação.
Conjunto de treinamento
Porção do conjunto de dados usada para treinar o modelo de aprendizado de máquina. Ele é ajustado
com base nessas amostras de treinamento, aprendendo os padrões e as relações entre as variáveis.
Conjunto de teste
Após o treinamento do modelo, ele precisa ser avaliado em dados não vistos anteriormente para
verificar como generaliza e se comporta em situações diferentes. O conjunto de teste é usado para medir
o desempenho do modelo em dados independentes, ou seja, dados que o modelo não encontrou durante o
treinamento. Isso ajuda a avaliar o quão bem ele se ajustou aos dados e a estimar sua capacidade de
generalização.
Conjunto de validação
O conjunto de validação é usado para ajustar os hiperparâmetros do modelo. Os hiperparâmetros
são configurações que não são aprendidas pelo modelo, mas que afetam seu desempenho, como o
123
CIÊNCIA DE DADOS
número de camadas em uma rede neural ou a taxa de aprendizado. Ele é utilizado para avaliar diferentes
configurações do modelo e selecionar aquela que apresenta o melhor desempenho em termos de
métricas específicas.
Temos de ressaltar que a divisão do conjunto de dados em treinamento, teste e validação deve ser
realizada de forma aleatória e estratificada, garantindo que as proporções das classes sejam mantidas
em cada conjunto. Isso evita um viés nos resultados de avaliação do modelo.
Além disso, é fundamental ter um conjunto de teste e validação que represente adequadamente
os dados futuros que o modelo encontrará. Portanto, recomenda-se que esses conjuntos sejam
independentes e não vistos pelo modelo durante o treinamento.
O split de dados é uma prática importante para a construção e avaliação de modelos de aprendizado
de máquina. Ele permite uma avaliação justa e imparcial do desempenho do modelo em dados não
vistos anteriormente. Dessa forma, é possível tomar decisões informadas sobre o ajuste do modelo,
seleção de hiperparâmetros e estimativa de sua capacidade de generalização para dados futuros.
Além do split tradicional em treinamento, teste e validação, há técnicas avançadas de divisão de dados
que podem ser utilizadas, dependendo do contexto e dos objetivos do projeto. Alguns exemplos incluem:
Cross-validation (validação cruzada)
Técnica que permite usar todos os dados disponíveis para treinamento e avaliação do modelo.
O conjunto de dados é dividido em k partes iguais (k-fold), e o modelo é treinado e avaliado k vezes, cada
vez utilizando uma parte diferente como conjunto de teste e as demais como conjunto de treinamento.
Isso ajuda a reduzir a variância da estimativa do desempenho do modelo.
Leave-one-out (LOO)
Variação do cross-validation em que k é igual ao número total de amostras no conjunto de dados.
Ou seja, o modelo é treinado e avaliado k vezes, sendo que em cada iteração apenas uma amostra é
usada como conjunto de teste, e as demais são utilizadas como conjunto de treinamento. Essa técnica
pode ser útil quando o conjunto de dados é pequeno.
Time-series split (divisão de séries temporais)
Técnica usada quando os dados estão em ordem cronológica, como séries temporais. Nesse caso, é
importante levar em consideração a dependência temporal dos dados. A divisão é realizada de forma a
preservar a ordem temporal, na qual o conjunto de treinamento contém as amostras mais antigas e o
conjunto de teste possui as amostras mais recentes.
124
Unidade II
Stratified sampling (amostragem estratificada)
Técnica usada quando há classes desbalanceadas no conjunto de dados. Nesse caso, a divisão dos
dados é feita de forma a garantir que a proporção de classes seja preservada em cada conjunto. Isso evita
viés nos resultados de avaliação, principalmente quando a classe minoritária é de interesse especial.
Cada técnica de divisão de dados tem suas vantagens e é adequada para diferentes cenários.
A escolha da técnica a ser utilizada depende das características dos dados, do tamanho do conjunto de
dados e dos objetivos do projeto. O objetivo principal é garantir que o modelo seja avaliado de forma
justa e imparcial, fornecendo uma estimativa realista de seu desempenho em dados futuros.
7.2 Validação cruzada
A validação cruzada, também conhecida como cross-validation, é uma técnica utilizada na avaliação
de modelos de aprendizado de máquina. Ela é especialmente útil quando o conjunto de dados disponível
é limitado e é necessário obter uma estimativa mais confiável do desempenho do modelo.
Sua ideia básica é dividir o conjunto de dados em várias partes chamadas “folds”. O número de folds é
determinado pelo parâmetro k, geralmente denotado como k-fold cross-validation. Cada fold é utilizado
de forma alternada como conjunto de teste e conjunto de treinamento. O modelo é treinado k vezes,
cada vez utilizando k-1 folds como conjunto de treinamento e o fold restante como conjunto de teste.
Dessa forma, todos os dados são usados tanto para treinamento quanto para teste em algum
momento. A métrica de desempenho do modelo, como acurácia, precisão, recall ou F1-score, é calculada
para cada iteração e, ao final, uma média é obtida a fim de representar a performance geral do modelo.
Observação
Acurácia
A acurácia é a métrica mais simples e direta. Ela mede a proporção
de predições corretas em relação ao total de predições. É calculada
da seguinte forma:
Acur cia
N mero de predi corretas
Total de predi es
á
ú ções
çõ
=
A acurácia é útil quando as classes estão balanceadas, ou seja, há
aproximadamente a mesma quantidade de exemplos de cada classe. No
entanto, em situações de desequilíbrio de classes, a acurácia pode ser
enganosa, pois o modelo pode ficar viciado para prever a classe majoritária.
125
CIÊNCIA DE DADOS
Precisão
A precisão é a proporção de exemplos verdadeiramente positivos
(verdadeiros positivos) em relação a todos os exemplos classificados como
positivos (verdadeiros positivos mais falsos positivos). Trata-se de uma
métrica que avalia a qualidade das previsões positivas do modelo.
Precis o
Verdadeiros positivos
Verdadeiros positivos Falsos po
ã �
� ssitivos
Ela é útil quando o foco está em minimizar os falsos positivos, ou seja,
quando prever incorretamente a classe positiva é problemático.
Recall (sensibilidade ou taxa de verdadeiros positivos)
O recall é a proporção de exemplos verdadeiramente positivos
(verdadeiros positivos) em relação a todos os exemplos que realmente
pertencem à classe positiva (verdadeiros positivos mais falsos negativos).
Essa métrica é importante quando o foco está em capturar a maioria dos
verdadeiros positivos.
Recall
Verdadeiros positivos
Verdadeiros positivos Falsos nega
�
� ttivos
F1-score
O F1-score é uma métrica que combina precisão e recall em uma
única medida. Trata-seda média harmônica entre essas duas métricas,
sendo especialmente útil quando desejamos encontrar um equilíbrio entre
precisão e recall.
F Score
ecis o call
ecis o call
1 2� � �
�
Pr * Re
Pr Re
ã
ã
Ele é bastante utilizado em situações de desequilíbrio de classes,
quando queremos levar em consideração tanto os falsos positivos quanto
os falsos negativos.
A acurácia é uma métrica geral que pode ser enganosa em problemas
de desequilíbrio de classes, enquanto a precisão, recall e F1-score oferecem
insights mais detalhados sobre o desempenho do modelo em diferentes
aspectos das previsões de classificação. A escolha da métrica depende do
contexto e das prioridades do problema enfrentado.
126
Unidade II
A validação cruzada ajuda a mitigar o problema da variância na avaliação do modelo, pois fornece
uma estimativa mais robusta do desempenho em relação a um único conjunto de teste. Além disso, ela
permite uma melhor utilização dos dados disponíveis, já que todas as amostras são utilizadas tanto para
treinamento quanto para teste em algum momento.
Existem diferentes variações da validação cruzada, como o k-fold cross-validation, leave-one-out (LOO),
stratified cross-validation, entre outros. Cada uma delas possui características específicas e é adequada
para diferentes situações, dependendo do tamanho do conjunto de dados, da sua natureza e da distribuição
das classes.
Trata-se de uma técnica poderosa para avaliar a capacidade de generalização de um modelo de
aprendizado de máquina, permitindo uma melhor estimativa do seu desempenho em dados não vistos.
Ela é utilizada na seleção de modelos, ajuste de hiperparâmetros e comparação de diferentes abordagens
em tarefas de classificação, regressão e outras.
Uma das variações mais comuns da validação cruzada é o k-fold cross-validation. Nela, o conjunto de
dados é dividido em k-folds de tamanho aproximadamente igual. Cada fold é usado como conjunto
de teste uma vez, enquanto os k-1 folds restantes são empregados como conjunto de treinamento. Esse
processo é repetido k vezes, de forma que todos os folds tenham sido utilizados como conjunto de teste.
A métrica de desempenho do modelo é calculada para cada iteração, e a média delas é geralmente
usada como uma estimativa do desempenho geral do modelo. Isso permite a obtenção de uma medida
mais robusta e confiável do desempenho do modelo, pois todos os dados são utilizados tanto para
treinamento quanto para teste.
Exemplo: vamos usar a técnica de validação cruzada k-fold, que divide o conjunto de dados em k
subconjuntos (chamados de “folds”). O modelo é treinado k vezes, cada uma delas usando k-1 folds
como conjunto de treinamento e o fold restante como conjunto de teste. Isso nos permite obter várias
estimativas de desempenho e reduzir o risco de overfitting.
1. import numpy as np
2. from sklearn.model_selection import cross_val_score
3. from sklearn.linear_model import LogisticRegression
4. # Dados de exemplo
5. X = np.array([[5, 85], [1, 50], [6, 80], [7, 90], [4, 60], [9, 95], [2, 55], [8, 92], [3, 70], [10, 98]])
6. y = np.array([1, 0, 1, 1, 0, 1, 0, 1, 0, 1])
7. # Criar o modelo de regressão logística
8. modelo = LogisticRegression()
9. # Realizar validação cruzada com 5 folds
10. num_folds = 5
11. scores = cross_val_score(modelo, X, y, cv=num_folds, scoring=’accuracy’)
127
CIÊNCIA DE DADOS
12. # Imprimir as acurácias em cada fold
13. for fold, score in enumerate(scores):
14. print(f”Fold {fold + 1}: Acurácia = {score:.2f}”)
15. # Imprimir a média e o desvio padrão das acurácias
16. mean_accuracy = np.mean(scores)
17. std_accuracy = np.std(scores)
18. print(“\nMédia das Acurácias:”, mean_accuracy)
19. print(“Desvio Padrão das Acurácias:”, std_accuracy)
Saída:
Fold 1: Acurácia = 1.00
Fold 2: Acurácia = 1.00
Fold 3: Acurácia = 1.00
Fold 4: Acurácia = 1.00
Fold 5: Acurácia = 1.00
Média das Acurácias: 1.0
Desvio Padrão das Acurácias: 0.0
Neste exemplo, estamos usando a função cross_val_score do scikit-learn para realizar a validação
cruzada. O parâmetro cv define o número de folds, e o parâmetro scoring define a métrica de avaliação
(no caso, estamos usando a acurácia). O resultado é uma lista de acurácias obtidas em cada fold. Também
calculamos a média e o desvio padrão das acurácias para ter uma noção da consistência do modelo.
A validação cruzada é uma técnica essencial para avaliar e comparar modelos de aprendizado
de máquina. Ela permite uma avaliação mais precisa do desempenho do modelo em dados não
vistos, fornecendo uma estimativa mais confiável de sua capacidade de generalização. No entanto,
é importante saber que a validação cruzada pode ser computacionalmente intensiva, especialmente
quando o conjunto de dados é grande, e pode levar a um tempo de treinamento mais longo. Portanto,
é necessário considerar a capacidade computacional disponível ao escolher o número de folds e a
abordagem adequada de validação cruzada.
7.3 Benchmarking
Benchmarking é uma prática utilizada para comparar o desempenho de um sistema, processo ou
modelo em relação a outros similares. No contexto da ciência de dados, é frequentemente aplicado
para avaliar o desempenho de algoritmos de aprendizado de máquina ou técnicas de processamento de
dados em tarefas específicas.
128
Unidade II
Seu objetivo principal é fornecer uma referência ou ponto de comparação para medir o desempenho
relativo de diferentes abordagens. Isso é importante para ajudar a identificar as melhores práticas,
técnicas e modelos em um determinado domínio ou problema.
Existem várias etapas envolvidas no processo de benchmarking:
1. Definição do problema: primeiramente, é necessário definir claramente o problema que será
abordado e as métricas de desempenho relevantes. Isso permite que os resultados sejam comparáveis
e significativos.
2. Seleção de benchmarks: em seguida, são selecionados conjuntos de dados de referência
(benchmarks) que são representativos do problema em questão. Eles devem ser bem estabelecidos e
utilizados na comunidade científica.
3. Escolha de técnicas de referência: são selecionadas técnicas de referência, como algoritmos
de aprendizado de máquina ou métodos de processamento de dados, que são adotados no domínio
do problema. Essas técnicas são usadas como pontos de comparação para avaliar o desempenho de
abordagens alternativas.
4. Execução dos experimentos: as técnicas de referência e as abordagens alternativas são
implementadas e executadas nos benchmarks selecionados. Os resultados são registrados e comparados
com base nas métricas de desempenho definidas.
5. Análise dos resultados: os resultados obtidos são analisados estatisticamente para identificar
diferenças significativas de desempenho entre as variadas abordagens. Isso ajuda a reconhecer quais
técnicas são mais eficazes ou eficientes para resolver o problema em questão.
O benchmarking é uma prática valiosa, pois fornece uma maneira sistemática de avaliar e comparar
o desempenho de técnicas de ciência de dados. Isso permite que pesquisadores, profissionais e
desenvolvedores identifiquem as melhores soluções disponíveis, impulsionem a inovação e promovam
avanços no campo da ciência de dados. Além disso, ele pode ser usado a fim de estabelecer padrões
e referências para o desempenho de modelos e algoritmos em diferentes domínios e cenários.
Para garantir a validade dos resultados e possibilitar comparações justas, é fundamental que os
experimentos sejam reprodutíveis. Isso significa que as mesmas condições experimentais devem ser
aplicadas a todas as abordagens testadas, incluindo a mesma configuração de parâmetros, ambiente de
execução e conjunto de dados.
Ao realizar benchmarking, precisamos considerar a escalabilidade das abordagens em termos de
tamanho do conjunto de dados e recursos computacionais. Uma técnica pode funcionar bem em
conjuntos de dados pequenos, mas pode não ser adequada para grandes volumes de dados. Portanto, é
importante avaliar o desempenho em diferentesescalas para ter uma visão completa.
129
CIÊNCIA DE DADOS
Embora os benchmarks sejam úteis para comparar o desempenho relativo de diferentes abordagens
em um conjunto de dados específico, é essencial considerar a generalização para outros conjuntos de
dados e cenários. Uma abordagem que funciona bem em um benchmark específico pode não ser a
melhor escolha em diferentes contextos. Portanto, temos de avaliar a capacidade de generalização delas.
O benchmarking não é um processo estático. À medida que novas técnicas e abordagens surgem,
precisamos atualizar os benchmarks e reavaliar o desempenho das técnicas de referência. Isso permite
acompanhar os avanços e identificar novas soluções promissoras.
A fim de promover a transparência e a colaboração na comunidade científica, encoraja-se o
compartilhamento dos resultados do benchmarking. Isso pode ser feito por meio de publicações
científicas, repositórios de código e conjuntos de dados de referência. Dessa forma, outros pesquisadores
e profissionais podem se beneficiar dos insights e conhecimentos obtidos.
O benchmarking autoriza avaliação e comparação objetiva de diferentes abordagens. Ele auxilia
na seleção e no desenvolvimento de modelos e técnicas mais eficientes e precisas. Ao seguir as boas
práticas de benchmarking, conseguimos tomar decisões informadas, impulsionar a inovação e avançar
no campo da ciência de dados.
8 ANÁLISE DE RESULTADOS EXPERIMENTAIS E APLICAÇÕES AVANÇADAS DE ML
Análise de resultados experimentais é uma fase fundamental em projetos de ciência de dados e
aprendizado de máquina. Após a realização de experimentos e a obtenção de resultados, precisamos
interpretar e analisar os dados para extrair informações relevantes e tomar decisões embasadas. Além
disso, existem aplicações avançadas de aprendizado de máquina que vão além das técnicas tradicionais
e exploram métodos mais sofisticados e complexos. Neste contexto, abordaremos esses dois tópicos.
Análise de resultados experimentais
• Avaliação de desempenho: os resultados experimentais precisam ser avaliados em relação às
métricas de desempenho definidas previamente. Isso pode incluir medidas como acurácia, precisão,
recall, F1-score, entre outras, dependendo do tipo de problema. A análise de desempenho permite
determinar quão bem o modelo se saiu na tarefa proposta.
• Interpretação dos resultados: a análise dos resultados possibilita entender o comportamento do
modelo e identificar padrões e insights relevantes. Pode envolver a identificação de características
importantes, a análise de erros cometidos pelo modelo e a compreensão das relações entre os
atributos do conjunto de dados.
• Validação estatística: a realização de testes estatísticos para verificar a significância dos
resultados obtidos é importante. Isso ajuda a evitar conclusões equivocadas e a fornecer uma
base estatística sólida para as análises realizadas.
130
Unidade II
Aplicações avançadas de aprendizado de máquina
• Aprendizado profundo (deep learning): área avançada de aprendizado de máquina que utiliza
redes neurais artificiais profundas para aprender representações complexas e realizar tarefas
sofisticadas, como processamento de imagens, reconhecimento de fala e tradução automática.
• Aprendizado por reforço (reinforcement learning): técnica que permite que um agente aprenda
a tomar decisões em um ambiente dinâmico, recebendo feedback em forma de recompensas.
É aplicado em problemas de tomada de decisão, como jogos, controle de robôs e otimização
de recursos.
• Aprendizado semissupervisionado: esta abordagem combina elementos de aprendizado
supervisionado e não supervisionado, permitindo o uso de uma pequena quantidade de dados
rotulados e uma grande quantidade de dados não rotulados. É útil quando rotular dados for caro
ou demorado, mas há disponibilidade de muitos dados não rotulados.
• Aprendizado por transferência (transfer learning): envolve o aproveitamento de conhecimentos
adquiridos em uma tarefa para auxiliar o aprendizado em outra tarefa relacionada. É útil quando
há escassez de dados na tarefa atual, pois permite que o modelo aproveite informações de
tarefas anteriores.
• Aprendizado online: refere-se à capacidade de aprender e atualizar modelos continuamente à
medida que novos dados são recebidos em tempo real. É aplicado em cenários nos quais os dados
estão em constante mudança e é necessário adaptar-se rapidamente a novas informações.
Essas são apenas algumas das aplicações avanças de aprendizado de máquina que vão além das
técnicas tradicionais. Existem muitas outras técnicas e abordagens avançadas, cada uma com suas
características e aplicabilidades específicas. Além disso, devemos mencionar que as aplicações avançadas
de aprendizado de máquina geralmente exigem conjuntos de dados maiores, recursos computacionais
mais poderosos e maior conhecimento técnico para implementação e ajuste adequado dos modelos.
No campo da medicina, o aprendizado de máquina tem sido aplicado para auxiliar no diagnóstico
médico, prever riscos de doenças, identificar padrões em grandes conjuntos de dados clínicos e apoiar a
descoberta de novas terapias. No setor financeiro, é usado para análise de crédito, detecção de fraudes,
previsão de mercado, análise de risco e otimização de investimentos. Na indústria, o aprendizado de
máquina é aplicado para otimizar processos de produção, prever falhas em equipamentos, realizar
manutenção preditiva, melhorar a qualidade dos produtos e otimizar a cadeia de suprimentos. No campo
do marketing, é utilizado para análise de sentimentos, segmentação de clientes, recomendação de
produtos, personalização de campanhas de marketing e previsão de demanda. No setor de transporte e
logística, o aprendizado de máquina é empregado para otimizar rotas, prever a demanda de transporte,
melhorar a eficiência da cadeia de suprimentos e realizar previsões de manutenção de veículos.
Essas são apenas algumas das muitas aplicações avançadas de aprendizado de máquina que têm
impactado diversos setores. À medida que a tecnologia continua a evoluir e mais dados se tornam
131
CIÊNCIA DE DADOS
disponíveis, novas oportunidades surgem para aplicar técnicas de aprendizado de máquina e obter
insights valiosos a fim de tomar decisões informadas e impulsionar a inovação em diferentes áreas.
8.1 Métricas
As métricas desempenham um papel fundamental na avaliação e no monitoramento de modelos
de aprendizado de máquina. Elas são medidas quantitativas que nos permitem avaliar o desempenho
e a qualidade dos modelos, comparar diferentes abordagens e tomar decisões informadas sobre sua
eficácia. Existem várias métricas que podem ser usadas, dependendo do tipo de problema e do objetivo
específico. Vamos discutir algumas das mais comuns no contexto de aprendizado de máquina:
Matriz de confusão (confusion matrix)
A matriz de confusão é uma ferramenta que permite visualizar o desempenho de um modelo
de classificação em mais detalhes. Ela mostra a contagem de verdadeiros positivos, falsos positivos,
verdadeiros negativos e falsos negativos. Com base nessa matriz, várias métricas adicionais podem
ser calculadas, como sensibilidade (recall), especificidade, taxa de falsos positivos e taxa de
falsos negativos.
Exemplo: suponha que temos um problema de classificação binária, no qual estamos tentando
prever se um paciente tem uma determinada doença (classe positiva) ou não (classe negativa) com base
em um teste médico. Vamos usar os termos “Doente” (classe positiva) e “Saudável” (classe negativa).
Aqui está uma possível matriz de confusão:
Tabela 1
Doente previsto Saudável previsto
Doente 85 (VP) 15 (FN)
Saudável 10 (FP) 90 (VN)
Nesta matriz de confusão:
• Verdadeiro positivo (VP): 85 pacientes foram corretamente classificados como “Doentes”.
• Falso negativo (FN): 15 pacientes foram erroneamente classificados como “Saudáveis”, mas na
verdade estão “Doentes”.
• Falso positivo (FP): 10 pacientes foram erroneamente classificadoscomo “Doentes”, mas na
verdade estão “Saudáveis”.
• Verdadeiro negativo (VN): 90 pacientes foram corretamente classificados como “Saudáveis”.
132
Unidade II
Com base nessa matriz de confusão, podemos calcular várias métricas de avaliação. Além disso, ela
fornece insights importantes sobre como o modelo se comporta em relação a cada classe, ajudando
a identificar em quais situações o modelo está tendo mais dificuldade e ajustando estratégias para
melhorar o desempenho do modelo.
Acurácia (accuracy)
A acurácia é uma métrica utilizada em problemas de classificação. Ela mede a taxa de acertos do
modelo, ou seja, a proporção de instâncias classificadas corretamente em relação ao total de instâncias.
Por exemplo: se o modelo faz 100 previsões e acerta 75 delas, sua acurácia é de 75%.
Acuracia
VP VN
VP VN FP FN
�
�
� � �
Precisão (precision) e sensibilidade (recall)
Essas métricas são particularmente úteis quando lidamos com problemas de classificação
desbalanceados, ou seja, quando as classes têm tamanhos diferentes. A precisão mede a proporção de
instâncias positivas corretamente identificadas em relação ao total de instâncias classificadas como
positivas. Já a sensibilidade mede a proporção de instâncias positivas corretamente identificadas em
relação ao total de instâncias positivas.
Precis o
VP
VP FP
ã �
�
Recall
VP
VP FN
�
�
F1-score
O F1-score é uma métrica que combina a precisão e a recall em uma única medida. Ele fornece
uma média harmônica entre as duas métricas, levando em consideração tanto os verdadeiros positivos
quanto os falsos negativos e falsos positivos. O F1-score é útil quando se deseja obter um equilíbrio
entre precisão e recall.
F Score
ecis o
ecis o
1 2� � �
�
�
Pr
Pr
ã Recall
ã Recall
Erro quadrático médio (mean squared error – MSE)
O MSE é uma métrica comumente usada em problemas de regressão. Ele mede a média dos erros
quadrados entre os valores preditos e os valores reais. Quanto menor o valor do MSE, mais próximos os
valores preditos estão dos valores reais.
133
CIÊNCIA DE DADOS
Coeficiente de determinação (R²)
O coeficiente de determinação é uma métrica utilizada para avaliar o quão bem o modelo se ajusta
aos dados em um problema de regressão. Ele varia de 0 a 1, onde 0 indica que o modelo não consegue
explicar a variabilidade dos dados e 1 que o modelo se ajusta perfeitamente aos dados.
Além dessas métricas, existem aquelas que podem ser utilizadas dependendo do contexto e do
problema específico, como a área sob a curva ROC (AUC-ROC), o índice Jaccard, a entropia cruzada,
entre outras. É importante selecionar as métricas adequadas de acordo com o problema em questão.
Além disso, temos de considerar o contexto do problema, a distribuição dos dados e os requisitos
específicos do projeto.
A curva ROC (receiver operating characteristic) é uma ferramenta que avalia o desempenho de um
modelo de classificação binária variando o limiar de decisão do modelo e traçando a taxa de verdadeiros
positivos (recall) em função da taxa de falsos positivos. Consta a seguir o exemplo de como criar uma
curva ROC usando a biblioteca scikit-learn em Python:
1. import numpy as np
2. import matplotlib.pyplot as plt
3. from sklearn.datasets import make_classification
4. from sklearn.model_selection import train_test_split
5. from sklearn.ensemble import RandomForestClassifier
6. from sklearn.metrics import roc_curve, auc
7. # Gerar dados de exemplo
8. X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
9. # Dividir os dados em conjuntos de treinamento e teste
10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
11. # Criar o modelo Random Forest
12. modelo = RandomForestClassifier(n_estimators=100, random_state=42)
13. # Treinar o modelo com os dados de treinamento
14. modelo.fit(X_train, y_train)
15. # Obter as probabilidades previstas para a classe positiva
16. probs = modelo.predict_proba(X_test)[:, 1]
17. # Calcular a curva ROC
18. fpr, tpr, thresholds = roc_curve(y_test, probs)
134
Unidade II
19. # Calcular a área sob a curva ROC (AUC)
20. roc_auc = auc(fpr, tpr)
21. # Plotar a curva ROC
22. plt.figure(figsize=(10, 6))
23. plt.plot(fpr, tpr, color=’darkorange’, lw=2, label=f’Curva ROC (AUC = {roc_auc:.2f})’)
24. plt.plot([0, 1], [0, 1], color=’navy’, lw=2, linestyle=’--’)
25. plt.xlim([0.0, 1.0])
26. plt.ylim([0.0, 1.05])
27. plt.xlabel(‘Taxa de Falsos Positivos’)
28. plt.ylabel(‘Taxa de Verdadeiros Positivos’)
29. plt.title(‘Curva ROC - Exemplo com Random Forest’)
30. plt.legend(loc=”lower right”)
31. plt.show()
Saída:
1.0
1.0
0.8
0.8
0.6
0.6
0.4
0.4
Taxa de falsos positivos
Ta
xa
d
e
ve
rd
ad
ei
ro
s p
os
iti
vo
s
Curva ROC - Exemplo com random forest
0.2
0.2
0.0
0.0
Curva ROC (AUC = 0.94)
Figura 21
Neste exemplo, estamos gerando dados de exemplo usando make_classification, dividindo-os em
conjuntos de treinamento e teste, e criando um modelo RandomForestClassifier com 100 estimadores.
Em seguida, calculamos a curva ROC e a área sob a curva ROC (AUC) e plotamos a curva ROC usando a
biblioteca matplotlib. Quanto mais próxima a curva ROC estiver do canto superior esquerdo do gráfico
e maior for a AUC, melhor o modelo estará em equilibrar a taxa de verdadeiros positivos e a taxa
135
CIÊNCIA DE DADOS
de falsos positivos em diferentes limiares de decisão. A curva ROC é uma ferramenta valiosa para
avaliar a capacidade discriminativa de um modelo de classificação e comparar diferentes modelos
ou configurações.
As métricas de avaliação são essenciais para monitorar o desempenho do modelo ao longo do tempo,
comparar diferentes modelos e ajustar hiperparâmetros. Uma única métrica pode não ser suficiente
para avaliar completamente o desempenho do modelo, por isso recomenda-se considerar várias delas
em conjunto a fim de obter uma visão abrangente.
Além das métricas de avaliação, é comum utilizar técnicas de validação cruzada e testes estatísticos
para avaliar a robustez e a significância estatística dos resultados obtidos pelo modelo.
As métricas são ferramentas importantes para avaliar a eficácia e o desempenho dos modelos de
aprendizado de máquina. Elas nos ajudam a tomar decisões informadas sobre a escolha do modelo,
ajuste de parâmetros e avaliação do impacto das alterações. É fundamental entender o contexto e as
necessidades específicas do problema para selecionar as métricas mais adequadas.
8.2 Classificação
A classificação é uma tarefa fundamental em aprendizado de máquina, que envolve a categorização de
dados em classes ou categorias predefinidas. Trata-se de um problema comum em diversas áreas, como
reconhecimento de padrões, processamento de linguagem natural, diagnóstico médico, detecção
de fraudes, entre outros.
Seu objetivo é treinar um modelo capaz de aprender um padrão a partir de um conjunto de dados
de treinamento rotulados, para que possa classificar corretamente novos dados não rotulados. O modelo
classificador recebe como entrada um conjunto de características (features) e atribui a cada instância
uma classe específica.
Existem diferentes algoritmos de classificação, cada um com suas características e suposições
subjacentes. Alguns dos mais comuns incluem:
Árvores de decisão
As árvores de decisão são estruturas hierárquicas que representam decisões baseadas em condições.
Elas dividem o conjunto de dados com base em atributos, criando regras de decisão que permitem
classificar as instâncias.
Exemplo: suponha que estamos trabalhando com um conjunto de dados fictício para prever se um
animal é um “Cachorro” ou “Gato” com base em suas características.
136
Unidade II
1. import numpy as np
2. from sklearn.datasets import make_classification
3. from sklearn.model_selection import train_test_split
4. from sklearn.tree import DecisionTreeClassifier
5. from sklearn import tree
6. import matplotlib.pyplot as plt
7. # Gerar dados de exemplo
8. X, y = make_classification(n_samples=300, n_features=2,n_informative=2, n_redundant=0, n_
clusters_per_class=1, random_state=42)
9. # Dividir os dados em conjuntos de treinamento e teste
10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
11. # Criar o modelo de Árvore de Decisão
12. modelo = DecisionTreeClassifier(random_state=42)
13. # Treinar o modelo com os dados de treinamento
14. modelo.fit(X_train, y_train)
15. # Visualizar a Árvore de Decisão
16. plt.figure(figsize=(10, 6))
17. tree.plot_tree(modelo, feature_names=[‘Característica 1’, ‘Característica 2’], class_names=[‘Cachorro’,
‘Gato’], filled=True)
18. plt.title(“Árvore de Decisão”)
19. plt.show()
20. # Fazer previsões para os dados de teste
21. previsoes = modelo.predict(X_test)
22. # Calcular a acurácia do modelo
23. acuracia = np.mean(previsoes == y_test)
24. print(“Acurácia do modelo:”, acuracia)
137
CIÊNCIA DE DADOS
Saída:
Característica 2 <= 0.215
gini = 0.5
samples = 240
value = [121, 119]
class = Cachorro
Característica 1 <= 1.729
gini = 0.236
samples = 139
value = [120, 19]
class = Cachorro
Característica 1 <= 1.504
gini = 0.375
samples = 4
value = [1, 3]
class = Gato
Característica 2 <= 0.398
gini = 0.278
samples = 18
value = [15, 3]
class = Cachorro
Característica 1 <= 1.286
gini = 0.408
samples = 7
value = [5, 2]
class = Cachorro
Característica 1 <= 1.341
gini = 0.208
samples = 17
value = [15, 2]
class = Cachorro
Característica 1 <= 1.064
gini = 0.408
samples = 21
value = [15, 6]
class = Cachorro
Característica 2 <= 1.353
gini = 0.02
samples = 101
value = [1, 100]
class = Gato
Característica 2 <= 0.404
gini = 0.104
samples = 127
value = [120, 7]
class = Cachorro
Característica 1 <= 0.962
gini = 0.019
samples = 127
value = [105, 1]
class = Cachorro
Característica 1 <= 0.966
gini = 0.043
samples = 46
value = [45, 1]
class = Cachorro
gini = 0.0
samples = 60
value = [60, 0]
class = Cachorro
gini = 0.0
samples = 1
value = [0, 1]
class = Gato
gini = 0.0
samples = 45
value = [45, 0]
class = Cachorro
gini = 0.0
samples = 5
value = [5, 0]
class = Cachorro
gini = 0.0
samples = 2
value = [0, 2]
class = Gato
gini = 0.0
samples = 1
value = [0, 1]
class = Gato
gini = 0.0
samples = 3
value = [0, 3]
class = Gato
gini = 0.0
samples = 12
value = [0, 12]
class = Gato
gini = 0.0
samples = 3
value = [0, 3]
class = Gato
gini = 0.0
samples = 97
value = [0, 97]
class = Gato
gini = 0.0
samples = 1
value = [1, 0]
class = Cachorro
gini = 0.0
samples = 10
value = [10, 0]
class = Cachorro
Àrvore de decisão
Figura 22
Neste exemplo, estamos usando make_classification para gerar um conjunto de dados fictício com
duas características (características 1 e 2). Dividimos os dados em conjuntos de treinamento e teste,
criando um modelo de árvore de decisão com DecisionTreeClassifier, treinando o modelo com os dados
de treinamento e visualizando a árvore resultante usando tree.plot_tree. Em seguida, fizemos previsões
para os dados de teste e calculamos a acurácia do modelo. Esta é uma implementação simplificada para
138
Unidade II
fins de demonstração. Em problemas reais, devemos ajustar os parâmetros do modelo, realizar validação
cruzada e realizar outras etapas de pré-processamento de dados a fim de obter uma avaliação mais
precisa do desempenho do modelo.
Observação
O índice de Gini é uma métrica usada para medir a desigualdade em
uma distribuição. No contexto da classificação de árvores de decisão, ele
é usado para avaliar a impureza de um conjunto de exemplos em relação
às suas classes, sendo uma das métricas empregadas para tomar decisões
sobre como dividir os dados em um nó da árvore de decisão.
O índice de Gini varia de 0 a 1, onde:
• 0 representa perfeita igualdade, ou seja, todos os elementos
pertencem à mesma classe;
• 1 representa máxima desigualdade, ou seja, os elementos estão
igualmente distribuídos entre todas as classes possíveis.
Naive Bayes
O algoritmo Naive Bayes é baseado no Teorema de Bayes e assume que as características são
independentes entre si. Ele calcula a probabilidade de cada classe para uma instância e seleciona aquela
com maior probabilidade.
K-vizinhos mais próximos (KNN)
O KNN classifica as instâncias com base na maioria das classes dos seus k-vizinhos mais próximos.
A distância entre as instâncias é calculada e os k-vizinhos mais próximos são selecionados para tomar
a decisão de classificação.
Máquinas de vetores de suporte (SVM)
As SVM são algoritmos de aprendizado supervisionado que encontram um hiperplano de separação
ótimo entre as classes. Elas mapeiam os dados em um espaço de alta dimensionalidade e buscam a
melhor separação linear ou não linear.
Redes neurais artificiais
As redes neurais artificiais são modelos inspirados no funcionamento do cérebro humano. Elas são
compostas de camadas de neurônios interconectados e aprendem a partir dos dados por meio do ajuste
dos pesos das conexões.
139
CIÊNCIA DE DADOS
Saiba mais
A fim de compreender melhor acerca do funcionamento dos algoritmos
de classificação, recomendamos a leitura do seguinte livro:
MUELLER, J. P.; MASSARON, L. Python para Data Science para Leigos. Rio de
Janeiro: Alta Books, 2020. E-book. Disponível em: https://tinyurl.com/mt8mbft2.
Acesso em: 18 ago. 2023.
Cada algoritmo tem suas vantagens e desvantagens, e a escolha do melhor depende do conjunto
de dados, da natureza do problema e do desempenho desejado. Além disso, é importante realizar uma
análise aprofundada dos dados, pré-processar os dados de forma adequada e realizar uma validação
rigorosa do modelo para garantir sua eficácia e generalização.
A classificação é uma técnica poderosa que permite automatizar a tarefa de categorização de dados,
facilitando a tomada de decisões em diversos domínios. Com o avanço da tecnologia e o aumento da
disponibilidade de dados, os modelos de classificação têm se tornado mais sofisticados e precisos.
8.3 Regressão
A regressão é uma técnica estatística utilizada em aprendizado de máquina para modelar a relação
entre uma variável de resposta (ou variável dependente) e um conjunto de variáveis explicativas (ou
variáveis independentes). Seu objetivo é encontrar um modelo matemático que possa descrever e prever
o valor da variável de resposta com base nas variáveis explicativas.
Ela é comumente aplicada quando a variável de resposta é uma quantidade contínua, como a
temperatura, o preço de um produto, o tempo de resposta etc., possibilitando o entendimento da relação
entre as variáveis e a realização de previsões sobre o comportamento da variável de resposta para diferentes
valores das variáveis explicativas.
Existem diferentes tipos de regressão, sendo os mais comuns:
• Regressão linear simples: assume-se que a relação entre a variável de resposta e a variável
explicativa é linear. O modelo consiste em encontrar a linha reta que melhor se ajusta aos pontos
de dados no espaço bidimensional.
• Regressão linear múltipla: é uma extensão da regressão linear simples para casos em que há
mais de uma variável explicativa. O modelo busca encontrar um hiperplano que se ajuste aos
dados no espaço multidimensional.
140
Unidade II
• Regressão logística: é usada quando a variável de resposta é categórica e binária, ou seja, possui
apenas duas categorias. Ela modela a relação entre as variáveis explicativas e a probabilidade de
ocorrência de uma determinada categoria.
• Regressão polinomial: permite modelar relacionamentos não lineares entre as variáveis, incluindo
termos polinomiais de graus superiores. Ela é útil quando a relação entre as variáveis não pode ser
adequadamente descrita por uma linha reta ou um hiperplano.
• Regressão de séries temporais: é empregada quando a variável de resposta é uma série temporal,
ou seja, uma sequência de observações em ordem cronológica. Ela busca modelar a tendência,
sazonalidade e outros padrões presentes nos dados ao longo do tempo.Saiba mais
Com o objetivo de aprender mais sobre regressão, recomendamos os
capítulos 14, 15 e 16 do seguinte livro:
GRUS, J. Data science do zero: primeiras regras com Python. Rio de
Janeiro: Alta Books, 2016.
A escolha do modelo de regressão adequado depende da natureza dos dados, do objetivo da análise
e das suposições subjacentes ao modelo. É importante avaliar a qualidade do ajuste do modelo por
meio de métricas como o coeficiente de determinação (R²), o erro médio quadrático (RMSE) e o desvio
padrão residual.
A regressão é utilizada em diversos campos, como economia, finanças, ciências sociais, ciências
naturais, saúde, entre outros. Ela permite compreender e quantificar as relações entre as variáveis e
fornecer insights valiosos para a tomada de decisões, previsões e inferências.
A regressão pode ser usada para prever as vendas de produtos com base em variáveis como preço,
publicidade, concorrência e outras métricas de mercado. Isso permite que as empresas estimem a
demanda futura e otimizem suas estratégias de estoque, produção e marketing. Podemos empregá-la
para analisar e entender os padrões de mercado, identificar tendências, relacionamentos entre variáveis
e fatores que influenciam o comportamento do consumidor. Isso ajuda as empresas a tomar decisões
informadas sobre posicionamento de produtos, segmentação de mercado e estratégias de preço.
Pode também ser empregada para prever o preço de imóveis com base em características como
tamanho, localização, número de quartos etc. Isso auxilia compradores, vendedores e corretores de imóveis
a tomar decisões de compra, venda ou investimento, bem como na modelagem de risco financeiro a fim
de prever o desempenho de investimentos, estimar a probabilidade de inadimplência em empréstimos,
analisar o impacto de variáveis econômicas nas taxas de juros e outros indicadores financeiros.
141
CIÊNCIA DE DADOS
Ainda é usada para prever a demanda de produtos ou serviços com base em dados históricos
de vendas, fatores sazonais, atividades promocionais e outros fatores relevantes, o que possibilita
às empresas otimizarem sua cadeia de suprimentos, estoques e planejamento de produção. É muito
aplicada em estudos médicos e de saúde para modelar a relação entre variáveis como idade, sexo, estilo
de vida, histórico médico e risco de doenças, taxa de recuperação de pacientes e outros resultados de
saúde. Isso auxilia na identificação de fatores de risco e no desenvolvimento de estratégias de prevenção
e tratamento.
Por fim, a regressão pode ser utilizada para prever a demanda de energia com base em variáveis
climáticas, padrões de consumo, dias da semana e outras influências. Isso ajuda empresas de energia a
planejar e gerenciar a produção e distribuição de energia de forma eficiente.
Essas são apenas algumas das muitas aplicações da regressão. A técnica é extremamente versátil e
pode ser adaptada para atender às necessidades específicas de diferentes setores e problemas. Através da
análise de dados e modelagem estatística, ela desempenha um papel fundamental na tomada de decisões
informadas, previsões precisas e compreensão das relações entre variáveis em diversas áreas de estudo.
8.4 Seleção de modelos
A seleção de modelos consiste em escolher o modelo mais apropriado que melhor se ajusta aos dados
e é capaz de realizar as tarefas desejadas, como previsão ou classificação, de forma precisa e confiável.
Ela é crucial para garantir resultados exatos e evitar problemas como overfitting ou underfitting.
Existem várias técnicas e abordagens para a seleção de modelos. Alguns métodos comuns incluem:
• Avaliação por critérios estatísticos: envolve o uso de métricas estatísticas para comparar
diferentes modelos. Por exemplo, pode-se usar o critério de informação de Akaike (AIC) ou o critério
de informação bayesiano (BIC) a fim de avaliar a qualidade do ajuste de cada modelo. Modelos
com valores mais baixos de AIC ou BIC são preferidos, indicando um melhor ajuste aos dados.
• Validação cruzada: é uma técnica que divide os dados em conjuntos de treinamento e teste,
permitindo avaliar o desempenho do modelo em dados não utilizados durante o treinamento.
Através da comparação do desempenho dos modelos em diferentes conjuntos de dados de teste,
podemos identificar aquele que generaliza melhor.
• Curva de validação: é uma técnica que envolve a avaliação do desempenho do modelo em
relação a diferentes configurações de hiperparâmetros. Ela ajuda a identificar o ponto ideal
em que o modelo atinge o melhor equilíbrio entre viés e variância. Isso é especialmente útil
quando se trabalha com modelos que possuem hiperparâmetros ajustáveis, como algoritmos de
aprendizado de máquina.
• Comparação de métricas de desempenho: pode também ser baseada na comparação de
métricas de desempenho, como acurácia, precisão, recall ou erro quadrático médio. Dependendo
142
Unidade II
da tarefa em questão, diferentes métricas podem ser relevantes. A escolha do modelo é feita com
base na métrica que melhor atende às necessidades e objetivos do projeto.
• Abordagens automatizadas: é possível ainda utilizar algoritmos de seleção de modelos
automatizados, como busca em grade, busca aleatória ou otimização bayesiana. Essas abordagens
exploram diferentes combinações de hiperparâmetros e técnicas de modelagem para encontrar o
modelo com melhor desempenho em termos de métricas predefinidas.
Precisamos ressaltar que a seleção de modelos é um processo iterativo, e diferentes abordagens
podem ser combinadas para a obtenção de resultados mais robustos. Além disso, é fundamental
considerar o contexto específico do problema, o tamanho e a qualidade dos dados disponíveis, bem
como as restrições de recursos computacionais.
A seleção de modelos é uma etapa crítica na construção de modelos do aprendizado de máquina e
envolve a comparação e avaliação de diferentes opções para encontrar o modelo mais adequado para
uma tarefa específica. A escolha correta do modelo contribui para a obtenção de resultados precisos
e confiáveis, permitindo a utilização eficaz do modelo na tomada de decisões e na solução de problemas.
A seleção de modelos envolve a consideração de critérios estatísticos, como AIC e BIC, a aplicação
de técnicas de validação cruzada, a análise de curvas de validação e a comparação de métricas de
desempenho relevantes.
Além disso, é importante considerar fatores como a interpretabilidade do modelo, a escalabilidade
computacional, a disponibilidade de recursos e restrições específicas do problema. Por exemplo, em
alguns casos, modelos mais simples e interpretativos, como regressão linear, podem ser preferíveis se
a explicabilidade dos resultados é fundamental. Em outros, como em problemas de processamento de
linguagem natural, podem ser necessários modelos mais complexos, como redes neurais.
A seleção de modelos também pode envolver a avaliação de diferentes técnicas de aprendizado de
máquina, como árvores de decisão, regressão logística, SVM (support vector machines), redes neurais,
entre outras. Cada técnica tem suas vantagens e desvantagens, e a escolha depende do tipo de problema,
dos dados disponíveis e das metas do projeto.
Ressaltamos que a seleção de modelos não é uma tarefa única e definitiva. À medida que novos dados
são coletados e o problema evolui, recomenda-se revisar e ajustar a escolha do modelo, garantindo que
ele permaneça adequado e eficiente. O acompanhamento contínuo do desempenho do modelo e a
atualização das técnicas e algoritmos utilizados são práticas essenciais na seleção de modelos.
A seleção de modelos é uma etapa crucial na construção de soluções baseadas em aprendizado
de máquina. Ela envolve a avaliação e comparação de diferentes modelos, técnicas e métricas de
desempenho, levando em consideração o contexto do problema, as características dos dados e as
necessidades do projeto. Uma seleção cuidadosa e criteriosa permite obter resultados confiáveis e
maximizar o potencial da aplicaçãode aprendizado de máquina.
143
CIÊNCIA DE DADOS
8.5 Visão computacional
Visão computacional é uma área da ciência da computação que se dedica ao desenvolvimento de
algoritmos e técnicas para permitir que computadores “enxerguem” e compreendam imagens e vídeos.
Ela busca replicar a capacidade de percepção visual humana por meio da análise e interpretação
de dados visuais.
Ela envolve o processamento de imagens e vídeos para extrair informações relevantes e realizar tarefas
como reconhecimento de objetos, detecção de padrões, segmentação de imagens, reconhecimento
facial, entre outras, desempenha um papel fundamental em diversas aplicações práticas, como sistemas
de vigilância, veículos autônomos, detecção médica, reconhecimento de caracteres em documentos,
realidade aumentada e muito mais.
Para realizar essas tarefas, a visão computacional se baseia em algoritmos e técnicas de processamento
de imagens e aprendizado de máquina. Alguns dos conceitos e técnicas comumente utilizados na visão
computacional incluem:
• Pré-processamento de imagens: envolve a aplicação de técnicas de filtragem, suavização,
equalização de histograma e normalização para melhorar a qualidade e o contraste das imagens
antes da análise.
• Extração de características: consiste em identificar e extrair características relevantes das
imagens que são úteis para a tarefa em questão, como bordas, texturas, cores ou formas.
• Segmentação de imagens: é o processo de dividir uma imagem em regiões significativas e
identificar objetos ou áreas de interesse com base em propriedades como cor, intensidade ou textura.
• Reconhecimento de padrões: inclui a identificação e classificação de objetos ou padrões
específicos em imagens com base em características previamente aprendidas.
• Aprendizado de máquina em visão computacional: usa-se frequentemente para treinar
modelos capazes de reconhecer objetos ou realizar tarefas de classificação em imagens nos
algoritmos de aprendizado de máquina, como redes neurais convolucionais (CNNs).
A visão computacional também pode ser combinada com outras tecnologias, como processamento
de linguagem natural (PLN) e realidade aumentada (RA), para criar sistemas mais avançados e interativos.
No entanto, a visão computacional ainda enfrenta desafios, como a variação de iluminação, a
complexidade das cenas, a oclusão de objetos e a necessidade de grandes conjuntos de dados rotulados
para treinamento adequado dos modelos.
Trata-se de uma área multidisciplinar que utiliza técnicas de processamento de imagens e aprendizado
de máquina para capacitar os computadores a interpretar e compreender informações visuais. Ela tem
144
Unidade II
aplicações amplas e promissoras em diversos setores, trazendo avanços significativos na automação,
segurança, saúde, entretenimento e outras áreas.
8.6 Processamento de linguagem natural
Processamento de linguagem natural (PLN) é uma área da inteligência artificial que se dedica ao
estudo e desenvolvimento de algoritmos e técnicas para permitir que computadores compreendam,
analisem e gerem linguagem humana de forma natural. Seu objetivo é possibilitar a interação entre
humanos e máquinas por meio da linguagem escrita ou falada.
O PLN envolve uma série de tarefas complexas, como reconhecimento de fala, compreensão de
texto, tradução automática, sumarização de textos, geração de texto, resposta a perguntas, análise
de sentimentos, entre outras. Ele lida com a ambiguidade, a variação linguística, a semântica e a estrutura
da linguagem humana.
Existem diferentes etapas envolvidas no processamento de linguagem natural. Algumas delas incluem:
1. Pré-processamento: nesta etapa, o texto é preparado para análise, envolvendo a remoção de
pontuações, a tokenização (divisão do texto em palavras ou unidades menores), a remoção de stopwords
(palavras não significativas) e a lematização (redução das palavras às suas formas básicas).
2. Análise morfológica: é a identificação e categorização das palavras em termos de sua estrutura
gramatical, como substantivos, verbos, adjetivos etc. Isso ajuda a compreender as relações entre
as palavras.
3. Análise sintática: envolve a análise da estrutura gramatical das frases, identificando a relação
entre as palavras e a hierarquia gramatical.
4. Análise semântica: é a compreensão do significado das palavras, das relações semânticas entre
elas e a interpretação do contexto em que são usadas.
5. Análise pragmática: considera o contexto e o conhecimento prévio para interpretar
adequadamente a linguagem. Isso envolve a inferência de informações implícitas, conhecimento de
mundo e intenções do autor.
6. Geração de texto: é a capacidade de criar texto de forma automática, com base em regras e
modelos predefinidos. Pode ser usado em chatbots, sistemas de resumo automático, entre outros.
Para realizar essas tarefas, o PLN se baseia em técnicas como processamento estatístico de linguagem
natural, modelos de aprendizado de máquina, redes neurais, algoritmos de classificação e agrupamento,
entre outros.
145
CIÊNCIA DE DADOS
O PLN tem diversas aplicações práticas, como assistentes virtuais, sistemas de tradução automática,
análise de sentimentos em redes sociais, detecção de spam, correção automática de texto, sistemas de
resumo automático, entre outros.
Uma das principais aplicações do PLN é a análise de sentimentos, que envolve a classificação de textos
quanto à sua polaridade emocional, como positivo, negativo ou neutro. Isso pode ser útil para empresas
monitorarem a opinião dos clientes em relação a produtos e serviços, ou para análise de redes sociais
em busca de tendências e insights. Outra aplicação é a tradução automática, que permite a tradução
de textos de um idioma para outro de forma rápida e eficiente. Essa tecnologia tem sido utilizada em
serviços de tradução online, facilitando a comunicação entre pessoas que falam línguas diferentes.
O processamento de linguagem natural também desempenha um papel importante na área de
assistentes virtuais, como a Siri da Apple, a Alexa da Amazon e o Google Assistant. Esses assistentes
usam técnicas de PLN para entender os comandos e perguntas dos usuários e fornecer respostas
relevantes e precisas.
Além disso, o PLN é empregado em sistemas de recomendação, que sugerem produtos, filmes,
músicas ou conteúdos com base nas preferências e histórico do usuário. Esses sistemas utilizam técnicas
de análise de texto e processamento semântico para entender os interesses do usuário e fornecer
recomendações personalizadas.
No campo da saúde, o processamento de linguagem natural é utilizado na extração de informações
de prontuários médicos eletrônicos, identificação de padrões em dados clínicos e auxílio no diagnóstico de
doenças com base em sintomas relatados pelos pacientes.
No entanto, o processamento de linguagem natural ainda apresenta desafios, como a compreensão
de nuances linguísticas, o reconhecimento de sarcasmo e ironia, a tradução precisa de idiomas complexos
e a interpretação correta de contextos ambíguos. Trata-se de uma área da inteligência artificial que
visa capacitar os computadores a compreender e gerar linguagem humana de forma natural. Ele
desempenha papel importante na interação humano-computador, tornando possível a comunicação e
o desenvolvimento de sistemas e aplicações que lidam com texto e linguagem escrita. Com o avanço da
tecnologia e o aumento da disponibilidade de dados textuais, o processamento de linguagem natural se
tornou cada vez mais relevante e promissor.
Saiba mais
A fim de conhecer mais sobre processamento de linguagem natural (PLN),
recomendamos a leitura do capítulo 22 do livro a seguir:
NORVIG, P. Inteligência artificial. Rio de Janeiro: Grupo GEN, 2013.
146
Unidade II
8.7 Reconhecimento de fala
O reconhecimento de fala, também conhecido como reconhecimento automático de fala ou ASR
(automatic speech recognition, em inglês), é uma área da tecnologia de processamento de linguagemnatural que se concentra em converter a fala humana em texto escrito de forma automatizada.
O objetivo do reconhecimento de fala é permitir que os computadores entendam e processem
a fala humana, facilitando a interação homem-máquina. Essa tecnologia tem aplicações em uma
ampla variedade de setores, como assistentes virtuais, sistemas de atendimento ao cliente, transcrição
automática de áudio, tradução de voz em tempo real, legendagem automática em vídeos, entre outros.
Ele envolve várias etapas:
• Pré-processamento de áudio: o sinal de áudio é processado para remover ruídos e ajustar o
volume a fim de melhorar a qualidade da fala.
• Segmentação da fala: o sinal de áudio é dividido em segmentos menores, correspondentes a
unidades de fala, como palavras ou fonemas.
• Extração de características: características acústicas e espectrais são extraídas dos segmentos
de fala, como frequência fundamental, energia, coeficientes de Mel, entre outros. Elas são usadas
para representar a fala e ajudar a distinguir entre diferentes sons.
• Modelagem acústica: um modelo estatístico é treinado usando técnicas de aprendizado de
máquina a fim de mapear as características acústicas para as unidades de fala correspondentes,
como fonemas, palavras ou subpalavras. Isso permite que o sistema reconheça e diferencie os
diferentes sons da fala.
• Decodificação: com base no modelo acústico treinado, um algoritmo de decodificação é aplicado
para encontrar a sequência de palavras mais provável que corresponda à fala de entrada. Isso
envolve a aplicação de algoritmos de busca e linguagem para encontrar a sequência de palavras
mais coerente e provável.
• Pós-processamento: após a decodificação, pode ser realizado um pós-processamento adicional
para melhorar a precisão do reconhecimento, corrigir erros comuns e realizar tarefas como
pontuação, correção ortográfica e formatação.
O reconhecimento de fala enfrenta desafios, como variações na pronúncia, ruídos de fundo, sotaques
regionais e fala rápida. Com o objetivo de superar esses desafios, técnicas avançadas, como redes neurais
profundas e modelos de linguagem estatística, são aplicadas para melhorar a precisão e a eficácia do
reconhecimento de fala.
Com o avanço da tecnologia, o reconhecimento de fala está se tornando cada vez mais preciso e
utilizado em várias aplicações, como assistentes virtuais, transcrição de áudio, comandos de voz em
147
CIÊNCIA DE DADOS
dispositivos móveis e muito mais. Ele desempenha um papel fundamental na facilitação da interação
entre humanos e máquinas, tornando as tarefas cotidianas mais eficientes e acessíveis.
8.8 APIs de inteligência artificial
As APIs de inteligência artificial (IA) são conjuntos de ferramentas, bibliotecas e recursos
disponibilizados por empresas e provedores de serviços para permitir o acesso e a utilização de
recursos de IA em aplicações e sistemas de software. Elas fornecem funcionalidades pré-criadas de IA,
como reconhecimento de imagem, processamento de linguagem natural, reconhecimento de fala,
detecção de sentimentos, entre outros, para que os desenvolvedores possam integrá-las facilmente em
seus próprios projetos.
As APIs de IA podem ser usadas para uma ampla gama de aplicações, desde chatbots e assistentes
virtuais até análise de dados, automação de tarefas e tomada de decisões. Elas oferecem uma forma
conveniente de utilizar recursos de IA avançados, sem que os desenvolvedores precisem se preocupar
em desenvolver essas funcionalidades do zero.
Algumas das principais APIs de IA disponíveis atualmente incluem:
• APIs de processamento de linguagem natural: permitem realizar tarefas como análise de
sentimento, extração de entidades, classificação de texto e tradução automática. Exemplos
populares incluem a API de processamento de linguagem natural do Google e a API de linguagem
natural do Azure da Microsoft.
• APIs de reconhecimento de imagem: permitem realizar tarefas como detecção de objetos,
reconhecimento facial, identificação de padrões e análise de conteúdo visual. Exemplos notáveis
incluem a API Vision do Google Cloud e a API Computer Vision do Azure.
• APIs de reconhecimento de fala: convertem a fala em texto, permitindo a transcrição
automática de áudio e a interação por meio de comandos de voz. Exemplos populares incluem a
API Speech-to-Text do Google Cloud e a API de reconhecimento de fala do Azure.
• APIs de recomendação: fornecem recursos para criar sistemas de recomendação personalizados,
como recomendação de produtos, músicas, filmes ou conteúdos com base nos interesses e
histórico do usuário. Exemplos notáveis incluem a API de recomendação do Amazon Personalize
e a API de recomendação do Azure.
Ao utilizar APIs de IA, os desenvolvedores podem aproveitar os avanços e os modelos já treinados por
especialistas em IA economizando tempo e recursos no desenvolvimento de funcionalidades complexas.
Além disso, elas geralmente são fáceis de integrar, possuem documentação detalhada e oferecem
suporte técnico, o que facilita o processo de incorporação de recursos de IA em projetos e aplicativos.
No entanto, é importante considerar aspectos como custos associados ao uso das APIs, limitações
de uso, requisitos de autenticação e privacidade dos dados ao integrar serviços de IA em um projeto.
148
Unidade II
Temos de garantir que os dados sejam tratados de forma segura e que as políticas de privacidade sejam
respeitadas.
As APIs de IA proporcionam uma maneira acessível e eficiente de incorporar recursos avançados de
IA em aplicativos e sistemas de software, permitindo que desenvolvedores explorem todo o potencial
da IA sem a necessidade de construir algoritmos complexos do zero.
149
CIÊNCIA DE DADOS
Resumo
Nesta unidade, explicamos como é feita a preparação e pré-processamento
de dados. Trata-se de uma etapa fundamental na análise de dados e
construção de modelos preditivos. Ela envolve a limpeza, transformação
e organização dos dados brutos para torná-los adequados para análise. Isso
pode incluir tratamento de valores ausentes, normalização, padronização,
codificação de variáveis categóricas, detecção e tratamento de outliers,
entre outras técnicas. Uma preparação cuidadosa dos dados é essencial
para garantir que os modelos produzam resultados precisos e confiáveis.
Explicamos os modelos preditivos que são algoritmos de aprendizado de
máquina ou estatísticos treinados em dados históricos para fazer previsões
sobre eventos futuros. Eles podem ser classificadores, regressores, entre
outros, dependendo do tipo de tarefa que estão resolvendo. O processo de
construção de modelos preditivos envolve a seleção de recursos relevantes,
a escolha do algoritmo adequado, o ajuste de hiperparâmetros e a avaliação
do desempenho do modelo usando métricas apropriadas.
Abordamos o tema planejamento de experimentos, que envolve a
definição de um protocolo rigoroso para coletar dados experimentais de
maneira controlada. Isso ajuda a reduzir o viés, a aumentar a validade
e a garantir que as conclusões sejam confiáveis. A análise de resultados
experimentais inclui a aplicação de métodos estatísticos a fim de interpretar
os dados coletados, determinar a significância dos resultados e tirar
conclusões sobre as hipóteses testadas. Isso é fundamental em pesquisa
científica e tomada de decisões informadas.
Apresentamos algumas aplicações avançadas de aprendizado de
máquina que envolvem o uso de técnicas mais complexas e sofisticadas
para resolver problemas desafiadores. Isso pode incluir o uso de redes
neurais profundas (deep learning) para processar dados não estruturados,
como imagens e texto, o uso de algoritmos de reforço para treinar agentes
autônomos, como em carros autônomos ou jogos, e técnicas avançadas
de processamento de linguagem natural para análise de sentimentos,
tradução automática e respostas automáticas.
Por fim, vimos que preparação e pré-processamento de dados é essencial
a fim de garantir a qualidade dosdados usados nos modelos preditivos, os
quais usam algoritmos para fazer previsões com base em dados históricos.
O planejamento de experimentos e a análise de resultados experimentais
150
Unidade II
garantem a validade e a confiabilidade das conclusões, e as aplicações
avançadas de aprendizado de máquina exploram técnicas mais sofisticadas
com o objetivo de resolver problemas complexos em diversos campos.
151
CIÊNCIA DE DADOS
Exercícios
Questão 1. (Fundatec 2022, adaptada) Durante a etapa do pré-processamento da base de dados,
a análise de outliers é uma tarefa comum e relevante para obter modelos de aprendizado de máquina
consistentes. A presença de outliers pode levar a modelos imprecisos quando o modelo é testado ou
colocado em produção. Nesse contexto, avalie as afirmativas.
I – Outliers são dados muito diferentes dos demais, que fogem ao padrão dos dados.
II – Os outliers não precisam ser identificados ou analisados.
III – Outliers são produzidos exclusivamente por erros de medição.
É correto o que se afirma em:
A) I, apenas.
B) III, apenas.
C) I e II, apenas.
D) II e III, apenas.
E) I, II, III e IV.
Resposta correta: alternativa A.
Análise das afirmativas
I – Afirmativa correta.
Justificativa: os outliers são valores que se desviam significativamente do padrão dos demais
dados do conjunto. Esses dados discrepantes podem indicar erros de medição ou anormalidades no
conjunto de dados.
II – Afirmativa incorreta.
Justificativa: os outliers podem distorcer análises e modelos, conforme diz o próprio texto do
enunciado. Por isso, devem ser identificados e analisados.
152
Unidade II
III – Afirmativa incorreta.
Justificativa: os outliers podem ser produzidos por erros de medição e por valores default assumidos
durante o preenchimento de uma base de dados ou podem corresponder a valores corretos, mas
pertencentes a uma base de dados desbalanceada.
Questão 2. (FGV 2022, adaptada). Considere a matriz a seguir, obtida de um experimento de
classificação.
Tabela 2
Real Previsto Gato Rato Cachorro
Gato 10 2 3
Rato 5 14 1
Cachorro 1 2 12
Os valores corretos das métricas de precisão e recall (revocação/sensibilidade) para a classe rato, são,
respectivamente:
A) 0,62 e 0,67.
B) 0,64 e 0,77.
C) 0,67 e 0,62.
D) 0,78 e 0,7.
E) 0,8 e 0,85.
Resposta correta: alternativa D.
Análise da questão
A matriz de confusão é uma ferramenta que permite visualizar o desempenho de um modelo de
classificação. Ela mostra a contagem de verdadeiros positivos, falsos positivos, verdadeiros negativos
e falsos negativos. Com base nessa matriz, várias métricas adicionais podem ser calculadas, como
sensibilidade (recall), especificidade, taxa de falsos positivos e taxa de falsos negativos.
Da matriz de confusão do enunciado, podemos extrair os dados elencados a seguir, a respeito da
classe rato.
• Verdadeiro positivo (VP): 14 ratos previstos eram ratos reais.
• Falso positivo (FP): 4 animais eram ratos previstos, mas não eram ratos reais (2 eram gatos e 2
eram cachorros).
153
CIÊNCIA DE DADOS
• Falso negativo (FN): 6 animais foram classificados como outros animais, mas eram ratos na
realidade (5 classificados como gatos e 1 classificado como cachorro).
O cálculo da precisão é dado pela razão entre os verdadeiros positivos e o somatório entre verdadeiros
positivos e falsos positivos, conforme exposto a seguir.
Pr , ... ,ecis
VP
VP FP
ão �
�
�
�
� � �
14
14 4
14
18
0 777 0 78
O cálculo do recall, ou sensibilidade, é dado pela razão entre os verdadeiros positivos e o somatório
entre verdadeiros positivos e falsos negativos, conforme exposto a seguir.
Re ,call
VP
VP FN
�
�
�
�
� �
14
14 6
14
20
0 7
154
REFERÊNCIAS
Textuais
ALPAYDIN, E. Introduction to Machine Learning. Cambridge: MIT Press, 2004.
CASTRO, L. N.; FERRARI, D. G. Introdução à mineração de dados: conceitos básicos, algoritmos e
aplicações. São Paulo: Saraiva, 2016.
CHAPMAN, P. et al. CRISP-DM 1.0: step-by-step data mining guide. 2000. Disponível em:
https://tinyurl.com/3mn8j4xk. Acesso em: 18 ago. 2023.
DEMCHENKO, Y. et al. Addressing big data issues in Scientific Data Infrastructure. Amsterdam: IEEE,
2013. Disponível em: https://tinyurl.com/4wk2pvp4. Acesso em: 18 ago. 2023.
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio de
Janeiro: LTC, 2011.
FAYYAD, U. M.; PIATETSKY-SHAPIRO, G.; SMYTH, P. From data mining to knowledge discovery in
databases. Artificial Intelligence Magazine, v. 17, n. 3, p. 37-54, 1996.
FILATRO, A. C. Data science na educação: presencial, a distância e corporativa. São Paulo: Saraiva, 2020.
FLACH, P. Machine Learning: The Art and Science of Algorithms that Make Sense of Data. Cambridge:
Cambridge University Press, 2012.
GRUS, J. Data science do zero: primeiras regras com Python. Rio de Janeiro: Alta Books, 2016.
HAN, J.; KAMBER, M.; PEI, J. Data Mining: concepts and techniques. 3. ed. Massachussets:
Morgan Kaufmann, 2011.
KHAN, M.; UDDIN, M. F.; GUPTA, N. Seven V’s of Big Data Understanding Big Data to extract value.
Connecticut: The American Society for Engineering Education, 2014.
LANEY, D. 3D Data Management: Controlling Data Volume, Velocity, and Variety. Stamford: Meta Delta,
2001. Disponível em: https://tinyurl.com/mr2rbhfa. Acesso em: 18 ago. 2023.
MARJANI, M. et al. Big IoT Data Analytics: Architecture, Opportunities, and Open Research Challenges.
IEEE, 2017. Disponível em: https://tinyurl.com/2xnzwsva. Acesso em: 18 ago. 2023.
MITCHELL, T. M. Machine Learning. Portland: McGraw-Hill, 1997.
MORAIS, I. S. et al. Introdução a Big Data e Internet das Coisas (IoT). Porto Alegre: Grupo A, 2018.
E-book. Disponível em: https://tinyurl.com/3ybwscd6. Acesso em: 18 ago. 2023.
155
MUELLER, J. P.; MASSARON, L. Python para Data Science para Leigos. Rio de Janeiro: Alta Books, 2020.
E-book. Disponível em: https://tinyurl.com/mt8mbft2. Acesso em: 18 ago. 2023.
NORVIG, P. Inteligência artificial. Rio de Janeiro: Grupo GEN, 2013.
PIATETSKY, G. CRISP-DM, still the top methodology for analytics, data mining, or data science projects.
KDnuggets, October, 2014. Disponível em: https://tinyurl.com/8b4tevy7. Acesso em: 18 ago. 2023.
PROVOST, F.; FAWCETT, T. Data Science for Business: what you need to know about data mining and
data-analytic thinking. California: O’Reilly Media, 2013.
TAN, P.-N.; STEINBACH, M.; KUMAR, V. Introduction to Data Mining. Boston: Pearson Addison-Wesley,
2006. Disponível em: https://tinyurl.com/mr45rp3p. Acesso em: 18 ago. 2023.
WITTEN, I.; FRANK, E.; HALL, M. Data Mining: practical machine learning tools and techniques. 3. ed.
Massachussets: Morgan Kaufmann, 2011.
ZIKOPOULOS, P.; EATON, C. Understanding Big Data: Analytics for Enterprise Class Hadoop and
Streaming Data. New York: McGraw-Hill Osborne Media, 2011.
156
157
158
159
160
Informações:
www.sepi.unip.br ou 0800 010 9000