Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Usando validação cruzada gananciosa para identificar rapidamente modelos ideais de aprendizado de máquina
Usando validação cruzada gananciosa para identificar rapidamente modelos ideais de aprendizado de máquina
Cumprimentos a todos. Eu sou o Dr. Soper, e hoje gostaria de discutir uma técnica que venho desenvolvendo chamada "Validação Greedy Cross". Essa técnica serve como base para identificar com eficiência modelos de aprendizado de máquina ideais ou quase ideais.
Vamos começar com uma breve introdução e uma explicação de por que esse problema é de grande importância. Ao desenvolver soluções de aprendizado de máquina, costuma-se testar vários modelos para determinar qual deles tem o melhor desempenho. Aqui, o termo "modelo" refere-se a uma combinação específica de um algoritmo de aprendizado de máquina e os valores escolhidos para seus parâmetros ajustáveis.
Os praticantes de aprendizado de máquina geralmente enfrentam o desafio de testar centenas ou até milhares de modelos antes de escolher uma escolha final para um projeto de análise ou ciência de dados. Esse processo pode ser demorado, computacionalmente intensivo e caro. Alguns modelos avançados de aprendizado de máquina requerem horas ou até dias para treinar.
Dada a natureza intensiva de recursos para testar um grande número de modelos, os pesquisadores têm procurado maneiras de identificar o modelo de melhor desempenho o mais rápido possível. Os métodos existentes incluem abordagens bayesianas, métodos de descida de gradiente, abordagens evolutivas e treinamento baseado em população, entre outros. Esses métodos normalmente visam identificar relações entre os parâmetros do modelo e a métrica de desempenho, permitindo-lhes explorar regiões promissoras do espaço de busca.
Em contraste com os métodos existentes, o Greedy Cross Validation adota uma abordagem distinta para agilizar a identificação do modelo de melhor desempenho. Em vez de se concentrar em encontrar regiões promissoras no espaço de pesquisa, o Greedy Cross Validation se concentra em medir o próprio desempenho do modelo como base para identificar rapidamente modelos ideais de aprendizado de máquina.
Um modelo compreende parâmetros estruturais e algorítmicos, referidos coletivamente como hiperparâmetros. Os parâmetros estruturais incluem fatores como o número de camadas ou nós ocultos em uma rede neural, enquanto os parâmetros algorítmicos controlam o processo de aprendizado, como o tamanho do minilote ou a taxa de aprendizado. A tarefa de encontrar a combinação ideal de configurações de hiperparâmetros para um problema específico de aprendizado de máquina é conhecida como otimização de hiperparâmetros.
Para compreender o conceito de Greedy Cross Validation, vamos considerar um exemplo simples de busca de um modelo ideal por meio da otimização de hiperparâmetros. Neste caso, temos dois hiperparâmetros representados nos eixos horizontal e vertical. Cada quadrado laranja representa um modelo específico com sua combinação exclusiva de valores de hiperparâmetros. Avaliar o desempenho de cada modelo permite identificar o melhor modelo, e uma abordagem comum para esse fim é conhecida como "pesquisa em grade".
Agora, como estimamos o desempenho real de um modelo? A solução mais comum é testar cada modelo usando dados que não foram encontrados durante o treinamento, um processo conhecido como "validação cruzada k-fold". Veja como funciona:
O desempenho geral do modelo é então calculado como a média dos valores de desempenho obtidos em cada avaliação de dobra. Isso garante uma estimativa robusta do desempenho do modelo.
Agora que entendemos como a validação cruzada padrão funciona, podemos explorar sua função no processo geral de otimização de hiperparâmetros. Ao avaliar vários modelos candidatos usando validação cruzada padrão, cada dobra para um modelo específico atualiza nossa estimativa de seu desempenho. Depois de avaliarmos todas as dobras de um modelo, obtemos a estimativa final de seu desempenho geral. Repetindo esse processo para todos os modelos, podemos identificar o melhor candidato.
Em contraste, a validação cruzada gananciosa adota uma abordagem diferente. Em vez de avaliar todas as dobras para cada modelo em sequência, ele avalia iterativamente as dobras para diferentes modelos. A dobra específica para avaliar a seguir é escolhida dinamicamente com base no desempenho médio atual de cada modelo candidato. Inicialmente, uma dobra é avaliada para cada modelo, e as dobras subsequentes são escolhidas com base no desempenho dos modelos avaliados até o momento.
A ideia-chave por trás da validação cruzada gananciosa é priorizar a avaliação de modelos que se mostram promissores desde o início. Ao fazer isso, podemos identificar rapidamente os modelos que provavelmente terão um bom desempenho e alocar mais recursos computacionais para eles. Essa abordagem elimina a necessidade de avaliar todas as dobras para cada modelo, economizando tempo e recursos computacionais significativos.
Para implementar o Greedy Cross Validation, seguimos os seguintes passos:
Ao selecionar dinamicamente a próxima dobra para avaliar com base no desempenho médio atual dos modelos, o Greedy Cross Validation pode identificar rapidamente os modelos de melhor desempenho. Essa abordagem nos permite focar os recursos computacionais nos modelos mais promissores, desconsiderando os modelos que provavelmente não terão um bom desempenho.
Uma das vantagens do Greedy Cross Validation é sua capacidade de lidar com um grande número de modelos candidatos de forma eficiente. Em vez de avaliar exaustivamente todos os modelos em todas as dobras, o Greedy Cross Validation prioriza e avalia os modelos de forma adaptativa com base em seu desempenho, reduzindo significativamente os requisitos computacionais gerais.
É importante observar que a validação cruzada gananciosa não é um método garantido para encontrar o melhor modelo absoluto. Como outras técnicas de otimização de hiperparâmetros, ela depende de heurísticas e nem sempre identifica o ótimo global. No entanto, fornece uma abordagem prática e eficiente para identificar rapidamente modelos de alto desempenho, especialmente quando se trata de um grande número de candidatos.
Greedy Cross Validation é uma técnica para otimização acelerada de hiperparâmetros em aprendizado de máquina. Ao selecionar e avaliar modelos de forma adaptativa com base em seu desempenho, ele permite a identificação eficiente de modelos de alto desempenho. Embora não garanta encontrar o melhor modelo absoluto, oferece uma solução prática para navegar com eficiência no espaço de pesquisa de hiperparâmetros.
1.1 Visão geral do curso (L01: O que é aprendizado de máquina)
1.1 Visão geral do curso (L01: O que é aprendizado de máquina)
Olá pessoal!
Bem-vindo de volta ao novo semestre. Espero que todos tenham tido umas férias de verão maravilhosas. Neste vídeo, quero dedicar um momento para revisar o material do curso e discutir como trabalharemos juntos neste curso, pois será um pouco diferente das sessões presenciais usuais.
Para este curso, meu plano é gravar as palestras de forma assíncrona. Isso significa que eu pré-gravarei as palestras e as compartilharei com você no início de cada semana. Dessa forma, você pode assistir ao material quando quiser, no horário que melhor lhe convier. Essa abordagem permite a flexibilidade de assistir aos vídeos várias vezes, se necessário. Além disso, se você tiver uma conexão lenta com a Internet, poderá baixar os vídeos para o seu computador para evitar problemas de streaming durante a exibição.
Para facilitar a navegação pelas palestras, dividirei cada palestra em vários vídeos com base em diferentes tópicos. Por exemplo, na Aula 1, terei vídeos separados discutindo o curso em geral, introdução ao aprendizado de máquina, categorias de aprendizado de máquina, notação e aplicativos de aprendizado de máquina. Esse detalhamento ajudará você a se concentrar em tópicos específicos e a revisar facilmente o conteúdo.
Embora o aprendizado assíncrono tenha suas vantagens, entendo que também tenha suas desvantagens, como não poder fazer perguntas durante a palestra. Para resolver isso, apresentarei o horário comercial ao vivo, onde poderemos ter discussões em tempo real. Darei mais detalhes sobre os horários de atendimento em breve.
Agora, vamos começar com a Aula 1. Nesta aula, abordaremos a visão geral do curso, o plano de estudos e os tópicos que abordaremos ao longo do semestre. Passarei por meus slides e fornecerei mais detalhes sobre o curso e outros tópicos relacionados ao aprendizado de máquina.
Falando em conteúdo do curso, dividi o semestre em sete partes ou módulos. Essa divisão nos ajudará a estruturar nossa jornada de aprendizado. Na primeira parte, começaremos com uma introdução ao aprendizado de máquina, onde explicarei os conceitos básicos e fornecerei um exemplo simples de um algoritmo de aprendizado de máquina chamado K-vizinhos mais próximos.
Após a introdução, passaremos para os fundamentos computacionais, que incluem uma breve introdução ao Python e sua relevância para o aprendizado de máquina. Embora a experiência anterior com Python não seja obrigatória, ter um entendimento básico será benéfico, pois usaremos Python extensivamente neste curso. Vamos nos concentrar em bibliotecas específicas, como NumPy para álgebra linear e scikit-learn, a principal biblioteca de aprendizado de máquina.
Nas partes seguintes, abordaremos métodos baseados em árvore, avaliação de modelo, redução de dimensionalidade, aprendizado não supervisionado e aprendizado bayesiano. Esses tópicos são cruciais para entender vários algoritmos de aprendizado de máquina e suas aplicações. Se o tempo permitir, vamos nos aprofundar no aprendizado bayesiano, que engloba métodos baseados no teorema de Bayes.
No final do semestre, teremos apresentações de projetos de classe. Fornecerei mais informações sobre os projetos de classe à medida que avançamos ao longo do semestre.
Para informações detalhadas sobre cada palestra e seu conteúdo, criei um site de curso no Canvas. Você encontrará todos os recursos, incluindo vídeos de aula, slides, notas de aula e tarefas nesta plataforma. Recomendo baixar os slides antes de assistir aos vídeos para que você possa fazer anotações e se envolver com o material de forma mais eficaz.
À medida que avançamos no curso, estarei postando módulos semanais no Canvas, onde você poderá acessar as palestras, slides e outros recursos relevantes. Além disso, farei anúncios no Canvas para mantê-lo informado sobre quaisquer atualizações ou informações importantes relacionadas ao curso. Verifique se você ativou as notificações para anúncios e recomendo que verifique seu e-mail regularmente para se manter atualizado.
Portanto, provavelmente terei que reenviar os vídeos e verificar se eles carregam corretamente. Peço desculpas pela inconveniência e agradeço sua paciência enquanto resolvemos esses problemas técnicos.
Além dos vídeos das palestras, também fornecerei materiais complementares, como exemplos de código e tarefas de casa no GitHub. Você encontrará links para esses recursos no módulo da semana correspondente no Canvas. O GitHub é amplamente usado na comunidade de aprendizado de máquina para compartilhar código e colaborar em projetos, portanto, será benéfico para você se familiarizar com esta plataforma.
Quero enfatizar a importância de verificar regularmente os anúncios no Canvas. Embora eu envie notificações por e-mail para atualizações importantes, é essencial habilitar notificações para anúncios para garantir que você receba todas as informações. Usarei o recurso de anúncio do Canvas para comunicar quaisquer alterações, lembretes ou recursos adicionais relacionados ao curso.
Agora, vamos discutir a estrutura do curso com mais detalhes. Conforme mencionado anteriormente, o semestre é dividido em sete partes ou módulos, cada um abordando tópicos específicos relacionados ao aprendizado de máquina. Esses módulos são projetados para fornecer uma experiência de aprendizagem progressiva, com base em conceitos anteriores e introdução de novos.
Na primeira parte, começaremos com uma introdução ao aprendizado de máquina, onde explicarei os fundamentos da área e fornecerei um exemplo simples de um algoritmo de aprendizado de máquina chamado K-Nearest Neighbors. Isso lhe dará uma amostra de como o aprendizado de máquina funciona e definirá as bases para os próximos módulos.
A segunda parte se concentra nos fundamentos computacionais, onde abordaremos a programação básica do Python e as bibliotecas essenciais usadas no aprendizado de máquina, como NumPy para álgebra linear e scikit-learn para implementar algoritmos de aprendizado de máquina. Embora a experiência anterior com Python não seja obrigatória, recomendo concluir os exercícios interativos que fornecerei no Canvas para se familiarizar com Python, se necessário.
Nas partes subsequentes, vamos nos aprofundar em tópicos específicos dentro do aprendizado de máquina. A parte três abordará métodos baseados em árvore, incluindo árvores de decisão, florestas aleatórias e aumento de gradiente. Esses métodos são amplamente usados em vários aplicativos de aprendizado de máquina e fornecerão ferramentas valiosas para a construção de modelos preditivos.
A parte quatro se concentrará na avaliação do modelo, um aspecto essencial do aprendizado de máquina. Discutiremos técnicas para comparar e avaliar diferentes algoritmos e modelos de aprendizado de máquina, permitindo que você tome decisões informadas ao selecionar e implantar modelos em cenários do mundo real.
A parte cinco explorará a redução de dimensionalidade e o aprendizado não supervisionado. Não se deixe intimidar pelo termo "aprendizagem não supervisionada"; vamos explicá-lo em detalhes durante as palestras. Esta parte se concentra em métodos que analisam e extraem padrões de dados sem rótulos explícitos, abrindo novas possibilidades para exploração e análise de dados.
Se o tempo permitir, na parte seis, vamos nos aprofundar no aprendizado bayesiano, que envolve métodos baseados no teorema de Bayes. Discutiremos classificadores bayesianos, classificadores ingênuos de Bayes e redes potencialmente bayesianas. O aprendizado bayesiano fornece uma estrutura probabilística para entender e modelar a incerteza no aprendizado de máquina.
Por fim, no final do semestre, teremos apresentações de projetos de classe. Fornecerei mais informações sobre os projetos de classe à medida que o semestre avança, mas esta será uma oportunidade para você aplicar seus conhecimentos e habilidades a um problema específico ou conjunto de dados de interesse. Será uma chance de mostrar sua compreensão do material do curso e demonstrar sua capacidade de implementar técnicas de aprendizado de máquina.
Ao longo do semestre, manterei o horário de atendimento ao vivo, onde poderemos participar de discussões em tempo real sobre o material do curso ou qualquer dúvida que você possa ter. Os detalhes desses horários de atendimento serão fornecidos oportunamente, e eu o encorajo a aproveitar esta oportunidade para interagir comigo e com seus colegas de classe.
Para facilitar a comunicação e a colaboração, também utilizaremos o Piazza, uma plataforma online onde você pode postar perguntas, participar de discussões e receber respostas oportunas minhas ou de seus colegas. Encorajo você a participar ativamente do Piazza, pois isso não apenas o beneficiará, mas também contribuirá para a experiência de aprendizado coletivo da turma.
Em conclusão, descrevi a estrutura do curso e os vários recursos disponíveis para você. Espero que esta visão geral tenha fornecido a você uma compreensão clara de como procederemos ao longo do semestre. Se você tiver alguma dúvida ou preocupação, sinta-se à vontade para entrar em contato comigo durante o horário comercial ou postar na Piazza. Estou aqui para apoiar sua jornada de aprendizado e estou animado para embarcar nessa aventura de aprendizado de máquina com todos vocês.
Obrigado e vamos começar com a Aula 1 sobre a visão geral e o programa do curso.
1.2 O que é Machine Learning (L01: O que é Machine Learning)
1.2 O que é Machine Learning (L01: O que é Machine Learning)
Gostaria de dar as boas-vindas a todos vocês no início do novo semestre. Espero que todos tenham tido umas fantásticas férias de verão.
Neste vídeo, quero dedicar um momento para discutir alguns aspectos importantes do curso e como trabalharemos juntos. Este curso será um pouco diferente do formato tradicional onde temos sessões presenciais. Estaremos aproveitando o aprendizado assíncrono, o que significa que vou pré-gravar as palestras e compartilhá-las com você no início de cada semana. Isso permite que você assista ao material quando quiser, sempre que for mais conveniente para você. Além disso, você pode assistir aos vídeos várias vezes, se necessário, e para aqueles com conexões de internet mais lentas, você também pode baixar os vídeos para visualização offline.
Para facilitar a navegação pelas palestras, dividirei cada palestra em vários vídeos com base em diferentes tópicos. Por exemplo, na primeira palestra, abordarei vários tópicos, como uma visão geral do curso, o programa e as diferentes categorias de aprendizado de máquina. Esta palestra será dividida em seis vídeos.
Embora uma das desvantagens do aprendizado assíncrono seja que você não pode fazer perguntas durante a palestra, apresentarei o horário de atendimento ao vivo, onde poderemos discutir quaisquer dúvidas ou preocupações que você possa ter. Darei mais detalhes sobre o horário de expediente mais tarde.
Agora, vamos mergulhar no conteúdo do curso. O semestre será dividido em sete partes ou módulos. Na primeira parte, começaremos com uma introdução ao aprendizado de máquina e um exemplo simples de um algoritmo de aprendizado de máquina chamado K vizinhos mais próximos. Em seguida, abordaremos os fundamentos computacionais, incluindo uma breve introdução ao Python, bem como álgebra linear e a principal biblioteca de aprendizado de máquina, scikit-learn. Se você não tem experiência anterior com Python, não se preocupe. É fácil de aprender e fornecerei exercícios interativos opcionais no Canvas para ajudá-lo a se familiarizar.
Após os fundamentos computacionais, exploraremos métodos baseados em árvores, como árvores de decisão, florestas aleatórias e aumento de gradiente. Em seguida, nos aprofundaremos na avaliação de modelos, um tópico essencial que nos permite comparar diferentes algoritmos e modelos de aprendizado de máquina. Esta parte do curso irá equipá-lo com as habilidades para avaliar e escolher os melhores modelos para aplicações do mundo real.
Em seguida, abordaremos a redução de dimensionalidade e o aprendizado não supervisionado. As técnicas de redução de dimensionalidade são vitais para lidar com conjuntos de dados complexos, e o aprendizado não supervisionado apresentará métodos nos quais não temos dados rotulados para treinar nossos modelos.
Se o tempo permitir, também abordaremos o aprendizado bayesiano, que abrange técnicas como classificadores Naive Bayes e redes bayesianas. Este tópico fornece uma compreensão dos métodos de classificação baseados no teorema de Bayes.
No final do semestre, teremos apresentações de projetos de classe. Fornecerei mais informações sobre os projetos de classe no final do semestre. Você pode encontrar detalhes e recursos adicionais no site do curso, que carreguei no Canvas. Encorajo-vos a explorar o site e ler as informações fornecidas.
Em relação à comunicação e recursos, usaremos principalmente o Canvas para todas as atividades relacionadas ao curso. Vídeos de palestras, slides e materiais adicionais estarão disponíveis no Canvas. Também usarei os anúncios do Canvas para compartilhar atualizações e informações importantes. Certifique-se de que suas configurações de notificação estejam habilitadas para receber esses anúncios por e-mail.
Para aprimorar sua experiência de aprendizado, recomendo baixar os slides antes de assistir aos vídeos para que você possa fazer anotações diretamente sobre eles. Fazer anotações pode ser útil para uma melhor compreensão e retenção do material.
Se você encontrar alguma dificuldade técnica ao acessar os materiais do curso, recomendo usar Firefox ou Chrome como navegador, pois eles tendem a funcionar melhor com o Canvas.
1.3 Categorias de Machine Learning (L01: O que é Machine Learning)
1.3 Categorias de Machine Learning (L01: O que é Machine Learning)
Vamos nos aprofundar nas diferentes categorias ou tipos de aprendizado de máquina. A categoria mais ampla é o aprendizado supervisionado, que lida com dados rotulados. No aprendizado supervisionado, pretendemos prever uma saída com base em dados de entrada fornecidos. Por exemplo, na classificação de spam de e-mail, os rótulos seriam "spam" e "não spam". O objetivo é prever se um e-mail é spam ou não para e-mails futuros. Esta categoria envolve um loop de feedback onde previsões corretas ou incorretas são usadas para melhorar o algoritmo e aumentar a precisão da classificação.
Dentro da aprendizagem supervisionada, uma subcategoria é a classificação. A classificação se concentra na atribuição de rótulos de classe, como spam e não spam. Por exemplo, podemos ter rótulos de classe como "menos" e "mais", com o objetivo de diferenciar essas duas classes com base nas informações de entrada representadas por X1 e X2. Um algoritmo de aprendizado de máquina examina medições e faz previsões, aprendendo continuamente a atribuir rótulos corretos. Ao treinar o algoritmo em um conjunto de dados com vários exemplos, ele pode aprender a traçar um limite de decisão, que é a linha que separa as classes. Novos pontos de dados que caem em um lado do limite de decisão provavelmente são classificados como uma classe específica.
Outro tipo de aprendizado supervisionado é a regressão, que trata da atribuição de um alvo contínuo ou valor de saída. A análise de regressão se concentra em prever um resultado contínuo com base em recursos de entrada. Por exemplo, a regressão linear é um modelo simples com uma variável de entrada, com o objetivo de prever um valor de saída (Y) ajustando uma linha através de pontos de dados para minimizar erros.
Passando para o aprendizado não supervisionado, esta categoria envolve a análise de dados não rotulados para descobrir padrões ou estruturas ocultas. Sem rótulos ou feedback, o aprendizado não supervisionado visa encontrar insights significativos dentro do conjunto de dados. Clustering é um exemplo de aprendizado não supervisionado, onde pontos de dados semelhantes são agrupados com base em padrões ou densidades. Vários algoritmos de agrupamento como k-means, DBSCAN ou agrupamento hierárquico podem ser utilizados para identificar e agrupar pontos de dados semelhantes.
A redução de dimensionalidade é outro exemplo de aprendizado não supervisionado. Envolve a redução do número de recursos ou dimensões no conjunto de dados. A extração e seleção de recursos são técnicas comuns usadas na redução de dimensionalidade. Esses métodos ajudam a compactar ou transformar recursos para capturar as informações mais relevantes e, ao mesmo tempo, reduzir a complexidade.
A última categoria de aprendizado de máquina é o aprendizado por reforço. No aprendizado por reforço, um agente aprende uma série de ações para atingir um objetivo específico ou maximizar as recompensas em um determinado ambiente. Esse tipo de aprendizado envolve um sistema de recompensa, onde o agente recebe feedback com base no resultado de suas ações. Por tentativa e erro, o agente aprende a tomar melhores decisões e otimizar seu desempenho. O aprendizado por reforço é comumente aplicado em robótica, jogos e cenários complexos de tomada de decisão.
É importante observar que, embora o aprendizado por reforço seja um tópico significativo, ele não será amplamente abordado neste curso. No entanto, existem recursos dedicados disponíveis para os interessados em explorar ainda mais o aprendizado por reforço.
Essas diferentes categorias de aprendizado de máquina fornecem uma ampla estrutura para entender e aplicar várias técnicas e algoritmos para resolver diferentes tipos de problemas.
Agora, vamos nos aprofundar em um aspecto diferente do aprendizado de máquina chamado aprendizado semissupervisionado. Como o nome sugere, ele se enquadra entre o aprendizado supervisionado e não supervisionado. No aprendizado semi-supervisionado, temos uma mistura de dados rotulados e não rotulados. Os dados rotulados são semelhantes ao que discutimos no aprendizado supervisionado, onde temos entradas e rótulos de classe correspondentes. No entanto, no aprendizado semissupervisionado, também temos uma grande quantidade de dados não rotulados sem rótulos de classe.
O objetivo do aprendizado semissupervisionado é aproveitar os dados adicionais não rotulados para melhorar o processo de aprendizado. Ao combinar os dados rotulados e não rotulados, o algoritmo pode descobrir padrões e relacionamentos nos dados que podem não ter sido aparentes apenas com os dados rotulados. Isso pode levar a previsões mais precisas e melhor generalização.
O aprendizado semissupervisionado pode ser particularmente útil em cenários onde a obtenção de dados rotulados é cara ou demorada. Em vez de rotular manualmente uma grande quantidade de dados, podemos usar um conjunto menor de dados rotulados junto com um conjunto maior de dados não rotulados para obter bons resultados.
Uma abordagem para o aprendizado semi-supervisionado é usar técnicas como autotreinamento ou co-treinamento. No autotreinamento, o algoritmo treina inicialmente nos dados rotulados e então usa suas previsões para gerar pseudo-rótulos para os dados não rotulados. Esses pseudo-rótulos são então combinados com os dados rotulados originais para retreinar o modelo. Esse processo é repetido várias vezes, refinando as previsões do modelo e aproveitando os dados não rotulados para melhorar o desempenho.
No co-treinamento, o algoritmo aprende com várias visualizações dos dados. Vários classificadores são treinados em diferentes subconjuntos de recursos ou diferentes representações dos dados. Inicialmente, cada classificador é treinado nos dados rotulados. Em seguida, eles trocam suas previsões sobre os dados não rotulados, permitindo que cada classificador aprenda com as previsões do outro. Esse processo iterativo continua, com cada classificador refinando suas previsões com base no consenso dos outros.
O aprendizado semissupervisionado é uma área de pesquisa em crescimento, e existem vários algoritmos e técnicas disponíveis para enfrentar o desafio de alavancar dados não rotulados de forma eficaz. É um campo empolgante que oferece oportunidades promissoras para melhorar o desempenho do aprendizado de máquina quando os dados rotulados são limitados.
Discutimos as diferentes categorias de aprendizado de máquina, incluindo aprendizado supervisionado, aprendizado não supervisionado, aprendizado por reforço e aprendizado semissupervisionado. Cada categoria tem suas próprias características e aplicações. O aprendizado supervisionado lida com dados rotulados e se concentra em fazer previsões ou atribuir rótulos de classe. O aprendizado não supervisionado visa encontrar estruturas ou padrões ocultos em dados não rotulados. O aprendizado por reforço envolve o aprendizado de uma série de ações por meio de um sistema de recompensa. Por fim, o aprendizado semissupervisionado combina dados rotulados e não rotulados para melhorar o desempenho do aprendizado.
1.4 Notação (L01: O que é Machine Learning)
1.4 Notação (L01: O que é Machine Learning)
Agora que discutimos o conceito de aprendizado de máquina e as principais categorias de aprendizado de máquina, vamos nos aprofundar no aprendizado supervisionado. Como mencionamos anteriormente, o aprendizado supervisionado é a maior categoria de aprendizado de máquina. Nesta seção, exploraremos a notação, a terminologia e os conceitos associados ao aprendizado supervisionado.
O aprendizado supervisionado segue um fluxo de trabalho específico. Começamos com um conjunto de dados de treinamento que contém exemplos de recursos de entrada e suas informações ou rótulos de destino correspondentes. Os recursos de entrada também podem ser referidos como observações. O conjunto de dados é então fornecido a um algoritmo de aprendizado de máquina. Existem vários tipos de algoritmos de aprendizado de máquina que exploraremos mais adiante neste curso. O algoritmo aprende com os dados de treinamento e gera um modelo preditivo.
O modelo representa o conhecimento aprendido dos dados de treinamento e pode ser usado para fazer previsões sobre dados novos e não vistos. Se os novos dados tiverem o mesmo formato dos dados de treinamento, incluindo os mesmos recursos, o modelo treinado poderá ser usado para fazer previsões. Este é o principal fluxo de trabalho do aprendizado supervisionado.
Agora, vamos nos aprofundar nos aspectos formais da notação de aprendizagem supervisionada. Denotamos o conjunto de dados de treinamento como D, que consiste em N exemplos de treinamento. Cada exemplo de treinamento inclui um vetor de recurso (X) e um rótulo correspondente (Y). O sobrescrito 'i' representa o índice do ponto de treinamento, indicando sua posição no conjunto de dados. O sobrescrito é usado aqui para diferenciá-lo do subscrito que apresentaremos mais adiante.
O conjunto de dados de treinamento é gerado com base em uma função subjacente, geralmente desconhecida, que atribui rótulos aos recursos. Essa função normalmente não é explicitamente definida e pode ser um fenômeno natural ou um processo de rotulagem humano. No aprendizado de máquina, nosso objetivo é aproximar essa função (F(X)) usando um modelo ou hipótese. O modelo deve capturar o mapeamento entre os recursos de entrada (X) e os rótulos (Y) de maneira semelhante à função desconhecida.
Tradicionalmente, a hipótese ou modelo aprendido pelo algoritmo de aprendizado de máquina é referido como H. O modelo recebe o vetor de recursos (X) e produz um rótulo previsto (chapéu Y). Em problemas de regressão, o rótulo previsto é um valor contínuo, enquanto em problemas de classificação, o rótulo previsto pertence a um conjunto de valores possíveis. Na classificação, o conjunto de rótulos possíveis é normalmente representado por números inteiros, mas também pode ser representado por outros símbolos ou letras.
Durante a avaliação do modelo, um conjunto de dados separado é usado para avaliar o desempenho do modelo. As previsões feitas pelo modelo são comparadas com os rótulos verdadeiros para medir a precisão do modelo. Na regressão, avalia-se a proximidade das previsões com os rótulos verdadeiros, enquanto na classificação, examina-se a concordância entre os rótulos previstos e os rótulos verdadeiros.
Para ilustrar esses conceitos, vamos considerar um exemplo de conjunto de dados real, o conjunto de dados Iris. Este conjunto de dados consiste em medições de diferentes características das flores de íris, como dimensões de sépalas e pétalas. O objetivo é prever as espécies da flor com base nessas medições. Existem três espécies: setosa, versicolor e virginica.
No conjunto de dados Iris, cada exemplo de treinamento corresponde a uma medida de flor, com os recursos representando as dimensões e o rótulo representando as espécies de flores. O conjunto de dados contém 150 exemplos de treinamento, denotados como N=150 e quatro recursos, denotados como M=4.
O aprendizado supervisionado envolve o uso de um conjunto de dados de treinamento para aprender um modelo que se aproxima de uma função subjacente desconhecida. O modelo recebe recursos de entrada e gera previsões. A precisão do modelo é avaliada usando dados separados. A notação e a terminologia discutidas nesta seção fornecem uma base para entender e trabalhar com algoritmos de aprendizado supervisionado.
Aplicativo 1.5 ML (L01: O que é Machine Learning)
Aplicativo 1.5 ML (L01: O que é Machine Learning)
Depois de discutir a notação e o formalismo em torno do aprendizado supervisionado, vamos revisitar o pipeline de aprendizado supervisionado e explorar como abordamos os problemas de aprendizado de máquina na prática. Também examinaremos os componentes individuais que normalmente consideramos durante o processo.
A figura simplificada que examinamos anteriormente mostrava o fluxo de trabalho do aprendizado supervisionado. Neste fluxo de trabalho, começamos com um conjunto de dados de treinamento rotulado, onde temos rótulos para os recursos. Em seguida, aplicamos um algoritmo de aprendizado de máquina que aprende a ajustar um modelo aos dados de treinamento. O modelo resultante pode ser usado para fazer previsões sobre dados novos e não vistos. É importante observar que esse processo assume que os novos dados vêm da mesma distribuição dos dados de treinamento.
Agora, vamos nos aprofundar em um fluxograma mais detalhado que ilustra os vários componentes envolvidos no aprendizado de máquina prático. Os componentes fundamentais permanecem os mesmos da figura anterior: um conjunto de dados de treinamento, um algoritmo de aprendizado e um modelo resultante. No entanto, há detalhes adicionais a serem considerados.
Na prática, antes de obter os dados de treinamento, normalmente realizamos algumas etapas de pré-processamento. A menos que adquiramos um conjunto de dados pré-preparado, precisamos determinar os recursos a serem extraídos dos dados. Isso é particularmente importante no aprendizado de máquina tradicional. Por exemplo, no caso de classificar flores de íris com base em medições, podemos ter dados de imagem ou dados observacionais de cenários do mundo real. Em ambos os casos, precisamos extrair recursos relevantes para fornecer ao algoritmo de aprendizado de máquina. Em vez de usar pixels brutos de imagens, geralmente é mais eficaz usar recursos pré-processados ou extraídos. Para o exemplo da flor de íris, esses recursos podem incluir o comprimento da sépala, a largura da sépala e assim por diante. É comum envolver especialistas do domínio que possuem conhecimento sobre o problema, como botânicos no caso da classificação de flores. Sua experiência pode ajudar na seleção de recursos úteis para classificação.
Supondo que extraímos os recursos dos dados brutos, obtemos um conjunto de treinamento que consiste em comprimento de amostra, largura de amostra, comprimento de pétala e largura de pétala. Pode haver etapas adicionais de pré-processamento envolvidas, como dimensionamento de recursos, seleção de recursos (escolher quais recursos incluir) e redução de dimensionalidade. Essas etapas de pré-processamento também podem incluir a subamostragem do conjunto de dados, entre outras. Ao longo deste curso, exploraremos uma seleção dessas etapas de pré-processamento com mais detalhes.
Uma vez concluído o pré-processamento, fornecemos os dados ao algoritmo de aprendizado e ajustamos o modelo. No entanto, antes de usar o modelo em novos dados, é comum dividir o conjunto de dados em duas partes: um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento é usado para treinar o algoritmo e obter o modelo, enquanto o conjunto de teste serve como um conjunto de dados independente para avaliar o desempenho do modelo. Essa etapa de avaliação nos ajuda a avaliar o desempenho do modelo antes de aplicá-lo a dados invisíveis do mundo real. É importante observar que durante o processo de treinamento também existem etapas de avaliação envolvidas, como seleção de modelos e validação cruzada, que auxiliam no ajuste dos hiperparâmetros. Abordaremos extensivamente esses tópicos neste curso.
Após obter o modelo final, avaliamos seu desempenho usando o conjunto de teste. Essa avaliação envolve usar o modelo para prever rótulos para o conjunto de teste e comparar essas previsões com os verdadeiros rótulos. Em exemplos de classificação, a avaliação geralmente gira em torno da precisão ou erro de classificação, indicando a porcentagem de instâncias classificadas corretamente. Por exemplo, podemos atingir uma precisão de 95% na classificação correta das flores. Uma vez que o modelo tenha sido avaliado, ele pode ser usado em novos dados para fazer previsões em aplicações do mundo real.
Embora este slide possa parecer esmagador com a quantidade de informações apresentadas, tenha certeza de que nos aprofundaremos em cada uma dessas etapas ao longo deste curso.
Na prática, ao desenvolver um aplicativo de aprendizado de máquina, geralmente há cinco etapas principais envolvidas. Primeiro, precisamos definir o problema que queremos resolver.
Depois de definir o problema que queremos resolver, o próximo passo é coletar e preparar os dados. Isso envolve a aquisição de um conjunto de dados que contém exemplos do problema que estamos tentando resolver. O conjunto de dados deve incluir os recursos de entrada e seus rótulos correspondentes.Assim que tivermos o conjunto de dados, a próxima etapa é pré-processar e limpar os dados. Isso pode envolver o tratamento de valores ausentes, lidar com valores discrepantes, normalizar ou dimensionar recursos e executar qualquer transformação ou codificação necessária. O pré-processamento de dados é essencial para garantir a qualidade e confiabilidade do conjunto de dados, bem como para prepará-lo para o algoritmo de aprendizado.
Depois de pré-processar os dados, passamos para a terceira etapa, que é selecionar um algoritmo de aprendizado de máquina apropriado. A escolha do algoritmo depende da natureza do problema, do tipo de dados e dos recursos disponíveis. Existem vários tipos de algoritmos para escolher, incluindo árvores de decisão, máquinas de vetores de suporte, redes neurais e muito mais. Cada algoritmo tem seus próprios pontos fortes e fracos, e selecionar o mais adequado para o problema em questão é crucial.
Uma vez selecionado o algoritmo, o próximo passo é treinar o modelo usando o conjunto de dados preparado. Durante o processo de treinamento, o modelo aprende a generalizar a partir dos dados de entrada e seus rótulos correspondentes. Isso envolve ajustar os parâmetros internos do modelo para minimizar o erro de previsão. O processo de treinamento geralmente envolve um algoritmo de otimização, como gradiente descendente, que atualiza iterativamente os parâmetros do modelo com base nos erros observados.
Depois que o modelo é treinado, o próximo passo é avaliar seu desempenho. Isso é feito usando um conjunto de dados de avaliação separado, geralmente chamado de conjunto de validação ou conjunto de validação. As métricas de avaliação utilizadas dependem do tipo de problema. Para tarefas de classificação, métricas como exatidão, precisão, recall e pontuação F1 são comumente usadas. Para tarefas de regressão, métricas como erro quadrado médio (MSE) ou erro absoluto médio (MAE) são usadas. A avaliação nos ajuda a avaliar quão bem o modelo generaliza para dados não vistos e fornece insights sobre seus pontos fortes e fracos.
Se o desempenho do modelo for satisfatório, a etapa final é implantar o modelo e usá-lo para fazer previsões sobre dados novos e não vistos. Isso pode envolver a integração do modelo em um sistema ou aplicativo maior para automatizar a tomada de decisões ou auxiliar na solução do problema em questão.
Vale a pena notar que o processo de aprendizado de máquina é iterativo e geralmente envolve ir e voltar entre as etapas. Por exemplo, se o desempenho do modelo não for satisfatório, pode ser necessário revisitar a etapa de pré-processamento de dados, tentar algoritmos diferentes, ajustar hiperparâmetros ou coletar mais dados para melhorar o desempenho do modelo.
Esta visão geral fornece uma compreensão de alto nível das etapas típicas envolvidas no aprendizado de máquina prático. À medida que avançamos neste curso, nos aprofundaremos em cada etapa, exploraremos diferentes algoritmos e técnicas e ganharemos experiência prática na aplicação do aprendizado de máquina a problemas do mundo real.
1.6 Motivação de ML (L01: O que é Machine Learning)
1.6 Motivação de ML (L01: O que é Machine Learning)
Anteriormente, discutimos a abordagem para resolver problemas de aprendizado de máquina. O processo envolveu várias etapas, começando com a definição do problema em questão. Enfatizamos a importância de coletar ou encontrar um conjunto de dados adequado para trabalhar. Assim que tivéssemos o conjunto de dados, escolheríamos um algoritmo ou classe de algoritmo para resolver o problema. Em seguida, precisávamos definir uma métrica de otimização para treinar o modelo de forma eficaz. Após o treinamento, avaliaríamos o desempenho do modelo usando uma métrica de avaliação.
Avançando, exploramos brevemente diferentes abordagens de aprendizado de máquina e as motivações por trás do uso do aprendizado de máquina. O professor Pedro Domingos, da Universidade de Washington, categorizou essas abordagens em cinco tribos: simbolistas, conexionistas, evolucionistas, bayesianos e analogizadores. Cada tribo representa uma representação diferente escolhida para o modelo, uma parte de avaliação (função objetivo) e uma abordagem de otimização.
Por exemplo, a tribo dos conexionistas usa redes neurais como modelo de representação escolhido. Eles otimizam o erro quadrado ou entropia cruzada como função objetivo e empregam gradiente descendente ou retropropagação como abordagem de otimização. Da mesma forma, a tribo evolucionária utiliza a busca genética para otimização, com programas genéticos como modelo de representação. A tribo bayesiana emprega modelos gráficos e inferência probabilística para maximizar a probabilidade posterior.
Esses exemplos fornecem uma visão geral de diferentes abordagens para aprendizado de máquina. É importante observar que essas categorias não são exaustivas e representam apenas alguns exemplos para cada tribo.
Outra perspectiva sobre as motivações do aprendizado de máquina é apresentada por Leo Breiman, um influente estatístico conhecido por seu trabalho em árvores de decisão e florestas aleatórias. Ele introduziu a ideia de duas culturas: previsão e informação. A cultura de previsão se concentra no uso de aprendizado de máquina para fazer previsões precisas sem necessariamente entender a relação subjacente entre as variáveis de entrada e saída. Por outro lado, a cultura da informação visa extrair conhecimento e compreender a natureza da relação entre as variáveis.
Breiman afirmou que todos os modelos estão errados, mas alguns são úteis. Isso destaca a compensação entre a interpretabilidade e o desempenho do modelo. Modelos mais simples são mais fáceis de interpretar, mas podem não atingir alto desempenho, enquanto modelos mais complexos podem ter um desempenho melhor, mas são mais difíceis de interpretar.
Além disso, existem diferentes motivações para estudar aprendizado de máquina. Os engenheiros geralmente se concentram na aplicação do aprendizado de máquina para resolver problemas do mundo real, enquanto os matemáticos, cientistas da computação e estatísticos podem estar mais interessados em desenvolver a teoria do aprendizado de máquina. Os neurocientistas podem estudar o aprendizado de máquina para entender melhor o cérebro humano e desenvolver algoritmos inspirados em seu funcionamento.
Além disso, discutimos a relação entre IA, aprendizado de máquina e aprendizado profundo. O aprendizado de máquina emergiu como um subcampo da IA, e o aprendizado profundo é um subcampo do aprendizado de máquina. O aprendizado profundo se concentra especificamente em redes neurais multicamadas e se estende além delas. O aprendizado profundo pode ser considerado um rebranding das redes neurais. Os sistemas de IA são sistemas não biológicos que exibem inteligência por meio de regras, como carros autônomos ou programas de jogo de xadrez. O aprendizado de máquina não é um requisito para IA, pois os sistemas de IA podem ser desenvolvidos sem o uso de técnicas de aprendizado de máquina.
Para finalizar, mencionamos que este curso abordará principalmente aprendizado de máquina, enquanto IA e aprendizado profundo se enquadram em contextos diferentes e podem ser explorados em outros cursos.
No campo do aprendizado de máquina, existem várias linguagens e bibliotecas de programação populares que são amplamente utilizadas para implementar e trabalhar com modelos de aprendizado de máquina. Essas ferramentas fornecem uma variedade de funcionalidades e são projetadas para tornar mais fácil para pesquisadores e profissionais desenvolver, treinar e avaliar modelos de aprendizado de máquina.
Uma das linguagens de programação mais comumente usadas no campo do aprendizado de máquina é o Python. Python é uma linguagem versátil e fácil de aprender que oferece um rico ecossistema de bibliotecas especificamente adaptadas para aprendizado de máquina. Essas bibliotecas fornecem implementações eficientes de vários algoritmos de aprendizado de máquina, bem como ferramentas para manipulação, visualização e avaliação de dados.
Algumas das bibliotecas Python populares para aprendizado de máquina incluem:
NumPy: NumPy é uma biblioteca fundamental para computação científica em Python. Ele fornece suporte para arrays e matrizes grandes e multidimensionais, juntamente com uma coleção de funções matemáticas para operar nesses arrays de forma eficiente. O NumPy é a base para muitas outras bibliotecas de aprendizado de máquina.
Pandas: Pandas é uma poderosa biblioteca de manipulação e análise de dados. Ele fornece estruturas de dados e funções para lidar eficientemente com dados estruturados, como dados tabulares. O Pandas é particularmente útil para pré-processar e limpar dados antes de alimentá-los em modelos de aprendizado de máquina.
Scikit-learn: Scikit-learn é uma biblioteca abrangente de aprendizado de máquina que oferece uma ampla variedade de algoritmos e ferramentas para classificação, regressão, agrupamento, redução de dimensionalidade e muito mais. Ele fornece uma interface unificada e segue uma API consistente, facilitando a experimentação de diferentes algoritmos e a comparação de seu desempenho.
TensorFlow: TensorFlow é uma biblioteca de código aberto desenvolvida pelo Google para computação numérica e aprendizado de máquina. Oferece uma arquitetura flexível para construir e treinar vários tipos de modelos de aprendizado de máquina, com foco particular em aprendizado profundo. O TensorFlow fornece uma API de alto nível chamada Keras, que simplifica o processo de construção e treinamento de redes neurais.
PyTorch: PyTorch é outra biblioteca popular de aprendizado profundo que fornece gráficos de computação dinâmicos e uma integração perfeita com o Python. É conhecido por sua flexibilidade e facilidade de uso, tornando-o a escolha preferida de pesquisadores e profissionais que trabalham em projetos de aprendizado profundo. O PyTorch também oferece um rico ecossistema de modelos e ferramentas pré-treinados para implantação de modelos.
Estes são apenas alguns exemplos das muitas ferramentas disponíveis para aprendizado de máquina em Python. Dependendo dos requisitos específicos do seu projeto, você pode explorar outras bibliotecas e estruturas que atendam às suas necessidades. É importante manter-se atualizado com os últimos desenvolvimentos na área e escolher as ferramentas que melhor se adequam aos seus objetivos e preferências.
Além do Python, outras linguagens de programação, como R e Julia, também possuem bibliotecas e ecossistemas de aprendizado de máquina dedicados. O R, em particular, é amplamente utilizado para análise estatística e possui uma rica coleção de pacotes para aprendizado de máquina. Julia, por outro lado, é uma linguagem projetada especificamente para computação numérica e oferece bibliotecas de alto desempenho para aprendizado de máquina.
Ao longo deste curso, focaremos principalmente no uso do Python e suas bibliotecas associadas, pois elas fornecem um ambiente poderoso e flexível para explorar e implementar algoritmos de aprendizado de máquina. No entanto, os conceitos e princípios abordados neste curso também podem ser aplicados a outras linguagens e ferramentas de programação.
Espero que isso lhe dê uma visão geral das ferramentas que usaremos e sua importância no campo do aprendizado de máquina. Se você tiver mais alguma dúvida ou precisar de esclarecimentos, sinta-se à vontade para perguntar.
2.1 Introdução ao NN (L02: Métodos do vizinho mais próximo)
2.1 Introdução ao NN (L02: Métodos do vizinho mais próximo)
Olá a todos, e bem-vindos de volta! Espero que você tenha tido uma primeira semana fantástica. Vamos recapitular brevemente o que abordamos. Na Aula 1, apresentamos o conceito de aprendizado de máquina e discutimos a dúvida mais comum, que era sobre o projeto da turma. Farei um anúncio separado sobre o projeto em breve. Uma coisa que gostaria de mencionar é que habilitei uma função no Piazza que permite encontrar membros da equipe para o projeto. Mais detalhes serão compartilhados em um anúncio separado.
Agora, vamos passar para a Aula 2. Hoje, focaremos principalmente no algoritmo k-vizinho mais próximo (KNN), que é um algoritmo clássico de aprendizado de máquina e ainda é amplamente usado hoje. Considero que é a introdução mais suave e direta ao aprendizado de máquina, pois nos permite entender o funcionamento dos algoritmos de aprendizado de máquina. Embora o KNN possa não ser mais o algoritmo mais popular, eu recomendo incluí-lo em seus projetos. Ele serve como referência de desempenho para tarefas de classificação e até mesmo para prever saídas contínuas. KNN pode fornecer informações sobre precisão de previsão e eficiência computacional.
Falando em aspectos computacionais, além de explicar como o KNN funciona, também abordaremos o conceito de notação Big O. Essa notação é comumente usada em ciência da computação para analisar a eficiência de diferentes algoritmos. Embora possa parecer técnico, entender a notação Big O é útil não apenas para aprendizado de máquina, mas também para programação geral.
No final desta palestra, demonstrarei alguns exemplos em Python para mostrar como utilizar o KNN. No entanto, observe que esta será uma breve visão geral e nos aprofundaremos no Python, incluindo a instalação e as principais bibliotecas, como NumPy e scikit-learn, na Aula 3.
Então, vamos começar com a Aula 2! Vamos nos concentrar principalmente nos métodos do vizinho mais próximo, incluindo uma introdução ao KNN. Estruturei a palestra em seis partes para torná-la mais acessível:
Aplicações dos métodos do vizinho mais próximo: Exploraremos as aplicações reais do KNN, como mineração de dados de uso da web, biometria, classificação de imagens e análise de proteínas. Esses exemplos ajudarão a motivar o tópico.
Um método do vizinho mais próximo: Antes de mergulhar no KNN, discutiremos o caso mais simples, que é o método do vizinho mais próximo. Esse método envolve encontrar o ponto de dados mais semelhante a um ponto de consulta e usar seu rótulo como previsão.
Limite de decisão do método do vizinho mais próximo: Examinaremos como o método do vizinho mais próximo determina o limite de decisão, proporcionando uma melhor compreensão de seu funcionamento interno.
Introdução aos métodos K-vizinhos mais próximos: Faremos a transição para KNN, onde consideramos vários vizinhos mais próximos em vez de apenas um. Abordaremos os classificadores e regressores K-vizinhos mais próximos.
Complexidade de tempo de execução Big O dos algoritmos de K vizinhos mais próximos: Exploraremos a eficiência computacional de KNN usando a notação Big O. Este tópico é crucial para analisar o desempenho dos algoritmos.
Melhorando os algoritmos de K vizinhos mais próximos: Nesta parte, apresentarei ideias e truques para melhorar o desempenho do KNN. Esta seção se concentra na otimização do algoritmo.
Depois de cobrir essas partes conceituais, passaremos para a aplicação do KNN em Python. Embora essa possa ser a parte mais agradável para alguns, é essencial entender os conceitos antes de mergulhar na implementação prática.
Na próxima aula, Aula 3, vamos nos aprofundar na instalação do Python e cobrir as principais bibliotecas, incluindo NumPy e scikit-learn. Portanto, certifique-se de ficar atento! Vamos começar a Aula 2, onde exploramos os métodos do vizinho mais próximo e o algoritmo K-vizinho mais próximo e continuamos esse processo para todos os pontos de dados no conjunto de treinamento. Ao final do loop, teremos identificado o ponto de dados mais próximo do ponto de consulta.
Depois de encontrar o ponto mais próximo, usamos seu rótulo como o rótulo previsto para o ponto de consulta. Em problemas de classificação, o rótulo geralmente é um valor categórico que representa uma classe ou categoria. Em problemas de regressão, o rótulo é um valor contínuo.
Para resumir a etapa de previsão do algoritmo do vizinho mais próximo:
Agora que discutimos o método de um vizinho mais próximo, vamos passar para o caso mais geral de k vizinhos mais próximos. O algoritmo do k vizinho mais próximo estende o conceito de encontrar o ponto de dados mais próximo para encontrar os k pontos de dados mais próximos. Em vez de considerar apenas o vizinho mais próximo, consideramos os k pontos de dados no conjunto de treinamento que estão mais próximos do ponto de consulta.
No caso de classificação, o rótulo predito é determinado por votação majoritária entre os k vizinhos mais próximos. O voto de cada vizinho é ponderado igualmente e a classe com o maior número de votos torna-se o rótulo previsto.
Para problemas de regressão, o rótulo previsto geralmente é a média ou mediana dos rótulos dos k vizinhos mais próximos. O método específico de combinar os rótulos depende da natureza do problema e do resultado desejado.
Para ilustrar o limite de decisão do método do vizinho mais próximo, vamos considerar um espaço de recursos bidimensional. Temos duas classes, classe 0 e classe 1, representadas por símbolos diferentes (por exemplo, triângulos e quadrados). O limite de decisão é a linha ou curva que separa as regiões de diferentes classes.
No caso do método de um vizinho mais próximo, o limite de decisão segue o contorno dos pontos de dados de treinamento. Cada ponto no espaço de recursos é classificado com base no rótulo do ponto de dados de treinamento mais próximo. O limite de decisão não é uma curva suave, mas sim uma coleção de pequenas regiões ao redor de cada ponto de treinamento.
Ao usar o método do k vizinho mais próximo com k maior que 1, o limite de decisão se torna mais suave. À medida que consideramos mais pontos vizinhos, a influência de pontos de dados de treinamento individuais diminui, resultando em um limite mais generalizado. O limite de decisão é determinado pela maioria dos votos dos k vizinhos mais próximos, levando a uma separação mais suave e contínua entre as classes.
Compreender o conceito de limite de decisão é crucial para avaliar o desempenho e as limitações do algoritmo do k vizinho mais próximo. A forma e a complexidade do limite de decisão podem afetar a capacidade do algoritmo de classificar ou prever com precisão novos pontos de dados.
Além de discutir o algoritmo do k vizinho mais próximo, também abordaremos o tópico da eficiência do algoritmo. A notação Big O é uma maneira comum de analisar e comparar a eficiência de diferentes algoritmos. Ele fornece uma medida da complexidade de tempo do algoritmo, indicando como o tempo de execução cresce à medida que o tamanho da entrada aumenta.
Analisar a complexidade do tempo de execução do k algoritmo do vizinho mais próximo nos ajuda a entender sua eficiência computacional. Exploraremos brevemente esse tópico e discutiremos como a eficiência do algoritmo pode afetar seu desempenho em grandes conjuntos de dados.
No final desta aula, mergulharemos em exemplos práticos de implementação do algoritmo k vizinho mais próximo usando Python. Demonstraremos como usar o algoritmo para tarefas de classificação e regressão, mostrando sua aplicação em cenários do mundo real. No entanto, antes de começar a implementação, é essencial entender os conceitos e princípios subjacentes de k vizinhos mais próximos.
Para recapitular, na aula dois, abordamos o método do vizinho mais próximo como um caso simples de algoritmos do vizinho mais próximo. Exploramos como o algoritmo determina o ponto de dados mais próximo de um ponto de consulta e como ele usa o rótulo do ponto mais próximo para previsão. Também introduzimos o conceito de limite de decisão e sua forma no método do vizinho mais próximo. Além disso, discutimos o algoritmo k vizinho mais próximo, que considera vários vizinhos mais próximos em vez de apenas um. Mencionamos como o rótulo previsto é determinado pela votação da maioria em problemas de classificação e o valor médio ou mediano em problemas de regressão. Além disso, abordamos brevemente a notação Big O e sua aplicação na análise da eficiência de algoritmos, incluindo o k algoritmo do vizinho mais próximo.
Na próxima aula, Aula 3, vamos nos aprofundar na implementação do algoritmo do k vizinho mais próximo usando Python. Abordaremos as etapas, bibliotecas e técnicas necessárias para utilizar esse algoritmo de maneira eficaz. Então, certifique-se de se juntar a mim na próxima palestra!
2.2 Limite de decisão do vizinho mais próximo (L02: Métodos do vizinho mais próximo)
2.2 Limite de decisão do vizinho mais próximo (L02: Métodos do vizinho mais próximo)
Neste segundo vídeo, examinaremos o limite de decisão do algoritmo do vizinho mais próximo, focando especificamente no classificador do vizinho mais próximo. Estaremos usando um conjunto de dados bidimensionais para fins de ilustração, pois é mais fácil para os humanos visualizarem.
O conjunto de dados consiste em cinco pontos de dados representados por pontos azuis. Vamos ampliar os pontos A e B e explorar o limite de decisão entre eles. O limite de decisão é uma linha ou limite que separa os pontos A e B. Se ajustarmos um modelo de vizinho mais próximo ao conjunto de dados, como seria esse limite de decisão?
Para responder a essa pergunta, precisamos entender o conceito de equidistância. Qualquer ponto situado no limite de decisão deve ser equidistante dos pontos A e B. Reserve um momento para pausar o vídeo e pensar em como seria o limite de decisão. O limite de decisão para os pontos A e B seria uma linha desenhada usando uma métrica de distância euclidiana. Qualquer ponto nesta linha é equidistante dos pontos A e B, o que significa que a distância entre o ponto na linha e os pontos A e B é a mesma em todos os pontos da linha. Agora vamos passar para os pontos A e C e determinar seu limite de decisão. O limite de decisão para os pontos A e C seria uma linha perpendicular à linha que conecta A e C. Cada ponto nesta linha é equidistante dos pontos A e C.
Podemos continuar este exercício para todos os pares de pontos no conjunto de dados, como C e D, para determinar seus respectivos limites de decisão. Reunindo todos esses limites de decisão para cada par de pontos, obtemos o limite de decisão do classificador vizinho mais próximo, conforme mostrado no canto inferior direito.
Se olharmos atentamente para o diagrama, podemos notar que ele se assemelha a um diagrama de Voronoi ou tesselação de Voronoi. Este diagrama divide o conjunto de dados em regiões, com cada região correspondendo ao limite de decisão entre um par de pontos. Cada ponto em uma linha de fronteira é equidistante dos dois pontos adjacentes.
No entanto, ainda não terminamos. No slide anterior, mostramos apenas as regiões de decisão sem considerar os rótulos de classe reais. Agora vamos reintroduzir os rótulos de classe no conjunto de dados. Os triângulos representam a classe 1 e os quadrados representam a classe 0.
Para obter as regiões de decisão que o algoritmo de um vizinho mais próximo usaria para classificação, precisamos tomar a união das regiões pertencentes ao mesmo rótulo de classe. Por exemplo, os triângulos vermelhos têm uma região de decisão delimitada pelos limites correspondentes aos pontos mais próximos dos triângulos vermelhos. Da mesma forma, os quadrados azuis têm sua própria região de decisão. Preenchendo essas regiões com suas respectivas cores, obtemos o limite de decisão do classificador vizinho mais próximo.
Para testar sua compreensão, vamos fazer uma pergunta simples. Dados os cinco pontos de dados no conjunto de dados, qual ponto é o mais próximo do ponto de interrogação? Pause o vídeo por um momento e pense na sua resposta. Responder a essa pergunta requer conhecimento da medida de distância usada para determinar a proximidade. Neste caso, estamos usando a distância euclidiana, mas outras medidas de distância também podem ser usadas. Dependendo da medida de distância escolhida, o ponto mais próximo do ponto de interrogação pode variar.
No vídeo, foram demonstradas duas medidas de distância: a distância euclidiana e a distância de Manhattan. A distância euclidiana mede a distância em linha reta entre dois pontos, enquanto a distância de Manhattan mede a distância somando as diferenças absolutas entre as coordenadas.
Além disso, o vídeo menciona brevemente a distância de Mahalanobis, que leva em consideração a distribuição de características. Ele considera a distância de um ponto de dados para sua distribuição em termos de desvios padrão. A similaridade do cosseno, que mede o ângulo entre dois vetores, também é mencionada como medida de distância.
Na prática, a escolha da medida de distância depende do problema específico e das características do conjunto de dados. Pode ser considerado como um hiperparâmetro do algoritmo do vizinho mais próximo que precisa ser cuidadosamente escolhido com base no problema em questão.
Vamos agora discutir o algoritmo k-vizinho mais próximo, que é uma extensão do algoritmo de um vizinho mais próximo. No algoritmo k-vizinho mais próximo, em vez de considerar apenas o ponto mais próximo, consideramos os k pontos mais próximos do ponto de consulta. O limite de decisão do algoritmo de k vizinhos mais próximos é determinado por um mecanismo de votação. Cada ponto dentro da região de decisão de uma determinada classe contribui para o voto dessa classe. A classe com o maior número de votos entre os k vizinhos mais próximos é designada como a classe predita para o ponto de consulta.
Por exemplo, digamos que temos um ponto de consulta representado por uma estrela verde. Se usarmos um algoritmo de 3 vizinhos mais próximos, veremos os três pontos mais próximos do ponto de consulta. Se dois desses pontos pertencerem à classe 0 e um pertencer à classe 1, o voto da maioria atribuiria o ponto de consulta à classe 0. Da mesma forma, se aumentarmos o valor de k para 5, consideraríamos os cinco pontos mais próximos da consulta apontar. Se três desses pontos pertencerem à classe 1 e dois pertencerem à classe 0, o voto da maioria atribuiria o ponto de consulta à classe 1.
Escolher o valor de k é uma consideração importante no algoritmo k-vizinho mais próximo. Um valor menor de k pode levar ao overfitting, onde o algoritmo se torna muito sensível a flutuações locais nos dados. Por outro lado, um valor maior de k pode resultar em underfitting, onde o limite de decisão se torna muito suave e falha em capturar detalhes mais finos. Como em qualquer algoritmo, há compensações a serem feitas e a escolha de k depende do conjunto de dados e do problema em questão. É comum experimentar diferentes valores de k e usar técnicas como validação cruzada para encontrar o valor ideal.
O algoritmo k-vizinho mais próximo estende o algoritmo de um vizinho mais próximo considerando os k pontos mais próximos. O limite de decisão é determinado por um mecanismo de votação baseado nos rótulos de classe dos k vizinhos mais próximos. A escolha de k é um hiperparâmetro que precisa ser cuidadosamente selecionado para equilibrar entre overfitting e underfitting.
2.3 K-vizinhos mais próximos (L02: Métodos do vizinho mais próximo)
2.3 K-vizinhos mais próximos (L02: Métodos do vizinho mais próximo)
No vídeo anterior, mencionei que nem todas as medidas de distância discutidas anteriormente são métricas. Por exemplo, a similaridade do cosseno não é considerada uma métrica adequada porque não satisfaz a desigualdade triangular. A desigualdade triangular afirma que a distância entre dois pontos de dados, denotados como A e C, deve ser menor ou igual à soma das distâncias entre A e B e B e C. No entanto, apesar de não ser uma métrica adequada, o cosseno a similaridade ainda é altamente útil na prática em contextos específicos.
Agora, vamos nos aprofundar na abordagem de k-vizinhos mais próximos (k-NN), que é uma extensão do método de um vizinho mais próximo que discutimos anteriormente. O modelo k-NN é relativamente direto, pois generaliza o método de um vizinho mais próximo considerando vários vizinhos mais próximos em vez de apenas um.
Neste vídeo, apresento um exemplo de modelo k-NN. Temos dois recursos, x1 e x2, e um conjunto de dados de brinquedos com diferentes classes representadas por cruzes, círculos e triângulos. Nosso objetivo é classificar um ponto de dados denotado por um ponto de interrogação no centro. Para fazer previsões, consideramos os pontos de dados dentro de um determinado raio em torno do ponto de interrogação, usando uma medida de distância euclidiana.
Agora, a pergunta é: Qual seria o valor de k nessa abordagem k-NN para o exemplo dado? Se você pensar um pouco, perceberá que k é 5 porque estamos considerando os cinco pontos de dados mais próximos do ponto que queremos classificar.
Considerando os cinco vizinhos mais próximos, contamos as ocorrências de cada classe. Por exemplo, se encontrarmos um triângulo, um círculo e três cruzes, o voto da maioria atribui o rótulo da classe prevista ao ponto de consulta. Nesse caso, o rótulo de classe previsto seria um triângulo, pois ocorre mais entre os cinco vizinhos mais próximos.
Embora tecnicamente tenhamos um "voto de pluralidade" no k-NN, na prática ele é comumente chamado de "voto da maioria". Quando há um empate no processo de votação, onde várias classes têm a mesma contagem, os pacotes de software normalmente selecionam um rótulo aleatoriamente ou escolhem o rótulo com o índice de rótulo de classe inferior.
Para fornecer uma definição mais formal do voto majoritário, vamos considerar o subconjunto D sub k, que representa os k vizinhos mais próximos. Definimos o voto majoritário como o rótulo da classe (y) que maximiza a soma das funções delta. A função delta retorna 1 se a for igual a b (rótulos correspondentes) e 0 caso contrário. Somando os valores delta para cada vizinho, podemos encontrar o rótulo de classe que ocorre com mais frequência.
Para análise de regressão usando k-NN, o processo é mais simples. Em vez de rótulos de classe, lidamos com valores alvo contínuos. A predição (h) para a regressão k-NN é a média dos valores alvo dos k vizinhos mais próximos.
No próximo vídeo, vamos mergulhar no tópico da análise Big O, que envolve a análise da complexidade do tempo de execução do algoritmo de k vizinhos mais próximos. Entender a eficiência de um algoritmo é crucial para avaliar seu desempenho e escalabilidade. A análise Big O fornece uma maneira de estimar como o tempo de execução do algoritmo aumentará à medida que o tamanho da entrada aumenta. Essa análise nos ajuda a tomar decisões informadas sobre a seleção e otimização de algoritmos.Para realizar a análise Big O no algoritmo dos k vizinhos mais próximos, precisamos considerar dois fatores principais: o número de instâncias de treinamento (n) e o número de recursos (d). Esses fatores determinam o custo computacional de encontrar os k vizinhos mais próximos para um determinado ponto de consulta.
Na implementação mais simples de k vizinhos mais próximos, calcularíamos a distância entre o ponto de consulta e cada instância de treinamento, resultando em uma complexidade de tempo de O(nd). Isso significa que o tempo de execução do algoritmo cresce linearmente com o número de instâncias de treinamento e o número de recursos.
No entanto, existem maneiras de otimizar o algoritmo dos k vizinhos mais próximos e reduzir seu custo computacional. Uma abordagem comum é usar estruturas de dados que aceleram a busca por vizinhos mais próximos, como kd-trees ou ball-trees. Essas estruturas de dados particionam as instâncias de treinamento de maneira hierárquica, permitindo buscas de vizinhos mais eficientes.
Usando essas estruturas de dados, podemos obter um tempo de busca reduzido de O(log n) ou mesmo O(1) em alguns casos. Essa melhoria acelera significativamente o algoritmo, especialmente para grandes conjuntos de dados.
É importante observar que a escolha da métrica de distância também afeta a complexidade do tempo de execução do algoritmo. Algumas métricas de distância, como a distância euclidiana, podem ser calculadas com eficiência, enquanto outras, como a distância de Manhattan, podem exigir mais recursos computacionais.
Além da complexidade de tempo, devemos também considerar a complexidade de espaço do algoritmo dos k vizinhos mais próximos. A complexidade do espaço refere-se à quantidade de memória necessária para armazenar as instâncias de treinamento e quaisquer estruturas de dados adicionais usadas para uma pesquisa de vizinhança eficiente. A complexidade do espaço é tipicamente O(nd) ou O(n) para implementações otimizadas.
No geral, entender as complexidades de tempo de execução e espaço do algoritmo de k vizinhos mais próximos nos ajuda a avaliar sua escalabilidade e tomar decisões informadas ao trabalhar com grandes conjuntos de dados ou aplicativos em tempo real.
No próximo vídeo, exploraremos mais esses conceitos e forneceremos uma análise mais detalhada da eficiência do algoritmo. Fique atento para uma discussão aprofundada sobre a análise Big O para k vizinhos mais próximos.