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.