Artigo desenvolvido em parceria com Roberto Momberger Reginato.
Receber recomendações de conteúdo no YouTube, na Netflix, no Spotify e até mesmo naquele site acessado todo mês para comprar mimos para pets passou a fazer parte do nosso dia a dia de forma ubíqua. Na percepção do usuário, é algo onipresente e transparente, mas essa situação descreve o aprendizado de máquina em ação.
Você já se perguntou quanto ao que acontece nos bastidores e como aquele serviço de streaming sabe que você (eu, no caso) gosta de assistir a filmes sci-fi? Para responder essa questão, é necessário entender o conceito de machine learning, como ele funciona e quais são seus tipos.
Numa visão mais formal, machine learning, ou aprendizado de máquina, é um ramo da inteligência artificial baseado na ideia de que sistemas podem aprender com dados, reconhecendo padrões que possibilitam, por exemplo, identificar se uma imagem contém um gato ou um cachorro e qual é o perfil de consumo do usuário.
Os algoritmos de machine learning dividem-se de acordo com o problema que buscam resolver. Dentre eles, podemos destacar:
Classificação: na classificação, o objetivo é identificar a qual categoria determinada imagem ou conjunto de dados pertence. Em outras palavras, escolher dentre uma lista pré-definida de possibilidades se uma imagem diz respeito à categoria gato ou cachorro, como no exemplo.
Regressão: neste caso, procura-se estimar um valor numérico e não uma categoria ou rótulo. Pode ser utilizada para estimar a precificação de um produto, por exemplo.
Clusterização: clusterizar nada mais é do que agrupar. Logo, o objetivo desse tipo de algoritmo é agrupar dados semelhantes. Por exemplo, consumidores que possuem o mesmo perfil ou fotos que contêm a mesma pessoa, similar ao que ocorre no Google Fotos.
Otimização: faz a comparação de várias soluções possíveis, o que ocorre até que uma solução ótima, ou pelo menos satisfatória, seja encontrada. Em síntese, o objetivo é a busca da melhor solução, como em um jogo no qual os inimigos buscam o melhor caminho até o herói.
Além da divisão dos algoritmos com base no seu tipo de resposta, também podemos dividi-los de acordo com o tipo de aprendizado de máquina: supervisionado e não supervisionado.
Você deve estar se perguntando qual é a diferença entre os tipos de aprendizado e como funciona o processo de aprendizagem.
Vou detalhar esse assunto.
Como vimos, os algoritmos de machine learning também são divididos por tipo de aprendizado, dentre eles: o aprendizado supervisionado e o aprendizado não supervisionado.
A supervisão está associada à intervenção humana nos dados de treinamento, ou seja, os algoritmos não conseguem aprender sozinhos se um objeto pertence a uma determinada classe. É necessário que, dado um conjunto de informações do objeto, exista um rótulo associado a ele.
O rótulo pode ser definido como o conhecimento da resposta de alguns casos solucionados. Essa informação é gerada por um humano, que analisa os dados um a um.
Na essência, o que diferencia o aprendizado supervisionado do não supervisionado é o conhecimento do rótulo dos dados que serão utilizados no processo de aprendizagem do algoritmo.
Podemos fazer uma analogia com a sala de aula, onde o rótulo seria a orientação de um professor (aprendizado supervisionado). Ao estudar sozinho, o aluno passa por um processo de aprendizado não supervisionado.
Na abordagem supervisionada, o algoritmo aprende a executar determinada tarefa a partir de resultados conhecidos. Mas como fazer isso?
Na prática, esse tipo de aprendizado depende da intervenção humana.
Imagine que precisamos desenvolver uma solução para efetuar a classificação de imagens de diversos tipos de veículos.
Antes de iniciar o processo de aprendizado, ou seja, treinamento do modelo de machine learning, precisamos mapear todo o conjunto de imagens, identificando cada uma com o rótulo do veículo que a imagem representa: carro, moto, ônibus, caminhão, dentre outros.
Agora vamos ver um caso de regressão, onde o resultado esperado é a estimativa de um valor. Nesse exemplo, os dados de entrada poderiam ser uma tabela com valores históricos da demanda de produtos em um e-commerce. O valor vendido seria o resultado conhecido, esperado pelo algoritmo que vai aprender com os dados de entrada.
Como vimos, a classificação e a regressão, por exemplo, são algoritmos que têm como base o aprendizado de máquina supervisionado. Alguns algoritmos dentro dessa categoria são o K-NN (k-nearest neighbors), o SVM (support vector machine), as árvores de decisão, as redes neurais, dentre outros.
KNN: é o classificador do vizinho mais próximo, no qual o aprendizado é baseado “no quão similar” são os dados de um determinado elemento e seus k-vizinhos.
SVM: support vector machine ou máquina de vetores de suporte pode ser usado para solucionar problemas de classificação ou regressão. Podemos resumir o seu funcionamento como sendo a busca por uma linha (hiperplano) que melhor segrega as classes do conjunto de dados.
Árvores de decisão: uma das estruturas de dados utilizadas na computação é a árvore. Ela possui elementos (nodos) raiz e nodos folha. As árvores de decisão utilizam essa estrutura como base para o seu funcionamento. Na árvore de decisão, uma decisão é tomada através do caminhamento a partir do nó raiz até o nó folha. Em outras palavras, é como se, ao fazermos uma pergunta, a resposta é encontrada ao se percorrer os nodos da árvore de decisão até que cheguemos a um nodo terminal.
Redes neurais: de uma maneira geral, as redes neurais artificiais funcionam como uma rede de neurônios biológicos, ou seja, há o recebimento de um estímulo, o processamento de uma função e o retorno de um determinado valor.
O aprendizado não supervisionado identifica semelhanças nos dados e reage conforme a presença ou ausência de tais semelhanças em cada novo dado.
Voltando ao exemplo de identificação de veículos em imagens, o algoritmo de aprendizado não supervisionado passa a ser alimentado com várias fotos dos veículos, porém sem a resposta.
Nesse cenário, o algoritmo vai encontrar padrões para agrupar (ou clusterizar) os veículos semelhantes, porém não saberá se o veículo se trata de um carro, uma moto, um caminhão ou um ônibus.
Quando criamos os rótulos, estamos, de certa forma, limitando a busca de padrões no conjunto de dados. Por não depender de rótulos, o aprendizado não supervisionado possibilita a busca de padrões não percebidos num primeiro momento.
Como não há impedimentos para utilização de aprendizado não supervisionado mesmo quando já temos conhecimento dos padrões (respostas corretas) do problema, é possível utilizar aprendizado não supervisionado como uma etapa de pré-processamento que auxilia na descoberta dos dados.
No entanto, o aprendizado não supervisionado gera resultados mais difíceis de serem avaliados. Uma vez que não sabemos qual é a resposta correta, pode ser difícil compreender o que a saída do algoritmo quer dizer.
Por esse motivo, o método não supervisionado é comumente utilizado nos estágios iniciais da resolução do problema, com o objetivo de encontrar e explorar novas relações nos dados, mesmo quando trabalhamos com um conjunto de dados rotulados.
Como vimos, o principal tipo de algoritmo de aprendizado não supervisionado é o de clusterização. Além dele, também podemos destacar os algoritmos de redução de dimensionalidade, como a Análise de Componentes Principais (PCA).
De forma resumida, PCA é um método matemático que tem como objetivo converter um conjunto de dados que descrevem um elemento em um novo conjunto, menor. Os novos conjuntos de dados são denominados componentes principais.
Dentre os algoritmos de clusterização mais utilizados estão o K-means e o DBSCAN.
O K-means é um método de clusterização que particiona objetos de dados em k-grupos.
O agrupamento é feito por meio do cálculo da distância entre os objetos, de forma que cada elemento pertence ao grupo mais próximo da média da sua centroide, ou seja, mais similar a ele. O resultado é a divisão dos dados de forma similar a um Diagrama de Voronoi, ou seja, dividido em áreas.
Mas como esse algoritmo funciona?
Inicialmente, são criadas k-centroides (aleatórias), que serão os grupos de dados resultantes.
A separação dos dados ocorre a partir do cálculo da distância entre os centros de todos os elementos da base de dados.
Cada elemento é atribuído ao k mais próximo dele. A partir de então, as centroides são reposicionadas de acordo com a média das centroides dos elementos do grupo k (daí o nome k-means).
O reposicionamento se repete até que os elementos estejam adequadamente no seu grupo k.
Há ainda métodos que podem ser utilizados para auxiliar a definir qual é a quantidade ideal de k-centroides: Elbow Method e Silhouette Method.
Outro algoritmo de agrupamento bastante conhecido é o DBSCAN, do inglês density-based spatial clustering of applications with noise ou, traduzindo, agrupamento espacial baseado em densidade de aplicações com ruído.
Dentre as principais vantagens do DBSCAN destaca-se que ele não exige uma pré-definição do número de clusters, uma vez que é capaz de identificar os limites entre clusters de conjuntos de dados complexos e identificar pontos que não fazem parte de cluster algum (ruídos ou outliers).
No entanto, o DBSCAN é um pouco mais lento do que outros algoritmos de clusterização, como o k-means, visto anteriormente. Ainda assim, ele se adapta a conjuntos de dados relativamente grandes.
O DBSCAN funciona identificando pontos que estão em regiões densas, que são regiões nas quais há muitos dados próximos. A ideia por trás do algoritmo DBSCAN é que os clusters são compostos por regiões densas separadas por regiões relativamente vazias.
O algoritmo inicia selecionando um ponto arbitrário para avaliar. A partir de então é feita uma busca por todos os pontos que estão abaixo de uma determinada distância dele. Se forem encontrados poucos pontos próximos, o ponto analisado é considerado um outlier, o que quer dizer que ele não pertence a cluster algum (grupo).
Caso existam vizinhos suficientes, o ponto que está sendo avaliado e seus vizinhos são rotulados e atribuídos ao mesmo cluster. O algoritmo também visita os vizinhos antigos de qualquer ponto que já tenha sido identificado como pertencente a um outro cluster.
O cluster cresce até que o algoritmo não consiga identificar novos vizinhos. Na sequência, outro ponto que ainda não foi visitado é selecionado e o processo se repete.
Neste artigo, entendemos a diferença entre aprendizado de máquina supervisionado e não supervisionado e conhecemos um pouco mais seus principais algoritmos. No desenvolvimento de soluções de machine learning, cabe ao engenheiro identificar qual é a resposta esperada, definindo qual é o melhor algoritmo a ser aplicado. O papel do algoritmo é aprender com os dados de entrada e definir qual função matemática pode ser aplicada para retornar o resultado esperado. Nos próximos posts, vamos aprofundar o funcionamento dos algoritmos mencionados, por meio de exemplos, para contribuir com o entendimento.
Müller, Andreas C., and Sarah Guido. Introduction to machine learning with Python: a guide for data scientists. O’Reilly Media, Inc., 2016.