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