GithubHelp home page GithubHelp logo

ednel's People

Contributors

henryzord avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

ednel's Issues

Testar versão com ciclos

Atualmente a versão na branch with_null tem um algoritmo que impede ciclos de serem formados. Remover essa restrição e re-testar o algoritmo para ver seu desempenho.

Normalizar probabilidades logo após atualização

Atualmente as probabilidades, após atualizadas, são deixadas sem normalização, e só são re-normalizadas durante a amostragem.

Talvez seja interessante re-normalizá-las tão logo elas sejam atualizadas no graphical model.

Evitar que processo de gibbs sampling nunca termine

Contar número de indivíduos inválidos gerados. Se 5 indivíduos inválidos forem gerados em sequência, resetar busca para último indivíduo válido gerado.

Se mesmo assim nenhum indivíduo válido for gerado... não sei!

Remover uma das variáveis contínuas

Variáveis do J48 e PART podem ser mescladas, para diminuir o número de variáveis do sistema. Basta que se acrescente qual é o pai da variável quando se está amostrando (e.g. ou J48, ou PART).

Utilizar elitismo

Agora que não é possível mais utilizar learning rate, implementar elitismo (como um hiper-parâmetro) para a população, de forma que a atualização de probabilidades não seja tão radical.

Melhores datasets

Utilizar datasets melhores para otimização de hiper-parâmetros (i.e. datasets para treino): os datasets atuais são desbalanceados.

Corrigir escala de cores no projetor de indivíduos

A escala de cores está muito "aguada" no projetor de indivíduos. Isso é piorado pelo fato de que os indivíduos last e overall possuem um valor muito diferente do resto (-1, quando o range de valores é [0, 1]), e porque a escala de cores é consistente em todas as gerações.

Talvez utilizar uma escala de cores para cada geração, e projetar os melhores indivíduos em outra camada, resolva o problema.

image

Notificar threads que elas precisam parar de executar imediatamente

O método ThreadPoolExecutor.shutdown não espera que as threads terminem de executar. Por isso, é necessário implementar o método ThreadPoolExecutor.awaitTermination, passando como parâmetro o número de segundos restantes, e notificar as threads que elas precisam terminar imediatamente quando o tempo for encerrado.

Melhorar código que plota espaço de soluções

Atualmente, colunas que possuem valores true, false estão sendo convertidas para one-hot (e.g. usePrune_true, usePrune_false), o que é um processamento desnecessário (a coluna já é numérica, embora binária).

Fazer essa adaptação no script characteristics_to_pca, mais especificamente na função to_all_numeric_columns

Fundir classificadores que geram regras não-ordenadas em um classificador só

Pegar as regras individuais de cada um dos classificadores e fundi-los em um classificador não-ordenado.

As regras devem ser avaliadas com base em sua precision e recall: precision * recall

Remover as instâncias corretamente classificadas pela regra inclusa no sistema.
Depois, re-computar precision * recall e ver a regra com a melhor métrica.

Trocar posição do seletor de variável no projetor de GM

Fazer com que o seletor seja colocado em cima da tabela de probabilidades, oposto a como é hoje, embaixo (pois tabelas com muitas entradas empurram o seletor muito para baixo).

Adicionalmente, corrigir o label de cada geração no slider também seria bom (vide figura).

image

Utilizar regras em um classificador de indução de regras

Agora com as regras extraídas dos classificadores, utilizá-las em um novo classificador, baseado em regras (que calcula cobertura das regras e etc), para gerar um meta-classificador.

Passo-a-passo:

  1. Podar as regras; utilizar Jaccard para remover regras redundantes
  2. Utilizar um algoritmo de cobertura de regras greedy para classificar novas instâncias não vistas

Gerar correlações que não podem ser desfeitas

É óbvio, pela análise prévia do código, que algumas variáveis são correlacionadas com outras, mesmo que o resultado do mutual information diga o contrário.

Por exemplo, subtreeRaising depende ou de reducedErrorPruning, ou de confidenceFactor (como métodos de pruning) para ser ativado. Essa correlação jamais mudará (por características do J48), então não há sentido nem em calculá-la, nem em atualizá-la.

Investigar resultados da pasta overall

Investigar por que no arquivo gerado para cada execução, todos os classificadores tem os mesmos valores na matriz.

Exemplo:

algorithm correct errorRate
last-DecisionTable 440 0,2666666667
overall-DecisionTable 440 0,2666666667
overall-JRip 440 0,2666666667
overall-PART 440 0,2666666667
last 440 0,2666666667
last-PART 440 0,2666666667
overall-J48 440 0,2666666667
last-J48 440 0,2666666667
last-SimpleCart 440 0,2666666667
overall-SimpleCart 440 0,2666666667
overall 440 0,2666666667
last-JRip 440 0,2666666667

Corrigir atualização de probabilidades

Se os pais de uma variável não mudarem de uma geração para outra, utilizar fórmula com descrita no artigo, mas incluindo pais mutáveis; se os pais mudarem, utilizar fórmula sem a primeira parte, como quem atualiza as probabilidades com lr = 1

Concatenar pré-condições de regras em rule lists

Nosso ensemble utiliza dois classificadores baseados em listas de regras: PART e JRip.

As regras desses classificadores dependem que todas as regras anteriores à regra atual sejam falsas para que a regra atual possa disparar. Tome como exemplo o dataset play_tennis:

outlook temp humidity wind play
Sunny Hot High Weak No
Sunny Hot High Strong No
Overcast Hot High Weak Yes
Rain Mild High Weak Yes
Rain Cool Normal Weak Yes
Rain Cool Normal Strong No
Overcast Cool Normal Strong Yes
Sunny Mild High Weak No
Sunny Cool Normal Weak Yes
Rain Mild Normal Weak Yes
Sunny Mild Normal Strong Yes
Overcast Mild High Strong Yes
Overcast Hot Normal Weak Yes
Rain Mild High Strong No

O classificador JRip gera as seguintes regras:

regra classe
Outlook = overcast yes
Humidity = high no
yes

Em uma investigação mais minuciosa do dataset, fica evidente que a segunda regra depende diretamente que a primeira seja falsa. Se escrevêssemos todas as regras por extenso, ficaria assim:

regra classe
Outlook = overcast yes
!(outlook = overcast) and (Humidity = high) no
yes

Quando for processar as regras, fazer a concatenação usando a lista antiga; não fazer recursivamente este processamento, senão uma política de resolução (i.e. inverter os inúmeros ! que apareceriam) teria que ser utilizada.

Logar probabilidades

Atualmente, as probabilidades da dependency network não são anotadas, a fim de serem examinadas ao fim do processo evolutivo.

Fazer um registro dessas probabilidades.

Verificar sampling de valores

Garantir que nem todos os indivíduos de uma população estão tendo suas variáveis amostradas e setadas para o mesmo valor.

Implementar amostragem de variáveis sistemáticas

A ordem de amostragem das variáveis importa. Podemos utilizar clusters de variáveis, onde o valor semântico delas importa dentro do cluster, mas não importa fora do cluster, para evitar a geração de indivíduos inválidos.

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.