Introdução ao aprendizado de máquina: um guia abrangente

Victor Roman Blocked Unblock Seguir Seguindo 3 de dezembro de 2018

Este é o primeiro de uma série de artigos nos quais descreverei conceitos de aprendizado de máquina, tipos, algoritmos e implementações de python.

Os principais objetivos desta série são:

  1. Criando um guia abrangente para a teoria e intuição de aprendizado de máquina.
  2. Compartilhando e explicando projetos de aprendizado de máquina, desenvolvidos em python, para mostrar de forma prática os conceitos e algoritmos explicados, bem como como eles podem ser aplicados em problemas do mundo real.
  3. Deixar uma pegada digital do meu conhecimento no assunto e inspirar outras pessoas a aprender e aplicar aprendizado de máquina em seus próprios campos.

A informação exposta nesta série vem de várias fontes, sendo as principais:

  • Engenheiro de Aprendizado de Máquina NanoDegree (Udacity)
  • Livro Python Machine Learning (por Sebastian Raschka & Vahid Mirjalili)
  • Aprendizado Profundo com o livro Python (de François Chollet)
  • Maestria em Aprendizado de Máquina com o livro Python (por Jason Brownlee)
  • Curso de Ciência e Máquina de Dados em Python por Jose Portilla (Udemy)
  • Aprendizado de Máquina y Data Science com curso de Python por Manuel Garrido (Udemy)

O QUE É A APRENDIZAGEM DE MÁQUINAS?

Devido à grande redução nos preços da tecnologia e dos sensores, agora podemos criar, armazenar e enviar mais dados do que nunca na história. Até noventa por cento dos dados no mundo de hoje foram criados apenas nos últimos dois anos. Existem 2,5 quintilhões de bytes de dados criados a cada dia em nosso ritmo atual e esse ritmo só deve crescer. Esses dados alimentam os modelos de aprendizado de máquina e é o principal impulsionador do boom que essa ciência experimentou nos últimos anos.

Aprendizado de Máquina é um dos subcampos da Inteligência Artificial e pode ser descrito como:

“Aprendizado de Máquina é a ciência de fazer com que os computadores aprendam e ajam como os humanos, e melhorem seu aprendizado ao longo do tempo de forma autônoma, alimentando-os com dados e informações na forma de observações e interações do mundo real.” – Dan Fagella

O aprendizado de máquina oferece uma maneira eficiente de capturar o conhecimento em dados para melhorar gradualmente o desempenho de modelos preditivos e tomar decisões baseadas em dados. Tornou-se uma tecnologia onipresente e desfrutamos de seus benefícios em: filtros de spam de e-mail, carros autônomos, reconhecimento de imagem e voz e jogadores de classe mundial .

O próximo vídeo mostra uma detecção de eventos em tempo real para o aplicativo de aprendizado de máquina de vigilância por vídeo.

Terminologia Básica e Notações

Geralmente, no aprendizado de máquina, são usadas notações matriciais e vetoriais para se referirem aos dados. Esses dados são usados normalmente em forma de matriz, onde:

  • Cada linha separada da matriz é uma amostra, observação ou ponto de dados.
  • Cada coluna é um recurso (ou atributo) dessa observação.
  • Geralmente há uma coluna (ou recurso), que chamaremos de alvo, rótulo ou resposta, e é o valor ou classe que estamos tentando prever.

Treinar um modelo de aprendizado de máquina é fornecer um algoritmo de aprendizado de máquina com dados de treinamento para aprender com ele.

Em relação aos algoritmos de aprendizado de máquina, eles geralmente possuem alguns parâmetros internos. ie: Nas Árvores de Decisão, existem parâmetros como profundidade, número de nós, número de folhas … Esses parâmetros internos são chamados de hiperparâmetros.

Generalização é a capacidade do modelo de fazer previsões sobre novos dados.

Tipos de aprendizado de máquina

Os tipos de aprendizado de máquina que serão estudados através desta série são:

  • Aprendizado supervisionado
  • Aprendizagem não supervisionada
  • Aprendizagem profunda.

Nesta série, exploraremos e estudaremos todos os tipos de aprendizado de máquina já mencionados e também nos aprofundaremos em um tipo de técnicas de aprendizado profundo chamado “aprendizado por reforço”.

Aprendizagem Supervisionada

