Machine Learning: Conceitos e Modelos — Parte II: Aprendizado Não-Supervisionado*

Tatiana Escovedo
10 min readJun 29, 2020

Este artigo é a continuação do artigo Machine Learning: Conceitos e Modelos — Parte I: Aprendizado Supervisionado, disponível em https://medium.com/@tatianae_79457/machine-learning-conceitos-e-modelos-f0373bf4f445

Conforme vimos na parte I deste artigo, Machine Learning consiste na utilização de algoritmos com a finalidade de extrair informações de dados brutos e representá-los por meio de algum tipo de modelo matemático, que será usado para fazer inferências — ou predições — a partir de novos conjuntos de dados. Em Machine Learning, o aprendizado é o objetivo principal.

Podemos dividir o aprendizado em Machine Learning em dois grandes tipos: supervisionado e não-supervisionado. No aprendizado não-supervisionado, não existe a informação dos rótulos históricos, ou seja, não temos as da saídas desejadas a serem estimadas e, por este motivo, dizemos que nossos dados são não-rotulados. Assim, o algoritmo não recebe durante o treinamento os resultados esperados, devendo descobrir por si só, por meio da exploração dos dados, os possíveis relacionamentos entre eles. Neste caso, o processo de aprendizado busca identificar regularidades entre os dados a fim de agrupá-los ou organizá-los em função das similaridades que apresentam entre si. Como não temos dados rotulados, não há necessidade de realizar particionamento em conjuntos de treino e teste. A figura a seguir ilustra o funcionamento de um modelo de aprendizado não-supervisionado:

Esquema do aprendizado não-supervisionado

Vale também relembrarmos as 7 etapas que, idealmente, devem ser realizadas em todos os projetos de Machine Learning:

  1. Entender o problema e definir objetivos — Que problema estou resolvendo?
  2. Coletar e analisar os dados — De que informações preciso?
  3. Preparar os dados — Como preciso tratar os dados?
  4. Construir o modelo — Quais são os padrões nos dados que levam a soluções?
  5. Avaliar e criticar o modelo — O modelo resolve meu problema?
  6. Apresentar resultados — Como posso resolver o problema?
  7. Distribuir o modelo — Como resolver o problema no mundo real?

A figura a seguir resume este fluxo:

Esquema de um projeto completo de Machine Learning. Fonte: (ESCOVEDO & KOSHIYAMA, 2020)

São exemplos de problemas de aprendizado não-supervisionado a Clusterização (ou Agrupamento) e a Associação. Estes tipos de problemas serão detalhados a seguir.

Clusterização

O problema de Clusterização (ou Agrupamento) tem o objetivo de agrupar os dados de interesse, ou separar os registros de um conjunto de dados em subconjuntos ou grupos (clusters), de tal forma que elementos em um cluster compartilhem um conjunto de propriedades comuns que os diferencie dos elementos de outros clusters. São os problemas de aprendizagem não-supervisionada mais comuns. Um exemplo deste problema seria imaginar que quiséssemos determinar localidades promissoras para abertura de novas filiais de uma loja. Neste caso, os bairros de uma cidade poderiam ser agrupados em localidades mais ou menos promissoras.

Neste tipo de problema, os grupos são formados de acordo com alguma medida de similaridade, de forma que elementos pertencentes a um dado grupo devem ser mais similares entre si, ou seja, compartilham um conjunto maior de propriedades comuns, do que em relação aos pertencentes a outros grupos. Sendo assim, é necessário definir o que significa que duas observações são similares ou diferentes dentro do domínio do nosso problema. Esta informação geralmente é obtida por meio da consulta a especialistas do negócio, que auxiliam na interpretação dos resultados, mas também existem métricas que medem o resultado do agrupamento, tais como o coeficiente de silhouette. Alguns algoritmos de clusterização requerem que o usuário forneça o número de clusters a formar, enquanto outros buscam detectar a quantidade de clusters naturais existentes no conjunto de dados de entrada.

