Baixe o app para aproveitar ainda mais
Prévia do material em texto
DESCRIÇÃO Conceitos de aprendizado não supervisionado e sua aplicação em processos de descoberta de conhecimento em bases de dados. PROPÓSITO Conhecer técnicas de aprendizado não supervisionado é fundamental para o profissional da área de ciência de dados, uma vez que os resultados oriundos delas permitem descobrir padrões prévios, incrementar conjuntos de dados já existentes e ajudar a limpar o conjunto de dados. PREPARAÇÃO Para a compreensão e reprodução dos exemplos, é importante que você tenha instalado, em sua máquina de estudos, o ambiente da linguagem Python na versão 3.8 ou superior, com as bibliotecas Pandas, Numpy, Sklearn e Plotly. Será necessário também instalar o Jupyter, que é um visualizador do ambiente de programação, instalado como biblioteca do Python, através do comando pip install jupyter. Além dos códigos Python em formato texto ao longo do conteúdo, estão disponíveis para download os arquivos dos notebooks contendo os exemplos utilizados nos vídeos dos módulos 2 e 3: 2-kmeans.ipynb 3-hierarchical-cluster.ipynb OBJETIVOS MÓDULO 1 Identificar problemas de análise de agrupamentos MÓDULO 2 Descrever algoritmos de K-Médias MÓDULO 3 Descrever o método de agrupamento hierárquico INTRODUÇÃO Neste conteúdo, aprenderemos a identificar problemas de análise de agrupamentos ou clusterings, entenderemos quando podemos aplicar um tipo de algoritmo de aprendizado não supervisionado ou outro, e quais vantagens e desvantagens de tal abordagem implicam ao processo de desenvolvimento de projetos de KDD (Knowledge Discovery in Databases ou Descoberta de Conhecimento em Bases de Dados). javascript:void(0); javascript:void(0); Ainda na parte de problemas, compreenderemos quais são as possíveis e correspondentes métricas mais adequadas para monitorar e avaliar problemas desse tipo de um modo geral, bem como a matemática por trás dessas métricas. Descreveremos o método K-Médias (também conhecido como K-Means), compreendendo o algoritmo e o processo de definição dos centros de massa (para o K-Means os K-Medoides). Veremos um pouco da matemática por trás do K-Médias. Depois, apresentaremos uma demonstração em Python para que possa ser replicada localmente e possa ser modificada para fins de experimentação e exercício de fixação. Por fim, entenderemos o agrupamento hierárquico, uma outra modalidade de agrupamento, que visa descobrir padrões inter-relacionados e, como o próprio nome diz, hierarquias de padrões. Ainda veremos as diferentes abordagens de agrupamento hierárquico como o aglomerativo (bottom up), que parte do princípio de juntar as observações no espaço amostral, e parar quando chegar a um agrupamento maior, tendo passado por todas as observações; e o divisivo (top down), partindo do princípio de dividir um agrupamento inicial maior até chegar a agrupamentos menores ou até termos agrupamentos individuais, ou mesmo uma condição de parada predeterminada. Veremos os algoritmos de ambos, bem como seu funcionamento. Encerraremos com uma demonstração em Python para que você compreenda e replique localmente, como exercício de fixação. MÓDULO 1 Identificar problemas de análise de agrupamentos LIGANDO OS PONTOS Você conhece o problema de agrupamentos? Sabia que ele é utilizado em muitas situações práticas? Para respondermos a essas perguntas, vamos analisar algumas situações práticas. Constantemente, nós nos deparamos com situações em que precisamos agrupar elementos. Por exemplo, quando chegamos a um supermercado, é muito comum encontrarmos itens agrupados por seções, tais como: congelados, grãos, higiene pessoal e limpeza. É claro que pode haver variação de acordo com o empreendimento, mas a ideia permanece: a necessidade de criar grupos. E por que isso é importante? Agrupar elementos facilita criar tratamentos específicos para eles. No exemplo do supermercado, esse processo tem diversas implicações como estratégias de vendas e de economia de energia elétrica. Vamos focar em uma situação específica: imagine que você atua como analista de dados em uma empresa de vendas online de vestuário e de calçados. Você deseja estudar o comportamento de seus clientes com o objetivo de segmentá-los em grupos e traçar estratégias mais eficientes para engajamento. Quais as etapas necessárias para o processo? A primeira etapa sempre será o levantamento dos dados. Sem dados, tudo é especulação. Em seguida, vem a fase de organização e limpeza desses dados que consiste em: Identificação e remoção de dados inconsistentes: como datas incoerentes e valores numéricos sem sentido. Transformação dos dados categóricos para dados numéricos: por exemplo, um cliente classificado como consumidor recorrente deve receber um valor 5, enquanto outro que é classificado como eventual recebe valor 2. Normalização dos dados: nessa etapa, precisamos transformar todos os dados em uma faixa de valores, normalmente de 0 a 1, para que possam ser comparados. Realizadas essas etapas, agora sim você pode analisar os dados dos clientes e buscar semelhanças entre eles através de um critério definido que permita agrupá-los. Com esses grupos em mãos, você pode desenvolver uma estratégia de marketing mais eficiente, sendo que uma campanha bem-sucedida implica o aumento das vendas e o uso racional dos investimentos em divulgação. Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? 1. APESAR DE TERMOS NOS FOCADO EM UM CASO, OS PROBLEMAS DE AGRUPAMENTOS ACONTECEM EM DIVERSAS ÁREAS, INCLUSIVE NAS MENOS TRIVIAIS, COMO VISÃO COMPUTACIONAL E PROCESSAMENTO DE ÁUDIO E VOZ. CONHECER ESSAS POSSIBILIDADES DE APLICAÇÃO É UMA FORMA MUITO INTERESSANTE DE DESENVOLVER UM RACIOCÍNIO SISTEMATIZADO PARA RESOLVER PROBLEMAS COM A UTILIZAÇÃO DE MECANISMOS AVANÇADOS QUE OFERECEM ESCALABILIDADE E EFICIÊNCIA DA SOLUÇÃO. RESOLVER OS PROBLEMAS DE AGRUPAMENTO DE FORMA EFICIENTE É MUITO ÚTIL PARA DAR SUPORTE A MUITOS PROCESSOS DE DECISÃO. PENSANDO SOBRE AS APLICAÇÕES DESSAS SOLUÇÕES, SELECIONE A OPÇÃO QUE TRATA DAS CONDIÇÕES BÁSICAS PARA APLICAR ESSAS SOLUÇÕES. A) Identificar a oportunidade de aplicar uma solução de agrupamentos para determinado problema. B) Utilizar uma linguagem de programação. C) Aplicar uma ferramenta de software livre que faça os agrupamentos dos dados. D) Os dados devem ser estruturados. E) Utilizar algoritmos eficientes para obter as soluções com velocidade. 2. A PARTIR DO EXEMPLO DO CASE APRESENTADO, CONSIDERE OUTRA SITUAÇÃO: VOCÊ É RESPONSÁVEL POR PROPOR UMA SOLUÇÃO PARA SEGMENTAR OS CONTRIBUINTES DE UM MUNICÍPIO DE MODO QUE A PREFEITURA POSSA ESTRUTURAR UMA CAMPANHA DE VACINAÇÃO MAIS EFICIENTE. ESSA SITUAÇÃO PODE SER TRATADA COMO UM PROBLEMA DE AGRUPAMENTOS? A) Sim, pois existem altas chances de todas as pessoas pertencerem aos mesmos grupos de acordo as faixas etárias. B) Sim, pois as pessoas de um mesmo município possuem muitas características em comum. C) Sim, pois as pessoas serão agrupadas conforme se assemelhem conforme um critério de associação. D) Não, pois os indivíduos são diferentes entre si. E) Não, pois não há como garantir que os dados de todas os indivíduos estejam completos. GABARITO 1. Apesar de termos nos focado em um caso, os problemas de agrupamentos acontecem em diversas áreas, inclusive nas menos triviais, como visão computacional e processamento de áudio e voz. Conhecer essas possibilidades de aplicação é uma forma muito interessante de desenvolver um raciocínio sistematizado para resolver problemas com a utilização de mecanismos avançados que oferecem escalabilidade e eficiência da solução. Resolver os problemas de agrupamento de forma eficiente é muito útil para dar suporte a muitos processos de decisão. Pensando sobre as aplicações dessas soluções, selecione a opção que trata das condições básicas para aplicar essas soluções. A alternativa "A " está correta. A questão mais básica para aplicar uma solução por agrupamentos é identificar a oportunidade de modelá-lacomo um problema de agrupamentos. A manipulação dos dados, os algoritmos utilizados e a implementação da solução são consequências desse processo de identificação inicial. 2. A partir do exemplo do case apresentado, considere outra situação: você é responsável por propor uma solução para segmentar os contribuintes de um município de modo que a prefeitura possa estruturar uma campanha de vacinação mais eficiente. Essa situação pode ser tratada como um problema de agrupamentos? A alternativa "C " está correta. Agrupar pessoas através de um critério de similaridade significa segmentá-las em grupos conforme as semelhanças de suas características. O cenário descrito do problema é um caso típico de aplicação de algoritmos de agrupamento. 3. NO TEXTO, FORAM APRESENTADOS EXEMPLOS QUE REFORÇAM A IMPORTÂNCIA DOS ALGORITMOS DE AGRUPAMENTO. UM DOS EXEMPLOS DE APLICAÇÃO MENCIONADOS FOI O DE VISÃO COMPUTACIONAL. QUE TIPO DE SITUAÇÃO EM VISÃO COMPUTACIONAL FARIA SENTIDO APLICAR UM ALGORITMO DE AGRUPAMENTO? RESPOSTA De forma bem simples, a visão computacional trata da capacidade de um sistema computacional de distinguir objetos em imagens. É necessário “ensinar” para o sistema o que é um objeto, mas é impossível apresentar todas as possíveis variações desses objetos. Portanto, o algoritmo de agrupamento auxilia no processo de extrair características que possam ser utilizadas para obter similaridades e relacionar os objetos com os grupos a que eles pertencem. Por exemplo, uma bola pequena ou grande continua sendo uma bola. javascript:void(0) VISÃO GERAL A associação mais correta a ser feita, quando falamos de aprendizado não supervisionado, é o de aprendizado às cegas, em que buscamos por conta própria explorar o espaço amostral de observações por padrões e relacionamentos. Imagem: Shutterstock.com Descobertos esses padrões, podemos começar a agrupar e organizar tal conhecimento, atualizando nossos referenciais à medida que vamos organizando a desordem natural inerente do espaço amostral. Vamos, ao fim, ser capazes de avaliar nosso agrupamento, bem como de visualizar e apresentar essa informação a outros, e/ou fundirmos esses novos dados na base de conhecimentos preexistentes em nossas bases de conhecimento. No entanto, devemos sempre tomar cuidado, pois se trata de um processo de interpretação subjetiva, de validade relativamente fraca, e que pode ser afetado pelas condições de inicialização do processo. O processo pode começar muito bem, de forma quase ótima, ou seja, com os seus referenciais quase perfeitos, ou pode começar com os referenciais enviesados, nas bordas ou nos extremos dos conceitos e agrupamentos possíveis em questão. PROBLEMAS DE ANÁLISE DE AGRUPAMENTOS Entre as tarefas de aprendizado de máquina, o agrupamento ou clustering é uma tarefa que tem o objetivo de criar grupos e atribuir instâncias a esses grupos, a partir de características ou atributos dessas instâncias. ATENÇÃO Diferentemente da classificação, no agrupamento não existe uma classe predefinida necessariamente para cada instância, mas, sim, um novo rótulo baseado nos grupos descobertos. Imagem: Fernando Cardoso Durier da Silva. Problema de Agrupamento. Como podemos ver na imagem anterior, o problema clássico começa com um conjunto de observações no espaço amostral, as quais estão dispersas e precisam ser relacionadas de alguma forma para expor um padrão implícito, mesmo que cada observação já pertença a uma classe prévia. Dito isso, o algoritmo de aprendizado não supervisionado escolhido para agrupar ou clusterizar, iterativamente, percorrerá o espaço amostral, relacionando as observações até então dispersas, agrupando-as por similaridade (ou proximidade). EXEMPLOS São clássicos problemas de agrupamento: Agrupamento de espécies. Alternativa para modelagem tópica de documentos. Agrupamento de perfis de acesso. Agrupamento de grupos sociais (como social bubbles, echo chambers). Além do uso tradicional, podemos aplicar a tarefa de agrupamento para “interpolar” novos atributos para nossas observações; por exemplo, podemos utilizar o agrupamento para enriquecer um conjunto de dados e, assim, prover um melhor conjunto de treinamento para um algoritmo supervisionado de regressão ou de classificação. Podemos utilizar o agrupamento para fundir dados, como em um conjunto bipartido em que há relação, porém fraca, por exemplo, um conjunto de posts em mídias sociais de usuários comuns e posts de influenciadores políticos. E, por último, podemos utilizar o agrupamento para completar dados faltantes por similaridade, por exemplo, dados faltantes categóricos, que podem ter uma semântica implícita, para a qual as técnicas tradicionais que dependem estritamente da estatística básica da coluna não servirão como solução. Como foi dito, o tipo de aprendizado do qual estamos falando é o aprendizado não supervisionado, pois o algoritmo utilizado não tem uma etapa de treinamento propriamente, mas um treinamento iterativo sob demanda no espaço amostral em questão. As etapas do processo de aprendizado não supervisionado são: SELEÇÃO DE ATRIBUTOS Reduzir ao máximo a dimensionalidade dos dados, a fim de obter a menor quantidade com a melhor codificação de atributos. MEDIDA DE PROXIMIDADE Definir os critérios ou métodos de cálculo de similaridade e dissimilaridade. Como todos os atributos têm que ser levados em consideração para o cálculo de similaridade e de forma igualitária (sem pesos), é necessário normalizar o conjunto de dados. CRITÉRIO DE AGRUPAMENTO O critério de agrupamento normalmente é dado pelo que o cientista de dados ou os stakeholders entendem como característica relevante ao agrupamento. Por exemplo, mais disperso, mais compacto etc. ALGORITMO DE AGRUPAMENTO Muito dependente do critério de agrupamento, pois é ele que leva à escolha do algoritmo. Por exemplo, se há uma intuição ou restrição quanto à quantidade esperada de clusters, então, tudo indica a escolha de um K-Médias (K-Means); se não houver restrição e quisermos explorar ao máximo o conjunto de dados, então, escolheríamos um DBSCAN (do inglês Density-Based Spatial Clustering of Applications with Noise). VERIFICAÇÃO DE RESULTADOS Executado o algoritmo de agrupamento, podemos verificar se o resultado faz sentido, por meio de aplicação de métricas de acompanhamento predefinidas ou genéricas próprias das técnicas de agrupamento. INTERPRETAÇÃO DOS RESULTADOS Esta é a parte mais divertida da tarefa de agrupamento, que consiste em juntar os padrões descobertos (os clusters) ao conjunto de dados original e/ou a outras evidências, e conjecturar sobre isso, concluindo hipóteses, ou reforçando premissas preestabelecidas, mas não explicadas a priori. Imaginemos que seja o mesmo processo de arrumar nosso quarto ou nossa bancada depois de muito tempo; entraremos no ambiente sem lembrar exatamente o que temos ali e vamos de coisa em coisa espalhada, tentando agrupá-las em nichos, de acordo com critérios de similaridade, e só paramos quando todos os itens tiverem sido arrumados e qualquer coisa que não seja mais útil tenha sido descartada. Dito isso, quanto maior for a bagunça, ou seja, quanto maior for seu espaço amostral, mais tempo vamos passar ali recolhendo e agrupando, recolhendo e reajustando os nichos. Foto: Shutterstock.com COMENTÁRIO Em outras palavras, a vantagem é que teremos um algoritmo robusto e independente, capaz de explorar qualquer ambiente (ainda que existam melhores escolhas e estratégias para certas situações), trazendo- nos padrões implícitos que sempre enriquecerão a análise. A contrapartida é que, dependendo do tamanho do conjunto de dados, o resultado pode ser demorado e computacionalmente muito custoso. MÉTRICAS ESPECÍFICAS DE AGRUPAMENTO De um modo geral, aprendizado não supervisionado não pressupõe métricas como acurácia e precisão, como vemos no aprendizado supervisionado, uma vez que não há rótulos preestabelecidos para haver esse tipo de comparação de acertosou erros. Mas existem alternativas, como veremos a seguir. O coeficiente de silhueta indica a distância média entre uma amostra e todos os outros pontos em uma mesma classe, e entre uma amostra e todos os outros pontos no grupo mais próximo. O coeficiente de silhueta S para uma única amostra é definido pela fórmula a seguir. S = B - A MAX ( A , B ) Atenção! Para visualização completa da equação utilize a rolagem horizontal onde “a” é a dissimilaridade do objeto em relação a todos os objetos do mesmo grupo e “b” é a dissimilaridade entre o objeto em relação a todos os objetos do grupo vizinho mais próximo a ele. Temos também o índice Calinski-Harabaz: indicando por k o número de grupos, Bk e Wk são as matrizes de dispersão entre agrupamentos e dentro de cada agrupamento, respectivamente, definidos como: BK = ∑ K J = 1NC ( I ) ΜC ( I ) - Μ ΜC ( I ) - Μ T WK = ∑ M I = 1 X ( I ) - ΜC ( I ) X ( I ) - ΜC ( I ) T Atenção! Para visualização completa da equação utilize a rolagem horizontal ( ) ( ) ( ) ( ) O índice Calinski-Harabaz s(k) indica quão bem um modelo de agrupamento define o seu grupo, tal que, quanto maior for a maior pontuação, mais denso e bem separado estarão os agrupamentos. E é definido pela seguinte fórmula: S ( K ) = TR BK TR WK × N - K K - 1 Atenção! Para visualização completa da equação utilize a rolagem horizontal MÉTRICAS GENÉRICAS PARA AGRUPAMENTO Entre as métricas genéricas, temos a homogeneidade e a completude. Tais métricas são levadas em consideração quando temos um rótulo de comparação preexistente, para comparar contra o rótulo calculado pelo algoritmo de agrupamento (muito utilizado em problemas de enriquecimento de conjuntos para tarefas de aprendizado supervisionado). Homogeneidade é a métrica que afere o quão homogêneo é cada grupo do agrupamento, calculando quantos membros do grupo são da classe que deveria ser e quantos são de outras, como podemos observar na Fórmula (1). Por exemplo, supondo que 80% do grupo 1 é vermelho e 20% é azul, se assumirmos que o grupo 1 deveria ser vermelho, então ele seria 80% homogêneo. Completude é a métrica que afere, do total de observações de uma dada classe i, quantas delas foram assimiladas no correto agrupamento em sua totalidade, como podemos observar na Fórmula (2). Podemos fazer um paralelo de homogeneidade e completude com precisão e recall (revocação), respectivamente. HOMOGENEIDADE = 1 - H ( C | K ) H ( C ) 1 Atenção! Para visualização completa da equação utilize a rolagem horizontal ( ) ( ) ( ) COMPLETUDE = 1 - H ( K | C ) H ( K ) 2 Atenção! Para visualização completa da equação utilize a rolagem horizontal Onde: H ( C | K ) = - ∑ | C | C = 1 ∑ | K | K = 1 NC , K N . LOG NC , K NK ENTROPIA CONDICIONAL Atenção! Para visualização completa da equação utilize a rolagem horizontal H ( C ) = - ∑ | C | C = 1 NC N . LOG NC N ENTROPIA DE CLASSE Atenção! Para visualização completa da equação utilize a rolagem horizontal COMENTÁRIO Intuitivamente, a entropia é uma medida da incerteza ou de aleatoriedade (impureza) de uma variável. Se a entropia H(C) é considerada como uma medida da incerteza sobre uma variável aleatória, então H(C|K) é uma medida do quanto K não diz sobre C. Isto é, a quantidade de incerteza restando sobre C depois que K é conhecido. ( ) ( ) ( ) Finalmente, temos a Medida V, ou em inglês, a V-Measure ou V-Score, dada pela Fórmula (3), onde β=1 normalmente; para valores de β < 1, se dá mais peso à homogeneidade e, para β > 1, se dá mais peso à completude. Essa é a média harmônica entre Homogeneidade e Completude, sendo uma excelente métrica para resumir bem o processo de agrupamento, assim como a Medida F (média harmônica entre precisão e recall ou revocação). A Medida V é simétrica, ou seja, V-Measure (rótulos preditos, rótulos reais) é igual à V-Measure (rótulos reais, rótulos preditos), o que não é verdade para Homogeneidade e Completude, pois estas são dadas pela relação inversa (Homogeneidade (a, b) = Completude(b, a)). Ν = ( 1 + Β ) × HOMOGENEIDADE × COMPLETUDE ( Β × HOMOGENEIDADE + COMPLETUDE ) 3 Atenção! Para visualização completa da equação utilize a rolagem horizontal As vantagens são: O intervalo de valores possíveis para tais scores é preso em 0 a 1. 0 seria o pior resultado. Enquanto 1 é o melhor resultado. ATENÇÃO Como tais métricas não pressupõem premissas com relação aos algoritmos a serem comparados, é possível comparar tipos diferentes de algoritmos. As desvantagens dessa abordagem genérica são: grandes quantidades de dados podem disfarçar casos de aleatoriedade, isto é, nem sempre um agrupamento aleatório resultaria em 0 de score; e, como dito, tais abordagens genéricas exigem que haja o Ground Truth ou Conjunto Verdade preestabelecido para ser comparado contra o resultado do agrupamento, o que, na prática, implica em a base ter um atributo de classe ou implica em trabalho manual por parte de anotadores dedicados. ( ) ANÁLISE DE AGRUPAMENTOS E SUAS MÉTRICAS No vídeo a seguir, abordamos a técnica de análise de agrupamentos para aprendizado não supervisionado e as métricas usadas nos problemas de agrupamento. VERIFICANDO O APRENDIZADO 1. DE ACORDO COM AS MÉTRICAS GENÉRICAS DE HOMOGENEIDADE E COMPLETUDE, E A MÉDIA HARMÔNICA DAS DUAS, É SABIDO QUE TEMOS UMA VARIÁVEL DE VIÉS BETA NA FÓRMULA, CUJA VALORAÇÃO É ASSOCIADA DIRETAMENTE COM O PESO DADO A UMA DAS COMPONENTES. SINALIZE A OPÇÃO CORRETA: A) β > 1 implica em dar mais importância à completude, β < 1 implica em dar mais importância à homogeneidade, β=1 é o valor padrão. B) β > 1 implica em dar mais importância à homogeneidade, β < 1 é o valor padrão, β=1 implica em dar mais importância à completude. C) β > 1 implica em dar mais importância ao Ground Truth, β < 1 implica em dar mais importância à Acurácia, β=1 é o valor padrão. D) β > 1 é o valor padrão, β < 1 implica em dar mais valor à completude, β=1 implica em dar mais valor à homogeneidade. E) β > 1 implica em dar mais importância à homogeneidade, β < 1 implica em dar mais importância à completude, β=1 é o valor padrão. 2. OS ALGORITMOS DE APRENDIZADO NÃO SUPERVISIONADO SÃO MUITO PODEROSOS E, DE CERTA FORMA, INDEPENDENTES POR NATUREZA. ENTRE ELES, ALGORITMOS DE AGRUPAMENTO SÃO MELHOR APLICÁVEIS EM QUE CENÁRIOS? A) Classificação de observações; Enriquecimento de Dados; Fusão de Dados. B) Predição de valores numéricos para observações; Fusão de Dados; Decomposição de Atributos. C) Agrupamentos particionados e/ou hierárquicos; Fusão de Dados; Enriquecimento de Dados. D) Redução de dimensionalidade; Fusão de dados; Enriquecimento de Dados. E) Classificação de Observações; Predição de Valores Numéricos para Observações; Agrupamentos particionados e/ou hierárquicos. GABARITO 1. De acordo com as métricas genéricas de homogeneidade e completude, e a média harmônica das duas, é sabido que temos uma variável de viés beta na fórmula, cuja valoração é associada diretamente com o peso dado a uma das componentes. Sinalize a opção correta: A alternativa "A " está correta. A variável de viés beta é livre e configurável principalmente na implementação. A opção correta é a letra A. As opções B e D estão erradas, pois o valor padrão seria 1. A opção C traz duas estatísticas que não se relacionam ao beta propriamente dito, em que Ground Truth é o conjunto verdade e “denominador” da Completude e Homogeneidade, enquanto acurácia é uma métrica de problemas de aprendizado supervisionado. E a opção E inverteu as relações. 2. Os algoritmos de aprendizado não supervisionado são muito poderosos e, de certa forma, independentes por natureza. Entre eles, algoritmos de agrupamento são melhor aplicáveis em que cenários? A alternativa "C " está correta. A opção A está incorreta devido ao fato de trazer classificação, uma tarefa particular e própria das técnicas de aprendizado supervisionado. A opção B está incorreta por trazer a regressão, tarefaparticular das técnicas de aprendizado supervisionado. A opção D traz a redução de dimensionalidade, uma técnica de pré-processamento de dados, que não é proporcionada por agrupamentos, mas por algoritmos próprios. A opção E mistura técnicas de aprendizado supervisionado e não supervisionado, que não é o caso. MÓDULO 2 Descrever algoritmos de K-Médias LIGANDO OS PONTOS Você já ouviu falar do algoritmo de K-Médias? Sabia que algumas versões desse algoritmo já estão disponíveis em pacotes computacionais para serem utilizadas? Para respondermos a essas perguntas, vamos analisar algumas situações práticas. Considerando que você seja um analista financeiro, como aplicaria um problema de agrupamento em sua área? Bem, a primeira parte da solução consiste na definição dos dados utilizados como base para a extração de características. Em seguida, vem a etapa de tratamento com a remoção de dados corrompidos e os ajustes para que todos os dados sejam numéricos. Depois, vem a normalização, para que os dados estejam no mesmo intervalo numérico, normalmente, entre 0 e 1. Feitas essas etapas, você poderá obter os grupos pelo método chamado de K-Means, ou alguma variação dele, sendo que o K do nome do algoritmo representa a quantidade de grupos que pretendemos obter. Talvez você esteja se perguntando: “quer dizer que sou eu que devo entrar com a quantidade de grupos que o algoritmo deve obter?”. A resposta para essa é pergunta é: exatamente isso! O K-Means vai construir os grupos de modo que, muito dificilmente, uma equipe de pessoas muito qualificadas conseguiria obter. Por outro lado, o conhecimento sobre a aplicação é fundamental. É necessário que você seja capaz de fornecer quantos grupos espera obter e, depois de o algoritmo fornecer o resultado, realizar a crítica. Nesse contexto, você identificou o perfil do investidor: arrojado, moderado e conservador. Em outras palavras, você determinou três grupos. Porém, o que você faria se, ao estudar os dados, identificasse a necessidade de trabalhar com outros perfis, como conservador com tendência para moderado e moderado com tendência para arrojado? Nessa situação, você teria de trabalhar com cinco grupos, ou seja, K=5, podendo utilizar o algoritmo de agrupamento que aplique o critério de proximidade, tal como o de distância euclidiana. A ideia é simples: o algoritmo encontra um valor para representar a proximidade entre os indivíduos que estão no mesmo grupo. Em seguida, ele compara se os indivíduos poderiam estar mais bem alocados em outros grupos usando a medida de distância. Atualmente, temos à nossa disposição de bibliotecas e ferramentas que facilitam a utilização do K- Means e de suas variações. Temos até algoritmos que analisam os dados e propõem a quantidade de grupos. As linguagens Python e R são bastante adequadas para essa finalidade, inclusive. É muito interessante ver esse tipo de algoritmo aplicado para resolver problemas reais e utilizado de forma natural nas reuniões com termos como “centróides”, “critério de aproximação” e “normalização”. A época que vivemos exige que possamos fornecer soluções eficientes para resolver problemas do mundo real. Para atingir esse objetivo, é preciso dedicarmo-nos tanto aos estudos como à aplicação desses conhecimentos na prática. Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? 1. COMO VOCÊ VIU, O ALGORITMO DE K-MEANS É APLICADO PARA OBTER AGRUPAMENTOS. SE, AO FINAL DE UMA EXECUÇÃO, O ANALISTA NÃO FICASSE SATISFEITO COM O RESULTADO, O QUE ELE PODERIA FAZER? A) Ele não deveria questionar o resultado, pois o algoritmo sempre fornece a melhor solução. B) Mudar a quantidade de grupos. C) Tentar executar o algoritmo com os dados originais. D) Mudar de linguagem de programação. E) Não utilizar o algoritmo de K-Means, pois ele tem apenas valor teórico. 2. COMO VISTO, O ALGORITMO DE K-MEANS UTILIZA UM CRITÉRIO DE PROXIMIDADE PARA REALIZAR OS AGRUPAMENTOS. O QUE É UM CRITÉRIO DE PROXIMIDADE? A) É uma fórmula matemática. B) É uma função disponível em algumas linguagens de programação. C) É a descrição de um comportamento aleatório. D) É o próprio algoritmo de K-Means. E) É uma forma de medir exatamente a semelhança entre os indivíduos com o grupo em que estão alocados e para os demais. GABARITO 1. Como você viu, o algoritmo de K-Means é aplicado para obter agrupamentos. Se, ao final de uma execução, o analista não ficasse satisfeito com o resultado, o que ele poderia fazer? A alternativa "B " está correta. O algoritmo de K-Means é um importante instrumento na tomada de decisão. Seu objetivo é agrupar elementos semelhantes de acordo com um critério de aproximação. No entanto, a crítica do especialista do negócio é fundamental e pode ser necessário mudar os parâmetros do algoritmo e executá-lo novamente. Um exemplo de mudança é na quantidade de grupos. 2. Como visto, o algoritmo de K-Means utiliza um critério de proximidade para realizar os agrupamentos. O que é um critério de proximidade? A alternativa "E " está correta. Um critério de proximidade tem como objetivo medir de forma exata a semelhança dos elementos com o grupo em que estão e com outros grupos. O critério mais comum é o de distância euclidiana, mas existem outros. A escolha de qual critério utilizar depende da natureza do problema que estamos tratando. 3. CONSIDERE O SEGUINTE CENÁRIO: VOCÊ É O RESPONSÁVEL POR ANALISAR OS RESULTADOS DOS GRUPOS PRODUZIDOS PELO ALGORITMO K-MEANS. NO PROCESSO DE ANÁLISE, VOCÊ PERCEBEU A NECESSIDADE DE AUMENTAR A IMPORTÂNCIA DE UM DOS TIPOS DE DADOS DE ENTRADA EM RELAÇÃO AOS DEMAIS. NESSE CENÁRIO, QUAL SERIA A ESTRATÉGIA QUE VOCÊ ADOTARIA? RESPOSTA Do cenário descrito, percebemos que todas as etapas anteriores de tratamento e transformação de dados já foram feitas, pois o analista já está estudando os resultados que o algoritmo produziu. Uma forma de aumentar a importância de um dos tipos de dados em relação aos demais é usar uma ponderação na função do critério de proximidade, ou seja, identificar a parte da função de critério de proximidade, que faz o cálculo do tipo de dado que queremos ajustar a importância, e multiplicar por um valor maior do que um. MÉTODO K-MÉDIAS (K-MEANS) Geralmente, os algoritmos de agrupamento não são muito complexos de se compreender. O processo tradicional é definido da seguinte forma: Primeiro, no espaço amostral, são definidos pontos aleatórios que agirão como centros de gravidade. Feito isso, na primeira rodada, o algoritmo percorre cada observação no espaço amostral calculando a distância da observação para o centro de massa mais próximo. Se houver mais de um centro de massa próximo, o centro mais próximo da observação absorve no agrupamento a dada observação. Feito isso, é recalculado o centro de massa, e assim estabelecido um novo centro para aquele cluster. javascript:void(0) É feito esse processo iterativamente até que todo o espaço amostral tenha sido devidamente agrupado, como está ilustrado na imagem a seguir. Imagem: Fernando Cardoso Durier da Silva Algoritmo Genérico de Agrupamento. A especificidade do algoritmo de K-Médias (K-Means) em relação aos demais algoritmos de agrupamento (por exemplo, DBSCAN) é que o número de centros de massa inicializados é definido previamente pelo cientista de dados, daí o nome K-Médias. Os centros de massa nesse algoritmo têm seu nome dado por k-Medoide, uma vez que ele é o ponto mediano segundo a distância euclidiana por padrão (configurável, podendo depender de outras métricas de similaridade). Isso dá ao cientista de dados maior controle sobre o resultado gerado pelo algoritmo, fazendo com que todas as observações sejam agrupadas em um dos clusters regidos pelos K- Medoides. Os demais algoritmos, como o DBSCAN, que não definem um número K específico de centros de massa, podem classificar observações que não se encaixam em nenhum cluster como ruídos, uma vez que eles mesmos escolhem quantidades de centros demassa. Enquanto K-Médias é o algoritmo que depende do número predefinido de K-Medoides inicialmente, o DBSCAN é a versão de algoritmo de agrupamento no qual não é necessário ou obrigatório passar nenhum parâmetro predefinido, mas apenas instanciá-lo e deixá-lo percorrer o espaço amostral “livremente”, agrupando as observações segundo critérios de similaridade. A segunda diferença com relação ao K-Means e aos seus K-Medoides é que o algoritmo de DBSCAN, por operar segundo critérios de similaridade, pode deixar de agrupar certas observações que não se encaixem em nenhum agrupamento aparente como ruído. No DBSCAN, é possível ajustarmos o algoritmo através dos critérios de quantidade mínima para se constituir um agrupamento, e de distância, normalmente euclidiana, máxima entre elementos para serem considerados do mesmo cluster. MATEMÁTICA DO K-MÉDIAS (K-MEANS) Matematicamente, o agrupamento c do grupo de pontos i e μj é definido pela fórmula a seguir, que, como podemos ver, é a distância euclidiana mínima entre dois pontos: C ( I ) = ARGJMIN X ( I ) - ΜJ 2 Atenção! Para visualização completa da equação utilize a rolagem horizontal Matematicamente, os K-Medoides do grupo j são definidos pela seguinte fórmula: ΜJ = ∑ M I = 11 C ( I ) = J X ( I ) ∑ M I = 11 C ( I ) = J Atenção! Para visualização completa da equação utilize a rolagem horizontal Para fins operacionais, o espaço amostral do conjunto de dados é reduzido de N dimensões, com N variando com a quantidade de atributos do conjunto através de transformações lineares ou chamadas aos próprios métodos tradicionais de redução de dimensionalidade, como o PCA (Principal Component Analysis), o TSNE (T-Distributed Stochastic Neighbour Embedding) ou o LLE (Local Linear Embedding). E, para fins de monitoramento, temos a função de distorção dada pela fórmula a seguir, com a qual verificamos se o algoritmo converge. J ( C , Μ ) = ∑ M I = 1 X ( I ) - ΜC ( I ) 2 Atenção! Para visualização completa da equação utilize a rolagem horizontal O algoritmo de K-Médias pode ser expresso pelo algoritmo em pseudocódigo a seguir: | | | | { } { } | | | | a. Inicialize K centros de massa iniciais de forma aleatória no espaço amostral; b. Forme k grupos associando cada observação ao k-medoide mais próximo; c. Recalcule a posição do k-medoide com base no centro de gravidade do grupamento atualizado; d. Repita b e c até que os k-medoides parem de se mexer, i.e., convirjam. COMENTÁRIO O principal problema do K-Means é ter um bom começo de rodada. Como a sua inicialização é aleatória, isso pode implicar em uma inicialização perfeita logo de cara, tornando a complexidade ótima, ou por falta de sorte ter um começo ruim e inicializar os K-Medoides nas bordas dos seus grupos, fazendo com que mais recálculos ocorram. Para o algoritmo do K-Médias, o critério de otimização consiste em minimizar a distância das observações intracluster, e maximizar a distância intercluster. Entre os critérios de otimização, podemos utilizar a Soma dos Erros Quadrados ou o Critério de Dispersão, que observamos anteriormente. ATENÇÃO A Soma dos Erros Quadrados é relativamente mais simples, mas é muito mais suscetível a outliers, além de não funcionar bem para grupos muito dispersos, podendo agregar, ao invés de dividi-los. DEMONSTRAÇÃO DO K-MÉDIAS EM PYTHON COM SKLEARN Para trabalharmos o algoritmo K-Means de forma prática, vamos precisar do Python na versão 3.8 ou superior, com as bibliotecas Pandas, Plotly, Numpy e Sklearn. No ambiente da linguagem, é necessário importar as bibliotecas. ``` import pandas as pd import plotly.express as px import numpy as np from sklearn.cluster import KMeans ``` Para fins de aprendizado, vamos criar um conjunto de dados sintético, utilizando o Numpy e seus métodos de geração por função aleatória de distribuição de probabilidade. ``` X = np.random.randint(100, size=(100,2)) ``` Ao utilizarmos o np.random.randint(100, size=(100,2)), estamos gerando um conjunto de dimensões com 100 observações de dimensão 2 (x,y), sendo que o x e o y podem ser populados randomicamente por valores variando de 0 a 100, constituindo assim nosso espaço amostral. Agora vamos inicializar o K-Means e aplicá-lo ao nosso conjunto. Faremos isso definindo k = 3, e estado randômico = 0, para que os resultados sejam reproduzíveis. ``` kmeans = KMeans(n_clusters=3, random_state=0).fit(X) ``` Feito isso, cada observação foi devidamente agrupada e rotulada a partir do seu K-Medoide respectivo. Agora, vamos trazer essa nova informação ao conjunto de dados. Faremos isso através da biblioteca Pandas, assim simulando uma fusão de dados entre o conjunto de dados original e o novo dado trazido pela rotulação do K-Médias (K-Means). ``` xdf = pd.DataFrame(X) xdf[‘class’] = kmeans.labels_ xdf[‘class’] = xdf['class'].astype('string') ``` Com esse bloco de código, nós transformamos nosso conjunto de dados em um DataFrame, depois aproveitamos o fato de que o K-Means armazena os rótulos na mesma ordem que as observações foram apresentadas e, então, é só passar para a coluna nova chamada class. Por formalidade e coerência, adequamos o tipo dessa coluna de inteiro para categórico. E agora podemos interpretar através de visualização no Plotly o resultado do nosso agrupamento. ``` px.scatter(xdf,x=0,y=1,color='class', title='K-Means') ``` Esse comando gera o gráfico a seguir: Gráfico: Dispersão da Interpretação do K-Means. Elaborado por Fernando Cardoso Durier da Silva no ambiente da linguagem Python. Podemos ver que, por mais que tenhamos construído um conjunto de dados “aleatório”, o K-Means foi capaz de encontrar padrões escondidos. Podemos imaginar essa ideia para outros tipos de problemas: por exemplo, sobre um conjunto de clientes de um mercado, podemos rodar o K-Means e descobrir extratos de compras de clientes, associar produtos mais adequados a determinados nichos, o que combinaria o poder do K-Means com um algoritmo de Regras de Associação, como o Apriori. Assim como demais modelos de aprendizado de máquina, podemos utilizar o modelo resultante do nosso K-Means para rotular novas observações entrantes nesse espaço amostral da seguinte maneira: ``` kmeans.predict([[0, 0], [12, 3]]) ``` Isso terá como resultado para os pontos (0,0) e (12,3) o rótulo 2, por exemplo, nessa nossa demonstração. Outra coisa interessante que podemos obter de antemão é o conjunto de K-Medoides do nosso modelo, os pontos de referência para novas classificações. Para isso, utilizaremos o seguinte comando: ``` kmeans.cluster_centers_ ``` Esse comando nos retornará o conjunto de K-Medoides, que são 3 como definimos inicialmente: ``` array([[45.79411765, 76.79411765], [75.13513514, 27.54054054], [23.31034483, 32.72413793]]) ``` Para fins de comparação, utilizando o mesmo conjunto de dados, o gráfico a seguir mostra o agrupamento gerado pelo DBSCAN, o algoritmo agrupador que não requer um número predefinido de k centroides. Na legenda de cores podemos ver que ele achou cinco rótulos, e um sexto rótulo chamado NoIsE, do inglês ruído. O ruído nada mais é do que pontos que não se enquadram nos critérios-padrão básicos de composição de um grupo. Ou seja, o DBSCAN achou mais padrões ocultos, mas, em contrapartida, achou muito ruído (a configuração utilizada foi de distância 8 e mínimo número de amostras para constituir o cluster de 5). Gráfico: Agrupamento gerado pelo algoritmo DBSCAN. Elaborado por Fernando Cardoso Durier da Silva no ambiente da linguagem Python. DEMONSTRAÇÃO DO MÉTODO DE K-MEANS NO PYTHON Para encerrar este módulo, apresentamos, no vídeo a seguir, o método de K-Means para aprendizado não supervisionado. VERIFICANDO O APRENDIZADO 1. O K-MEANS É UM ALGORITMO CLÁSSICO DE AGRUPAMENTO CUJO DIFERENCIAL É A) inicialização de um conjunto inicial de quantidade predefinida. B) autonomia total na execução do algoritmo. C) agrupamento das observações mais relevantes apenas. D) reduçãoda dimensionalidade. E) particionamento hierárquico. 2. O K-MEANS É UM ALGORITMO MUITO PODEROSO, E AMPLAMENTE USADO. MAS QUAIS SÃO SUAS DESVANTAGENS? A) É difícil de explicar; requer muitos exemplos para funcionar bem. B) É adequado apenas para dados textuais; é difícil de explicar. C) É difícil de explicar; complexidade proporcional ao tamanho do conjunto de dados. D) Complexidade proporcional ao tamanho do conjunto de dados; dependente da inicialização. E) Requer muitos exemplos para funcionar bem; dependente da inicialização. GABARITO 1. O K-Means é um algoritmo clássico de agrupamento cujo diferencial é A alternativa "A " está correta. A opção B é incorreta, pois é característica do DBSCAN, o K-Means opera justamente ao contrário, ele não é totalmente independente, e sim depende do fator K passado. A opção C não é verdade, pois o K- Means agrupará todas as observações, ele só para quando tudo estiver agrupado e os K-Medoides convergirem. A opção D não é verdadeira, pois K-Means não serve para reduzir dimensionalidade, não é o objetivo dele. A opção E é característica dos agrupamentos hierárquicos e dos dendrogramas. 2. O K-Means é um algoritmo muito poderoso, e amplamente usado. Mas quais são suas desvantagens? A alternativa "D " está correta. A opção A é incorreta, pois não só é um dos algoritmos mais fáceis de serem explicáveis, mas também não faz premissas sobre o conjunto de dados, ou seja, não precisa ser somente muito grande, ou somente muito pequena. A opção B não é verdade, pois não tem ressalvas contra dados apenas numéricos, nem outro tipo de premissa com relação ao conjunto em si. A opção C está errada pelas mesmas razões de A, ainda que realmente a complexidade de seu algoritmo, assim como dos demais de agrupamento, seja proporcional ao tamanho do conjunto. A opção E é incorreta, pois faz premissa com relação ao conjunto de dados, em contrapartida o outro aspecto está certo, o K-Means é dependente da inicialização, pois pode ser ótimo caindo no ponto ideal para ser centroide, ou não e cair na borda. MÓDULO 3 Descrever o método de agrupamento hierárquico LIGANDO OS PONTOS Você conhece agrupamento hierárquico? Sabe em que tipo de situações ele pode ser muito útil? Para entendermos sobre os conceitos na prática, vamos analisar uma situação. Os problemas de agrupamentos mais comuns na prática são aqueles em que um indivíduo é associado a apenas um conjunto (cluster). Nesse tipo de problema, os indivíduos devem estar o mais próximo possível dos que estão no mesmo grupo e o mais distante dos que estão em outros grupos. Mas existe outra categoria de problemas de agrupamentos que trabalha de um modo diferente: agrupamento hierárquico. O nome desse tipo de problema é bem didático: os indivíduos são agrupados em níveis hierárquicos. Desse modo, precisamos analisar diferentes níveis de agrupamentos para estudar a proximidade dos elementos. A forma mais comum, inclusive, de representar esse tipo de agrupamento é por meio de uma visualização chamada de dendrograma. Nesse contexto, você é um consultor de RH responsável pela classificação dos analistas financeiros de uma corretora de um grande banco comercial. Os referidos analistas possuem seus respectivos desempenhos financeiros, tempo de contratação, quantidade de horas trabalhadas e percentual de metas atingidas. O resultado do seu trabalho será utilizado pelo RH, que poderá implementar estratégias mais eficientes para treinamento e/ou coaching a fim de alavancar as carteiras da referida instituição financeira. Quais as etapas você deverá estabelecer para a resolução do problema utilizando agrupamento hierárquico? Inicialmente, precisará focar na organização dos dados e, depois, realizar os devidos tratamentos e transformações para garantir que estejam consistentes. Com os dados consistentes, poderá aplicar o método de agrupamento hierárquico, pois existem níveis que precisam ser considerados para associar os analistas adequadamente. Como resultado, você terá identificado semelhanças entre os indivíduos dentro de mesmos grupos, bem como os tipos de estratégia de treinamento e/ou coaching mais adequados para alavancar as referidas carteiras. Além do mais, é empolgante saber que você pode contar com diversas bibliotecas que possuem algoritmos prontos para serem utilizados, poupando, assim, da necessidade de entrar em detalhes de implementação, focando no objetivo do negócio. Além de linguagens de programação poderosas como o Python e o R, temos ferramentas como o Power BI que o auxiliará na aplicação deste tipo de algoritmo. Novamente, você precisa ter a clareza de que a utilização destas técnicas e de ferramentas apenas valorizam o tempo e a experiência de profissionais que podem se concentrar na análise dos resultados e de como aplicá-los para melhorar as suas estratégias nos negócios. Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos ligar esses pontos? 1. COMO VOCÊ LEU NO CASE, O ALGORITMO DE AGRUPAMENTOS HIERÁRQUICO É DIFERENTE DO MÉTODO DE K-MEANS. FAZ SENTIDO UTILIZÁ- LOS PARA RESOLVER OS MESMOS PROBLEMAS? A) Sim, pois ambos são algoritmos de agrupamentos. B) Sim, pois ambos utilizam os mesmos critérios de proximidade. C) Sim, pois a diferença entre os algoritmos está apenas na visualização dos resultados. D) Não, pois os algoritmos não têm os mesmos objetivos gerais. E) Não, pois os algoritmos utilizam diferentes estratégias para formação dos grupos. 2. COMO VOCÊ LEU NO CASE, OS AGRUPAMENTOS HIERÁRQUICOS PODEM UTILIZAR UMA REPRESENTAÇÃO CHAMADA DE DENDROGRAMA PARA VISUALIZAR OS GRUPOS NOS QUAIS OS INDIVÍDUOS FORAM ALOCADOS. PELA DESCRIÇÃO DADA NO TEXTO, SELECIONE A OPÇÃO CORRETA SOBRE O DENDROGRAMA. A) É semelhante a uma tabela. B) É semelhante a uma estrutura de árvore. C) Utiliza uma representação de conjuntos sem intersecção para destacar os grupos. D) Apresenta cada indivíduo com os respectivos grupos a que pertencem. E) Organiza os dados em uma lista de modo a facilitar a visualização dos grupos. GABARITO 1. Como você leu no case, o algoritmo de agrupamentos hierárquico é diferente do método de K- Means. Faz sentido utilizá-los para resolver os mesmos problemas? A alternativa "E " está correta. Os algoritmos de K-Means e de agrupamentos hierárquicos possuem o mesmo objetivo geral: organizar os dados em grupos. No entanto, eles se diferenciam sobre as estratégias para formação desses grupos, pois, no caso do K-Means, os dados são agrupados em conjuntos que não possuem intersecção. Já no caso do método hierárquico, os dados são agrupados em níveis. Portanto, não podem ser utilizados para resolver os mesmos problemas. 2. Como você leu no case, os agrupamentos hierárquicos podem utilizar uma representação chamada de dendrograma para visualizar os grupos nos quais os indivíduos foram alocados. Pela descrição dada no texto, selecione a opção correta sobre o dendrograma. A alternativa "B " está correta. A representação de dendrograma é semelhante a uma árvore. Assim, é fácil visualizar os diferentes níveis em que os elementos estão alocados. 3. CONSIDERE O SEGUINTE CENÁRIO: VOCÊ É RESPONSÁVEL PELA CLASSIFICAÇÃO DOS ALUNOS DE UMA ESCOLA DE ACORDO COM DESEMPENHO ACADÊMICO, ANO ESCOLAR, IDADE E PERCENTUAL DE PRESENÇA NAS AULAS. O RESULTADO DO SEU TRABALHO SERÁ UTILIZADO COMO INSUMO PARA QUE OS PEDAGOGOS E RESPONSÁVEIS DA ESCOLA POSSAM DESENVOLVER ESTRATÉGIAS MAIS EFICIENTES PARA AUXILIAR OS ALUNOS NO PROCESSO DE APRENDIZAGEM. COM BASE EM SUA EXPERIÊNCIA, COMO VOCÊ CUMPRIRIA ESSA MISSÃO? RESPOSTA A primeira etapa desse projeto deve ser a organização dos dados. Em seguida, é preciso realizar os devidos tratamentos e transformações para garantir que estejam consistentes. A próxima etapa é da aplicação do método para análise. É o caso típico de utilização de agrupamento hierárquico, pois existem níveis que javascript:void(0) precisam ser considerados para associar os alunos adequadamente. O resultado desse trabalho vaiauxiliar os tomadores de decisão a identificar semelhanças entre os indivíduos dentro de mesmos grupos e que tipo de estratégia pedagógica é mais adequada para auxiliar no processo de aprendizagem. MÉTODO DE AGRUPAMENTO HIERÁRQUICO Os algoritmos de agrupamento podem ser divididos em: partitivos ou hierárquicos. Os partitivos dividem o conjunto em K clusters e produzem agrupamentos simples, como vimos no K- Médias tentando criar agrupamentos os mais compactos e separados possível. ATENÇÃO Os agrupamentos hierárquicos decompõem o conjunto de dados hierarquicamente, resultando em um dendrograma, uma árvore que divide o conjunto de dados iterativamente em subconjuntos, até a folha que seria um item individual. Nessa árvore, cada nó interno corresponde a um agrupamento, e à medida que subimos o nível temos uma hierarquia, sendo a raiz a integridade do conjunto. A motivação por trás do agrupamento hierárquico é a possibilidade de haver relações dentro dos próprios agrupamentos ou sobreposição. Ou seja, existe algo similar à autocorrelação dentro dos grupos, em que uma informação pode ser muito útil para resolver problemas de delegação de tarefas, hierarquização etc. A vantagem é que o agrupamento hierárquico não só revela a relação entre grupos e possíveis sobreposições (overlaps) dimensionais, mas também o artefato produzido como resultado do algoritmo, o dendrograma, é altamente explicável uma vez que se trata de uma árvore de decisão para agrupamento. A desvantagem do agrupamento hierárquico é o fato de ele ter sua complexidade computacional proporcional ao tamanho do conjunto de dados. Além disso, para fins de hierarquia, ou teremos um agrupamento completo que força um dendrograma contra o conjunto de dados, ou teremos um dendrograma que pode ter profundidade variável de acordo com a heurística utilizada. Essa profundidade dependeria da heurística ou da limitação de recursos computacionais, uma vez que hierarquias menos profundas consumiriam menos recurso computacional. Uma desvantagem que compartilha com os demais algoritmos que dependem de percorrer o espaço amostral é o fator de inicialização, que pode ser ótimo ou pode ser ruim. COMENTÁRIO Um bom exemplo para o problema de inicialização é um aluno autodidata. Ele tentará angariar o maior número possível de materiais sobre determinado assunto, de forma semialeatória, pois um assunto invariavelmente leva a outro específico relacionado. Porém, por mais que ele tente organizar o material e extrair um conhecimento dali, existe uma sequência adequada mínima para o bom entendimento, ou seja, para as coisas se conectarem e estabelecerem um fluxo de raciocínio. Se, por acaso, ele fortuitamente explorar os assuntos na ordem adequada, então, a complexidade de construção do novo conhecimento será normal ou ótima, mas se ele começar pelo meio ou fim, será muito mais dispendioso entender e construir o conhecimento, já que haverá várias interações repetidas até entender o assunto em sua totalidade. Imagem: Shutterstock.com TIPOS DE AGRUPAMENTO HIERÁRQUICO Os algoritmos hierárquicos podem seguir uma abordagem aglomerativa (bottom-up), que começa considerando os itens individuais como entrada, e vai agrupando cada item segundo um critério de distância, até que se chegue à raiz. Já outros algoritmos seguem a abordagem divisiva (top-down), em que se começa da raiz e desce às folhas, considerando inicialmente todos os elementos do conjunto de entrada agrupados em um grande grupo único (raiz), e realizando sucessivas divisões em agrupamentos até que se obtenha N agrupamentos, ou se chegue a uma condição de parada definida. A abordagem aglomerativa é intuitivamente a mais prática, dada pelo seguinte algoritmo, visualizável na imagem a seguir: Computar a matriz de proximidade dos pontos do espaço amostral do conjunto de dados. Atribuir cada observação como um grupo por si só. Repetir: Juntar os dois grupos mais próximos; Atualizar a matriz de proximidade. Parar quando houver apenas um grupo. Imagem: Fernando Cardoso Durier da Silva Agrupamento Hierárquico Aglomerativo. A abordagem divisiva, top-down, é justamente o contrário. Começa-se com um grupo maior, que agrega todas as observações e depois prossegue com N rodadas de subdivisão desse grupo maior em subgrupos menores, baseados em critérios de similaridade ou dissimilaridade predefinidos. E a condição de parada nesse caso pode variar, desde uma altura tolerável de particionamento até a individualidade de cada observação. A diferença se encontra no critério de divisão do cluster, que dependerá sempre de alguma heurística, uma vez que existem 2n formas de dividir o cluster. Nas heurísticas, existem possibilidades de dividir por similaridade, por variância, por Min, por Max, entre outras. COMENTÁRIO A vantagem dos agrupamentos hierárquicos é que permitem uma ótica diferente da tradicional de simples agrupamento, pois, com esse tipo de técnica, nós podemos entender melhor não só como as observações se agrupam em relação às outras, mas, também, como é a dinâmica dentro de cada grupo, qual a possível hierarquia. Porém, isso acarreta análises cada vez mais subjetivas por parte do cientista de dados em questão. DEMONSTRAÇÃO DO AGRUPAMENTO HIERÁRQUICO EM PYTHON COM SKLEARN Para implementar o agrupamento hierárquico em Python, vamos utilizar as bibliotecas Pandas, Numpy, Plotly e Sklearn. Para tal demonstração e para fins de estudo, produziremos um conjunto de dados sintético de pontos no espaço do R2. Vamos inicializar o projeto, importando as bibliotecas necessárias: ``` import pandas as pd import numpy as np import plotly.express as px ``` Feito isso, vamos sintetizar nosso conjunto de dados a partir do Numpy e sua geração de amostras aleatórias baseadas em funções de distribuição de probabilidade. Para isso, vamos fazer um exemplo simples, com 6 observações apenas, para que possamos obter uma visualização facilitada. Para isso, precisaremos do seguinte bloco de código: ``` X = np.random.randint(10, size=(6,2)) ``` Para fins de praticidade e por ser mais explicável, vamos fazer um agrupamento hierárquico aglomerativo. Para que o algoritmo compute todas as observações, vamos setar o distance_threshold = 0, e o n_clusters=None. Dessa forma: ``` clustering = AgglomerativeClustering( distance_threshold=0, n_clusters=None ).fit(X) ``` Treinado nosso modelo, vamos interpretá-lo agora. Primeiro, vamos enriquecer nosso conjunto de dados original. Incialmente, converteremos o conjunto original em DataFrame. Depois, fundiremos os rótulos do cluster hierárquico no nosso conjunto de dados original, converteremos esse rótulo novo de numérico para categórico. Em seguida, vamos criar uma coluna index em nosso conjunto de dados, para podermos plotar em um gráfico posterior, convertendo-o também para categórico. Tudo isso com este bloco de código: ``` xdf = pd.DataFrame(X) xdf['class'] = clustering.labels_ xdf['class'] = xdf['class'].astype('string') xdf = xdf.reset_index() xdf['index'] = xdf['index'].astype('string') ``` Agora, vamos analisar como nossos dados estão no espaço amostral. Para isso, usaremos um gráfico de dispersão 3D, em que: no eixo X, teremos a primeira coordenada das observações; no eixo Y, a segunda coordenada; e, para fins de contexto, no eixo Z, o index. ``` px.scatter_3d(xdf,x=0,y=1,z='index',color='index') ``` Gráfico: Dispersão do conjunto de dados Sintético. Elaborado por Fernando Cardoso Durier da Silva no ambiente da linguagem Python. Como podemos ver, várias abordagens poderiam ser tomadas para agrupar esses dados. Vamos ver como o modelo fez para agrupar essas observações através do dendrograma, que seria como se fosse o log de operações dele. Para isso, vamos usar o Plotly, da seguinte forma: ``` import plotly.figure_factory as ff fig = ff.create_dendrogram(xdf) fig.update_layout(width=800, height=500) fig.show() ``` Resultando no seguinte dendrogramada imagem a seguir: Gráfico: Dendrograma. Elaborado por Fernando Cardoso Durier da Silva no ambiente na linguagem Python De acordo com o dendrograma, podemos compreender que o agrupamento hierárquico começou pelo index 0, que olhou nas suas vizinhanças e agregou com o mais próximo, no caso do index 2, depois partiu para o index 1, e agregou ao cluster 0-2. Logo em seguida, partiu para o index 3, fazendo o cluster 0-1-2-3. Ao ir para o index 4, ele julgou que a observação mais próxima seria o index 5, formando o agrupamento 4-5. Na rodada seguinte, ele comparou os clusters finais e os aglutinou em um cluster final inteiriço. Por default, a implementação Agglomerative Hierarchical Cluster do Scikit-Learn usa como critério de ligação (linkage), o Ward. O critério de Ward, também conhecido como Método de Mínima Variância de Ward, preza pela aglutinação de grupos, minimizando a variância entre eles. Existem outros critérios de ligação que valem a pena ser explorados em simulações em seus computadores, como, por exemplo, a average, que prioriza a menor distância média entre todas as observações dos clusters em questão (ou seja, prefere o agrupamento mais próximo sempre). De um modo geral, o agrupamento hierárquico tem a função de estabelecer relações entre os grupos, por exemplo, de acordo com nosso experimento, vemos que 1 está contido no grupamento de 0-2, mas ainda está muito desconexo de 4-5. COMENTÁRIO Poderíamos pensar em 0-2 como dois times de desenvolvimento do mesmo departamento e 1 como um departamento de mesmo nível, sendo 3 um departamento maior como o Chief Information Officer (CIO), enquanto 4-5 representaria executivos de outros dois departamentos estratégicos. O agrupamento hierárquico contribui para o conjunto de dados mais espacialmente do que “numericamente”, uma vez que essas relações são difíceis mesmo de representar no conjunto de dados, senão por chaves estrangeiras, ou links. DEMONSTRAÇÃO DO MÉTODO DE AGRUPAMENTO HIERÁRQUICO NO PYTHON Para concluir o estudo deste módulo, apresentamos o método de agrupamento hierárquico no vídeo a seguir. VERIFICANDO O APRENDIZADO 1. AGRUPAMENTO HIERÁRQUICO TEM COMO OBJETIVO A) agrupar de forma top down ou bottom up observações do espaço, a fim de mostrar as relações implícitas entre os agrupamentos. B) classificar observações em conjuntos de classes bem definidas e altamente relacionadas. C) prever um valor numérico para cada observação no espaço amostral, a fim de prever lucro para o negócio. D) descobrir redes sociais de trabalho. E) minerar processos de negócio implícitos em logs de processos da empresa. 2. O QUE É AGRUPAMENTO HIERÁRQUICO DIVISIVO, OU TOP DOWN? A) É algoritmo baseado em vetores de suporte, que classifica observações do espaço amostral baseado no vetor central “imaginário” gerado pelos de suporte. B) É a árvore de decisão que separa as observações do espaço amostral, segundo entropia da informação. C) É o algoritmo de agrupamento baseado em centroides predefinidos, que agrupa todo o espaço amostral. D) É o algoritmo de agrupamento hierárquico que monta seu dendrograma da raiz para as folhas, dividindo um cluster inicial gigante em subclusters, até chegar a clusters individuais. E) É o algoritmo de agrupamento hierárquico que monta seu dendrograma das folhas para a raiz, aglutinando clusters individuais em subclusters, até gerar um cluster inteiriço ao conjunto de dados. GABARITO 1. Agrupamento hierárquico tem como objetivo A alternativa "A " está correta. A opção B é incorreta, pois é relativa aos algoritmos de classificação. A opção C está incorreta, pois é relativa aos algoritmos de regressão. A opção D não é obrigação nem objetivo dos algoritmos de agrupamento hierárquico, mas pode ser um fator motivador. A opção E se encaixaria melhor no contexto de mineração de regras de associação. 2. O que é agrupamento hierárquico divisivo, ou top down? A alternativa "D " está correta. A opção A é o SVM. A opção B é a Árvore de Decisão. A opção C é o K-Means. A opção E é a abordagem bottom up do agrupamento hierárquico. CONCLUSÃO CONSIDERAÇÕES FINAIS Como pudemos ver, existem alternativas de aprendizado de máquina que, de certa forma, são mais independentes e podem ser usadas em combinação com técnicas de aprendizado clássicas supervisionadas. Estudamos que, por mais que o aprendizado de máquina não supervisionado passe a impressão de livre, heurístico ou até mesmo instintivo, na realidade, pode ser mensurado não só por suas métricas próprias, como o coeficiente de silhueta, mas também através de métricas genéricas bastante semelhantes às do aprendizado supervisionado, como completude, homogeneidade, e Medida V (a média harmônica entre homogeneidade e completude), que poderiam ser entendidas como o recall, a acurácia, e a Medida F, respectivamente. Pudemos entender as diferenças entre os principais tipos de agrupamento: o particionado e o hierárquico. Vimos o funcionamento do K-Médias, uma excelente ferramenta no acervo de qualquer bom cientista de dados, um algoritmo prático, explicável e altamente aplicável. Vimos também o funcionamento do agrupamento hierárquico aglomerativo ou bottom-up, e discutimos sobre o divisivo ou top-down. É importante analisar o problema de agrupamento a ser resolvido e qual parte dele é mais relevante para o negócio, pois isso orientará a escolha do algoritmo, o melhor jeito de fundir seus dados com o resultado do agrupamento e, finalmente, a métrica de acompanhamento. AVALIAÇÃO DO TEMA: REFERÊNCIAS AMARAL, F. Introdução à Ciência de Dados: mineração de dados e big data. Rio de Janeiro: Alta Books, 2016. AMIDI, A.; AMIDI, S. Dicas de Aprendizado Não Supervisionado. Consultado na internet em: 1 jun. 2020. ESCOVEDO, T.; KOSHIYAMA, A. Introdução a Data Science — Algoritmos de Machine Learning e métodos de análise. São Paulo: Casa do Código, 2020. IZBICKI, R.; SANTOS, T. M. Aprendizado de máquina: uma abordagem estatística. São Carlos, SP: Rafael Izbicki, 2020 (ebook). MITCHELL, T. Machine Learning. Nova York: McGraw Hill, 1997. EXPLORE+ Pesquise outros algoritmos de agrupamento como o DBSCAN e compare sua performance não só de resultados, mas também de custo computacional com relação ao K-Means. Experimente utilizar o K-Means em uma pipeline de KDD. E faça um teste de hipótese entre os modelos que treinarem com o conjunto de dados tradicional e o conjunto de dados enriquecidos pelo K-Means. Veja se há melhora ou piora. (Dica: gere as amostras com validação cruzada). Tente implementar a abordagem divisiva ou top down do agrupamento hierárquico. (Dica: em caso de tentar implementar até o algoritmo, olhe o critério de divisão de nó da árvore de decisão, é parecido). Tente utilizar a abordagem aglomerativa ou bottom up em um cenário mais prático, como, por exemplo, mineração de logs de processos, ou de comunicações entre funcionários de uma empresa. Dentro da área de aprendizado não supervisionado, pesquise sobre outros algoritmos como os de regra de associação; entre eles, pesquise sobre o mais conhecido algoritmo da área, o Apriori. CONTEUDISTA Fernando Cardoso Durier da Silva
Compartilhar