Code Monkey home page Code Monkey logo

tsne-optim's Introduction

tsne-optim

Otimizando visualizações de dados através da configuração automática do t-SNE

Neste repositório, apresento meu trabalho de conclusão de curso na Unicamp: "Ajuste automático de hiperparâmetros do algoritmo t-SNE para visualização de dados de elevada dimensão", sob a orientação do Prof. Dr. Fernando José Von Zuben.

Link com os dados, visualizações e histórico dos experimentos.

Introdução e Metodologia

O ajuste dos hiperparâmetros do t-SNE não é trivial. Apesar existirem argumentos suportando a tese de que o algoritmo é insensível aos seus hiperparâmetros, outras explorações apontam que o buraco é mais embaixo, mostrando que os hiperparâmetros alteram significativamente o resultado do algoritmo..

Visando suportar o cientista de dados nesta tarefa, desenvolvemos, neste trabalho, uma metodologia de configuração automática para o t-SNE. A lógica é bastante simples e bem representada na figura abaixo:

A metodologia mostrada consiste de três partes:

1 - Pipeline. Construímos uma classe que armazena os dados em análise e implementa um método que recebe um conjunto de hiperparâmetros e executa o t-SNE (após PCA) com esta configuração. Além disso, implementamos funções para extrair clusters a partir dos dados em baixa e alta dimensionalidade e outras funções para computar as métricas a seguir.

2 - Métricas. No final do Pipeline utilizamos métricas para medir aspectos que queremos otimizar na execução do t-SNE. Foram deifinidas três métricas:

  • Rank-order correlation: medimos a preservação de estrutura global comparando o ordenamento das distâncias entre os clusters em alta e em baixa dimensionalidade. Suponha grupos (A), (B) e (C), e que o grupo mais próximo de (A) no espaço original é (B), seguido de (C). Se em baixa dimensionalidade tivermos esse mesmo ordenamento, consideramos que o algoritmo preserva estutura global (rank-order correlation igual a 1).
  • Ajusted Mutual Information: medimos consistência de agrupamento através de cálculo da informação mútua ajustada (AMI) entre os agrupamentos obtidos com HDBSCAN em baixa dimensionalidade e em alta dimensionalidade. Caso os agrupamentos concordem, podemos dizer que o algoritmo preserva a estrutura de agrupamento nos dados (AMI igual a 1).
  • Divergência KL: O t-SNE é conhecido por terminar em mínimos locais. Portanto, o valor final da divergência KL pode ser utilizado como uma métrica a ser otimizada, evitando essa situação. Contudo, é preciso cuidado: a perplexidade deve estar fixa, e é desejável também fixar os hiperparâmetros do PCA (apesar de resultados interessantes terem sido obtidos de outra maneira).

3 - Otimização. A combinação do Pipeline com uma métrica de avaliação define uma função-objetivo, que podemos otimizar. São realizados experimentos com três algoritmos de otimização de hiperparâmetros populares: busca aleatória e TPE, com o módulo hyperopt e Processos Gaussianos (módulo BayesianOptimization).

O processo é conduzido da seguinte forma:

  1. Definem-se espaços de busca através de distribuições de probabilidade para os métodos de busca aleatória e TPE. Para Processos Gaussianos, basta definir o espaço de busca através de fronteiras (limites superiores e inferiores) para cada um dos hiperparâmetros.
  2. É instanciada uma tarefa de otimização escolhendo um conjunto de dados.
  3. Para cada rodada de otimização, a sequência de PCA e t-SNE é executada sob a configuração de hiperparâmetros selecionada pela metodologia de otimização em análise. Utilizando os mapeamentos e os resultados de agrupamento, computamos as métricas de avaliação definidas. Para a métrica rank-order correlation (estrutura global), HDBSCAN é executado somente nos dados em alta dimensionalidade, enquanto que para AMI (consistência de agrupamento) HDBSCAN é executado tanto em alta dimensionalidade quanto em baixa dimensionalidade. Para a métrica divergência KL, HDBSCAN não é executado.
  4. O algoritmo de otimização de hiperparâmetros recebe o resultado do experimento, calculando uma nova configuração para o Pipeline.

Notebooks

Os Notebooks disponíveis implementam experimentos com as três métricas de avaliação consideradas, três algoritmos de otimização e seis conjuntos de dados. Segue descrição:

  • notebooks/ami-optim.ipynb: experimentos para otimizar a métrica de informação mútua ajustada.
  • notebooks/baseline-plots.ipynb: construindo visualizações com os hiperparâmetros sugeridos por Maaten & Hinton, para comparação qualitativa.
  • notebooks/kl-divergence-optim.ipynb: experimentos para otimizar a métrica de divergência KL.
  • notebooks/optimizer-test.ipynb: teste dos algoritmos de otimização.
  • notebooks/rank-order-optim.ipynb: experimentos para otimizar a métrica de rank-order correlation.
  • notebooks/real-data-processing.ipynb: criando as bases de dados reais.
  • notebooks/synthetic-data-gen.ipynb: criando as bases de dados sintéticas.

Resultados

Os resultados foram promissores. As melhores configurações segundo as métricas definidas mostraram que existem intervalos mais amplos para a configuração do t-SNE. Particularmente, perplexidades mais altas que o usual mostraram bons resultados. Uma avaliação mais completa é feita no relatório contido neste repositório. Por ora, mostramos uma visualização do dataset COIL-20 com hiperparâmetros sugeridos por Maaten & Hinton e com os hiperparâmetros ótimos para o objetivo de representação de estrutura global.

Hiperarâmetros sugeridos por Maaten & Hinton:

Hiperparâmetros otimizados para preservação de estrutura global:

Os clusters apresentam uma separação razoavelmente mais clara na visualização otimizada, obtida com uma perplexidade de 115 (fora do intervalo considerado como boa prática).

tsne-optim's People

Contributors

gdmarmerola avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.