Os algoritmos de clusterização podem ser divididos em duas categorias: partitivos ou hierárquicos. Os algoritmos partitivos dividem o conjunto de dados em k clusters e produzem agrupamentos simples, tentando fazer os clusters tão compactos e separados quanto possível. Eles funcionam bem quando os clusters são compactos, densos e bastante separados uns dos outros. Entretanto, quando existem grandes diferenças nos tamanhos e geometrias dos diferentes clusters, podem dividir desnecessariamente grandes clusters para minimizar a distância total calculada.

O funcionamento dos algoritmos partitivos pode ser resumido como:

  1. Inicialmente, k objetos são escolhidos aleatoriamente como os centros dos k clusters.
  2. Os objetos são divididos entre os k clusters de acordo com a medida de similaridade adotada, de modo que cada objeto fique no cluster que forneça o menor valor de distância entre o objeto e o centro do cluster.
  3. Uma estratégia iterativa determina se os objetos devem mudar de cluster, fazendo com que cada cluster contenha somente os elementos mais similares entre si.
  4. Após a divisão inicial, há duas possibilidades na escolha do “elemento” que vai representar o centro do cluster, e que será a referência para o cálculo da medida de similaridade:
  5. Média dos objetos que pertencem ao cluster (centróide ou centro de gravidade do cluster).
  6. O objeto que se encontra mais próximo ao centro de gravidade daquele cluster (medoide).

Já os algoritmos hierárquicos criam uma decomposição hierárquica do conjunto de dados, representada por um dendrograma, uma árvore que iterativamente divide o conjunto de dados em subconjuntos menores até que cada subconjunto consista em somente um objeto. Cada nó da árvore representa um cluster do conjunto de dados e a união dos clusters em um determinado nível da árvore corresponde ao cluster no nível exatamente acima. A figura a seguir ilustra um dendrograma:

Exemplo de um dendrograma

Os algoritmos hierárquicos podem seguir a abordagem aglomerativa (bottom-up), que começa considerando cada um dos elementos do conjunto de entrada um cluster (uma folha da árvore) e vai agrupando-os segundo um critério de distância até que se chegue à raiz da árvore; ou divisiva (top-down), na qual se parte da raiz para as folhas, considerando inicialmente todos os elementos do conjunto de entrada pertencentes a um único cluster (raiz) e realizando sucessivas divisões em clusters até que se obtenha n clusters ou alguma condição de parada seja satisfeita.

Associação

O problema de Associação pode ser exemplificado pela oferta de novos serviços e produtos a clientes. Por exemplo, em um sistema de e-commerce, poderíamos nos perguntar: “Quem observa esse produto tem interesse em ver qual outro?”. Ou ainda: “Quem observa esse produto costuma comprar qual outro?”. Apesar de ser considerado um problema de aprendizado não-supervisionado e ser bastante utilizado na prática, o detalhamento deste tipo de problema, cujo algoritmo mais conhecido é o Apriori, está fora do escopo deste livro.

Para cada um dos problemas de Machine Learning — Classificação, Regressão, Clusterização e Agrupamento — existem diversos algoritmos que podem ser utilizados. Entretanto, vale a pena mencionar o conhecido teorema “não existe almoço grátis”: não existe um algoritmo de aprendizado que seja superior a todos os demais quando considerados todos os problemas possíveis. A cada problema, os algoritmos disponíveis devem ser experimentados a fim de identificar aqueles que obtêm melhor desempenho. Em seguida, apresentaremos alguns dos modelos mais utilizados para aprendizagem supervisionada e não-supervisionada.

Algoritmos de Machine Learning

K-means

Um dos algoritmos de Clusterização mais conhecido e utilizado é o K-means, um algoritmo baseado em distâncias. Este algoritmo exige que seja informado previamente o parâmetro k (número de clusters ou grupos) e atribui cada observação a um dos k clusters. A figura a seguir ilustra os resultados deste algoritmo em uma mesma base de dados, considerando 3 diferentes valores de k:

Exemplo do resultado do algoritmo K-means para diferentes valores de k. Fonte: (ESCOVEDO & KOSHIYAMA, 2020)

