Data de entrega: 9/7 a meia noite, via Moodle
Objetivos: aplicar os vários classificadores visto em aula. Busca de hiperparametros. Nested cross validation
Leia o arquivo dados4.csv. O arquivo é um banco de dados conhecido sobre credito bancário na Australia, mas com alguns dos atributos categóricos originais descrição dos dados
O atributo de saída é V15 (classes 1 e 2).
Nested cross validation é uma forma mais complexa para escolher os algoritmos e hiperparametros a serem usados num projeto que provavelmente escolherá soluções levemente melhores.
A ideia é separar a seleção de hiperparametros da seleção de algoritmos de classificação. Assim queremos saber qual é o melhor algoritmo a ser usado num conjunto de dado sem escolher o melhor conjunto de hiperparametros para esse algoritmo ao mesmo tempo.
Vamos assumir que o conjunto de dados A é separado em apenas um conjunto de treino B e um conjunto de teste Z. A questão é qual o melhor algoritmo para usar no conjunto A. O que fizemos no exercício 2 e treinar todos os algoritmos cada um com seu conjunto de possíveis valores para os hiperparametros no B e medir no Z. A combinação que tinha menor RMSE no Z seria considerada a melhor. Mas isso não diz qual é o “melhor algoritmo”, isso responde qual é a melhor solução (combinação de algoritmo e valores do hiperparametro).
Para definir qual o melhor algoritmo, temos que fazer a busca dos hiperparametros dentro do conjunto B. Para o algoritmo X
Treine o algoritmo X com os melhores hiperparametros no B (C+D) e meça no Z. O melhor algoritmo sera o que tiver melhor medida no Z!
A validação cruzada que usa B como treino e Z como teste é chamada de “outer loop”. A validação cruzada que quebra o B em C de treino e D de teste é chamada de “inner loop”.
Nesse exemplo essas validações cruzadas era apenas 1 vez split de treino e teste. Cada uma delas pode ser qualquer validação cruzada que nos vimos (K-fold, repetições de split train/test, etc).
4 links:
https://machinelearningmastery.com/nested-cross-validation-for-machine-learning-with-python/
https://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html
Faça a conversão dos atributos categóricos (V5, V6 e V12) para numéricos, usando one-hot-encoder/dummy variables. Faça o centering e scaling para todos os atributos.
A busca de hiperparametros será feira usando nested-cross validation, com 3-fold estratificado para o inner loop (busca de hiper parâmetros) e 4 repetições de split de 70% para treino e 30 para teste no outer loop (para medir a qualidade do algoritmo).
Use AUC como medida de qualidade do classificador
A busca de hiperparametros será aleatória com 10 valores. O problema especificará um intervalo para hiperparametro. Use uma distribuição uniforme para escolher 10 valores neste intervalo.
Se houver mais de um hiperparametro, escolha 10 combinações aleatórias deles.
Reporte o AUC médio no outer loop. Monte uma tabela final com cada algoritmo e seu valor de AUC no outer loop
Sem regularização (e portanto sem hiperparametros)
alpha: 10 números aleatórios entre 10^{-3} e 10^3: Uniforme no expoente,
Sem hiperparametros
Sem hiperparametros
Selecione 10 valores aleatórios ente:
Selecione 10 duplas aleatórias ente:
Use C entre 2^{-5} e 2^{15} uniforme no expoente
Use gamma entre 2^{-9} e 2^3 uniforme no expoente
Use o Gaussian NB. Sem hiperparametros.
Use prunning.
Use todas as combinações dos valores abaixo.
n_estimators: use os valores: 10, 100 e 1000
max_features: use os valores 5, 8 e 10
Selecione 10 trinca aleatórias ente:
n_estimators: de 5 a 100
learning_rate: de 0.01 a 0.3
max_depth: 2 ou 3