Aprendizado supervisionado refere-se a um tipo de modelo de aprendizado de máquina que é treinado com um conjunto de amostras onde os sinais de saída desejados (ou rótulos) já são conhecidos. Os modelos aprendem com esses resultados já conhecidos e fazem ajustes em seus parâmetros internos para se adaptarem aos dados de entrada. Uma vez que o modelo esteja devidamente treinado, ele pode fazer previsões precisas sobre dados não vistos ou futuros.

Uma visão geral do processo geral:

Existem duas aplicações principais da aprendizagem supervisionada: classificação e regressão.

  1. Classificação :

A classificação é uma subcategoria de aprendizado supervisionado em que o objetivo é prever os rótulos das classes categóricas (valores discretos, não-referenciados, associação a grupos) de novas instâncias com base em observações passadas. O exemplo típico é a detecção de spam por e-mail, que é uma classificação binária (um e-mail é -1 ou não é -0- spam). Há também classificação de várias classes, como reconhecimento de caracteres manuscritos (onde as classes vão de 0 a 9).

Um exemplo de classificação binária: Existem duas classes, círculos e cruzamentos e dois recursos, X1 e X2. O modelo é capaz de encontrar a relação entre os recursos de cada ponto de dados e sua classe e definir uma linha divisória entre eles, portanto, quando fornecido com novos dados, pode estimar a classe a que pertence, dadas suas características.

Nesse caso, o novo ponto de dados cai no subespaço do círculo e, portanto, o modelo prevê que sua classe seja um círculo.

2. Regressão :

Regressão também é usada para atribuir categorias a dados não rotulados. Nesse tipo de aprendizagem, recebemos um número de variáveis preditoras (explicativas) e uma variável de resposta contínua (desfecho), e tentamos encontrar uma relação entre essas variáveis que nos permite prever um resultado contínuo.

Um exemplo de regressão linear: dado X e Y, ajustamos uma linha reta que minimiza a distância (distância quadrada média (SSE)) entre os pontos de amostra e a linha ajustada. Em seguida, usaremos a interceptação e a inclinação aprendidas, que formam a linha ajustada, para prever o resultado de novos dados.

Aprendizagem não supervisionada

Na aprendizagem não supervisionada, lidamos com dados não rotulados de estrutura desconhecida e o objetivo é explorar a estrutura dos dados para extrair informações significativas, sem a referência de uma variável de resultado conhecida.

Existem duas categorias principais: clustering e redução de dimensionalidade.

  1. Clustering:

Clustering é uma técnica exploratória de análise de dados usada para organizar informações em clusters ou subgrupos significativos sem qualquer conhecimento prévio de sua estrutura. Cada cluster é um grupo de objetos semelhantes que é diferente dos objetos dos outros clusters.

2. Redução de Dimensionalidade:

É comum trabalhar com dados em que cada observação vem com um alto número de características, ou seja, que possuem alta dimensionalidade. Isso pode ser um desafio para o desempenho computacional dos algoritmos de Aprendizado de Máquina, portanto, a redução de dimensionalidade é uma das técnicas usadas para lidar com esse problema.

Os métodos de redução de dimensionalidade funcionam encontrando correlações entre os recursos, o que significaria que há informações redundantes, pois alguns recursos poderiam ser parcialmente explicados com os outros. Ele remove o ruído dos dados (que também pode diminuir o desempenho do modelo) e comprime os dados para um subespaço menor, mantendo a maioria das informações relevantes.

Aprendizagem Profunda

A aprendizagem profunda é um subcampo de aprendizado de máquina, que usa uma estrutura hierárquica de redes neurais artificiais, que são construídas de maneira similar a um cérebro humano, com os nós de neurônios conectados como uma teia. Essa arquitetura permite lidar com a análise de dados de maneira não linear.

A primeira camada da rede neural usa dados brutos como uma entrada, processa-os, extrai algumas informações e as transmite para a próxima camada como uma saída. Cada camada processa a informação dada pela anterior e repete, até que os dados alcancem a camada final, o que faz uma predição.

Essa previsão é comparada com o resultado conhecido e, em seguida, por retropropagação, o modelo é capaz de aprender os pesos que geram resultados precisos.

Aprendizagem por Reforço

O aprendizado por reforço é um dos ramos mais importantes do Deep Learning. O objetivo é construir um modelo com um agente que melhore seu desempenho, baseando suas ações na recompensa que é dada pelo ambiente cada vez que uma interação é feita. A recompensa é uma medida de quão bem a ação foi para atingir um objetivo predefinido. O agente então usa esse feedback para ajustar seu comportamento futuro, com o objetivo de obter a maior recompensa.