O algoritmo K-means considera que os registros do conjunto de dados correspondem a pontos no Rn, em que cada atributo corresponde a uma dimensão e k determina a quantidade de grupos a serem identificados. Seu funcionamento pode ser resumido nas seguintes etapas:

  1. Seleciona aleatoriamente k pontos do conjunto de dados (sementes), que são os representantes iniciais (centróides), dos k grupos a serem formados.
  2. Para cada ponto, o algoritmo calcula a distância deste ponto a cada um dos centróides e atribui este ponto ao grupo cuja distância do centróide seja a menor. O resultado desse passo inicial é que cada ponto do conjunto de dados fica associado a um dos k grupos.
  3. Após a alocação inicial, o método segue iterativamente, atualizando os centróides de cada grupo e da realocando os pontos a grupos, de acordo com o centróide mais próximo. O novo centróide de cada grupo G é calculado pela média dos pontos alocados a G.
  4. O processo iterativo termina quando os centróides dos grupos param de se modificar, ou após um número preestabelecido de iterações ter sido realizado.

Inicialmente, as sementes são selecionadas aleatoriamente e cada exemplo é alocado ao grupo com menor distância do centróide. Os centróides são então atualizados e ocorre nova realocação de pontos. Este processo continua iterativamente até a convergência.

Em geral, o K-means apresenta bom desempenho quando os grupos são densos, compactos e bem separados uns dos outros, além de ser computacionalmente rápido e de fácil entendimento e implementação Entretanto, há a necessidade de especificar previamente o parâmetro k, sendo necessário realizar experimentos para determinar o valor adequado. Além disso, este algoritmo não é adequado para descobrir grupos com formas não convexas, de tamanhos muito diferentes ou com sobreposição. Seu desempenho é muito sensível à existência de ruídos no conjunto de dados, visto que mesmo um pequeno número de dados ruidosos pode influenciar significativamente os valores médios dos grupos.

Apriori

O algoritmo mais conhecido para problemas de Associação é o Apriori, proposto por em 1993. Este algoritmo está presente em diversos softwares comerciais e públicos, é de fácil uso e é amplamente utilizado. Diversos outros algoritmos para descoberta de associações foram inspirados no Apriori, como DHP, Partition, DIC, Eclat, MaxEclat, Clique, MaxClique, Cumulate e EstMerge.

A ideia básica do Apriori é extrair um conjunto de regras a partir da conjunção de itens mais frequentes na base de dados, até que alguns critérios de parada sejam atendidos, como tamanho máximo da regra, suporte mínimo da premissa e confiança mínima da regra.

Para ilustrar seu funcionamento, vamos utilizar o exemplo do capítulo 56: uma loja virtual na qual, dado um novo cliente, queremos saber qual produto oferecer via análise do histórico, considerando um grupo de clientes que observaram/adquiriram determinados produtos, ilustrados pela tabela a seguir:

Histórico de compras de um grupo de clientes

Passo 1: defina os parâmetros usados como base para extração das regras de associação, por exemplo:

  • Tamanho máximo da regra = 2
  • Suporte mínimo da premissa = 1/7
  • Confiança mínima da regra = 2/7

Passo 2: gere as primeiras premissas e calcule as suas métricas de suporte:

Premissas:

  • Prem1 = “Se Acesso é TV”
  • Prem2 = “Se Acesso é Tablet”
  • Prem3 = “Se Acesso é Smartphone”

Suporte:

  • Sup(Prem1) = 3/7
  • Sup(Prem2) = 5/7
  • Sup(Prem3) = 4/7

Todas são viáveis, pois atendem ao critério de suporte mínimo da premissa estabelecido anteriormente (1/7).

Passo 3: gere as regras e calcule as métricas:

Regras:

  • R1 = “Se Acesso é TV, então Acesso é Tablet”
  • R2 = “Se Acesso é TV, então Acesso é Smartphone”
  • R3 = “Se Acesso é Tablet, então Acesso é TV”
  • R4 = “Se Acesso é Tablet, então Acesso é Smartphone”
  • R5 = “Se Acesso é Smartphone, então Acesso é TV”
  • R6 = “Se Acesso é Smartphone, então Acesso é Tablet”

Confiança:

  • Conf(R1) = 3/3
  • Conf(R2) = 0/3
  • Conf(R3) = 3/5
  • Conf(R4) = 2/5
  • Conf(R5) = 0/4
  • Conf(R6) = 2/4

