MO431A - Tarefa 5 - Versão 1

Vamos fazer a busca dos melhores hiperparametros para uma SVM para Regressão num banco de dados em particular.

Xtreino.npy e Xteste5.npy são os dados de treino e teste, e ytreino5.npy e yteste5.npy as saidas correspondentes do dados.

0.1 SVM Regressor

O sklearn.svm.SVR do sklearn tem vários hiperparametros. Vamos usar o kernel "rbf". Neste caso há 3 hiperparametros que se considera como os mais importantes, : C, gamma, e epsilon

Vamos fazer a busca no range:

  • C entre 2-5 e 215 (uniforme nos expoentes)
  • gamma entre 2-15 e 23 (uniforme nos expoentes)
  • epsilon entre 0.05 a 1.0 (uniforme neste intervalo)

0.2 Medida de erro

Para cada conjunto de hiperparametros, treine o SVM no conjunto de treino ( Xtreino e ytreino), e meça o erro quadrático médio no conjunto de teste (Xteste e yteste).

Nota: Parece que o pacote Optunity implementa todos os algoritmos abaixo menos o SA. O pacote parece que esta parado desde 2016 e portanto isso pode ser um problema. Use este pacote ou use os pacotes especificos para cada algoritmo.

1 Random search

use um random search de 125 combinações dos hiperparametros. Voce pode usar o sklearn.modelselection.RandomizedSearchCV do sklearn, ou o random search do hyperopt (ver abaixo a otimização bayesiana), ou voce pode implementar a busca voce mesmo

Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores.

2 Grid seach

Faça um grid search de 5 x 5 x 5 em cada uma dos atributos acima. Note que os hiperparametros C e gamma são um grid linear no expoente.

Vc pode usar o GridSearchCV do sklearn ou implementar o seu proprio código.

Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores.

3 Otimização bayesiana

Utilize o pacote hyperopt para fazer a otimização bayesiana dos hiperparametros. Essa implementação usa uma regressor (TPE) para modelar a distribuição de probabilidades que é muito mais rápido que a implementação padrão utilizando "processos gaussianos"

Use 125 chamadas para a função.

Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores.

4 PSO

Utilize o PSO para resolver a busca de hiperparametros. Voce pode utulizar implementações como pyswarm ou psopy ou qualquer outra.

Utilize 11 partículas por 11 interações (para ser justo com os outros algoritmos acima) . Utilizes os valores default (da sua implementação) para os hiperparametros do PSO.

Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores. Descubra também quais são os valores default para os três hiperparametros que discutimos em classe para o PSO (as constantes que multiplicam o momento ou inércia, o direção do melhor ponto da partícula e a direção do melhor global).

5 Simulated annealing

Utilize um pacote como simannel para fazer a busca usando simulated annealing. Utilize 125 passos na simulação. Voce pode usar o valor default para o cooling schedule.

Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores.

6 CMA-ES

Utilize o pacote pycma ou alguma outra implementação do CMA-ES. Utilize 125 chamadas da função. Reporte os melhores valores dos hiperparametros e o erro-quadrático médio para esses valores.

Author: Jacques

Created: 2019-04-26 Fri 15:40

Validate