Um exemplo comum é um mecanismo de xadrez, em que o agente decide a partir de uma série de ações possíveis, dependendo da disposição do tabuleiro (que é o estado do ambiente) e a recompensa é dada quando se ganha ou se perde o jogo.

Metodologia Geral para Modelos de Aprendizado de Máquina de Construção

Pré-processando:

É uma das etapas mais cruciais em qualquer aplicativo de aprendizado de máquina. Normalmente, os dados vêm em um formato que não é o ideal (ou mesmo inadequado) para o modelo processá-lo. Nesse caso, o pré-processamento é uma tarefa obrigatória.

Muitos algoritmos exigem que os recursos estejam na mesma escala (por exemplo: estar no intervalo [0,1]) para otimizar seu desempenho, e isso geralmente é feito aplicando-se técnicas de normalização ou padronização nos dados.

Também podemos encontrar, em alguns casos, que os recursos selecionados são correlacionados e, portanto, redundantes para extrair informações significativas deles. Em seguida, devemos usar técnicas de redução de dimensionalidade para compactar os recursos em subespaços dimensionais menores.

Por fim, dividiremos aleatoriamente nosso conjunto de dados original em subconjuntos de treinamento e teste.

Treinando e selecionando um modelo

É essencial comparar vários algoritmos diferentes para treinar e selecionar o melhor. Para isso, é necessário selecionar uma métrica para medir o desempenho do modelo. Um comumente usado em problemas de classificação é a precisão da classificação, que é a proporção de instâncias corretamente classificadas. Em problemas de regressão, um dos mais populares é o Mean Squared Error (MSE), que mede a diferença quadrática média entre os valores estimados e os valores reais.

Para garantir que nosso modelo tenha um bom desempenho em dados reais antes de usar o subconjunto de testes para a avaliação final do modelo, usaremos uma técnica chamada validação cruzada.

Essa técnica divide o conjunto de dados de treinamento em subconjuntos de treinamento e validação menores e, em seguida, estima a capacidade de generalização do modelo, em outras palavras, estimando a capacidade de prever resultados quando fornecidos com novos dados. Em seguida, ele repete o processo, K vezes e calcula o desempenho médio do modelo dividindo a soma das métricas obtidas entre o número K de iterações.

Em geral, os parâmetros padrão dos algoritmos de aprendizado de máquina fornecidos pelas bibliotecas não são os melhores para usar com nossos dados, portanto, usaremos técnicas de otimização de hiperparâmetros para nos ajudar a fazer o ajuste fino do desempenho do modelo.

Avaliando modelos e prevendo com dados não vistos

Uma vez que selecionamos e ajustamos um modelo ao nosso conjunto de dados de treinamento, podemos usar o conjunto de dados de teste para estimar o desempenho nesses dados não vistos, para que possamos fazer uma estimativa do erro de generalização do modelo. Ou avalie-o usando alguma outra métrica.

Se estivermos satisfeitos com o valor da métrica obtida, podemos usar o modelo para fazer previsões sobre dados futuros.

Embrulhar

Neste artigo, aprendemos o que é Aprendizado por Máquina, pintando um quadro amplo de sua natureza, motivação e aplicações.

Também aprendemos algumas notações básicas e terminologia e os diferentes tipos de algoritmos de aprendizado de máquina:

  • Aprendizado supervisionado, com problemas de classificação e regressão.
  • Aprendizado não supervisionado, com agrupamento e redução de dimensionalidade.
  • Aprendizado por reforço, onde o agente aprende com seu ambiente.
  • Aprendizagem profunda e suas redes de neurônios artificiais.

Por fim, fizemos uma introdução à metodologia típica para construir modelos de Machine Learning e explicamos suas principais tarefas:

  • Pré-processando.
  • Treinamento e testes.
  • Selecionando um modelo.
  • Avaliando.

Como dito no começo do artigo, este é o primeiro de uma série de artigos, e foi uma introdução geral. Esta será uma jornada emocionante, pois aprenderemos a aplicar muitas técnicas poderosas.

Esta será uma série técnica e, portanto, exploraremos alguns conceitos de cálculo, álgebra linear, estatística e python, pois eles serão necessários para entender os principais conceitos e como os algoritmos funcionam. Mas não se preocupe, faremos uma abordagem gentil a todos esses conceitos, então, mesmo que você não tenha um background tecnológico, não se sentirá sobrecarregado.

Nos próximos posts, será explicado como configurar um ambiente de programação python, com as bibliotecas apropriadas. E estaremos prontos para começar fazendo um estudo profundo de aprendizado supervisionado.

Fique ligado!