Podemos eliminar as regras R2 e R5, pois não atendem ao critério de confiança mínima da regra estabelecido anteriormente (2/7).

Passo 4: refazer os passos 2 e 3 até o critério de parada.

Novas premissas:

  • Prem4 = “Se Acesso é TV e Tablet”
  • Prem5 = “Se Acesso é TV e Smartphone”
  • Prem6 = “Se Acesso é Tablet e TV”
  • Prem7 = “Se Acesso é Tablet e Smartphone”
  • Prem8 = “Se Acesso é Smartphone e TV”
  • Prem9 = “Se Acesso é Smartphone e Tablet”

Suporte:

  • Sup(Prem4) = 3/7
  • Sup(Prem5) = 0/7
  • Sup(Prem6) = 3/7
  • Sup(Prem7) = 2/7
  • Sup(Prem8) = 0/7
  • Sup(Prem9) = 2/7

Podemos elminar as premissas Prem5 e Prem8, pois não atendem ao critério de suporte mínimo da premissa estabelecido anteriormente (1/7).

Novas regras:

  • R7 = “Se Acesso é TV e Tablet, então Acesso é Smartphone”
  • R8 = “Se Acesso é Tablet e TV, então Acesso é Smartphone”
  • R9 = “Se Acesso é Tablet e Smartphone, então Acesso é TV”
  • R10 = “Se Acesso é Smartphone e Tablet, então Acesso é TV”

Claramente, todas são inviáveis pois a intersecção entre Smartphone e TV é vazia.

Passo 5: retornar as regras geradas.

  • R1 = “Se Acesso é TV, então Acesso é Tablet”
  • R3 = “Se Acesso é Tablet, então Acesso é TV”
  • R4 = “Se Acesso é Tablet, então Acesso é Smartphone”
  • R6 = “Se Acesso é Smartphone, então Acesso é Tablet”

Assim, dado um novo cliente na loja virtual, ofereceríamos a ele também o Tablet caso ele visualizasse a TV ou o Smartphone, e ofereceríamos também a TV e o Smartphone, caso ele visualizasse o Tablet.

Para Saber Mais

Este artigo apresentou de forma resumida os principais conceitos e algoritmos de aprendizado não-supervisionado relacionados a Machine Learning. Caso você tenha interesse em se aprofundar no assunto, recomendamos a leitura dos seguintes livros:

  • Tatiana Escovedo & Adriano S. Koshiyama. “Introdução a Data Science — Algoritmos de Machine Learning e métodos de análise”. Ed. Casa do Código, São Paulo, 2020. (Para comprar: https://www.casadocodigo.com.br/products/livro-data-science)
  • Ronaldo Goldschmidt, Emmanuel Passos e Eduardo Bezerra. “Data Mining: Conceitos, Técnicas, Algoritmos, Orientações e Aplicações”. Rio de Janeiro, Elsevier, 2005.
  • Tom Fawcett e Foster Provost. “Data Science para Negócios: O que você precisa saber sobre mineração de dados e pensamento analítico de dados”. Alta Books Editora, 2018.
  • Jason Brownlee. “Machine Learning Mastery with Python”. Machine Learning Mastery Pty Ltd, 2016. (Para comprar: https://machinelearningmastery.com/machine-learning-with-python/)
  • Laura Igual e Santi Seguí. “Introduction to Data Science: A Python Approach to Concepts, Techniques and Applications”. Springer, Cham, 2017.

Referências bibliográficas do capítulo:

(Escovedo & Koshiyama, 2020) Tatiana Escovedo & Adriano S. Koshiyama. “Introdução a Data Science — Algoritmos de Machine Learning e métodos de análise”. São Paulo, Ed. Casa do Código, 2020.

*Este texto faz parte dos livros colaborativos "Jornada Python — Uma Jornada imersiva na aplicabilidade de uma das mais poderosas linguagens de programação do mundo" e "Jornada Data Driven", previstos para lançamento, respectivamente, em 2020 e em 2021 pela editora Brasport.

--

--

Tatiana Escovedo

Coordinator at Petrobras / Lato Sensu Teacher and Coordinator at PUC-Rio / Data Scientist / Speaker / Writer