Uma visão geral do processo de otimização de hiperparâmetros no scikit-learn está aqui .
A pesquisa exaustiva na grade encontrará o conjunto ideal de hiperparâmetros para um modelo. A desvantagem é que a busca exaustiva na grade é lenta.
A pesquisa aleatória é mais rápida que a pesquisa em grade, mas apresenta uma variação desnecessariamente alta.
Também existem estratégias adicionais em outros pacotes, incluindo o scikit-optimize , auto-sklearn e scikit-hyperband .
Qual é o método mais eficiente (encontrar parâmetros de desempenho razoavelmente rápido) para a otimização do hiperparâmetro no scikit-learn?
Idealmente, eu gostaria de trabalhar exemplos de código com benchmarks.
scikit-learn
hyperparameter
hyperparameter-tuning
grid-search
randomized-algorithms
Brian Spiering
fonte
fonte
Respostas:
A otimização não é o meu campo, mas até onde eu sei, a otimização de hiperparâmetros eficiente e eficaz nos dias de hoje gira fortemente em torno da construção de um modelo substituto. À medida que os modelos aumentam em complexidade, eles se tornam uma caixa preta mais opaca. Este é o caso de redes neurais profundas e também de árvores presumivelmente complexas. Um modelo substituto tenta regredir o espaço subjacente dentro dessa caixa preta. Com base em uma variedade de técnicas de amostragem, eles sondam o espaço do hiperparâmetro e tentam criar uma função que represente o verdadeiro espaço subjacente do hiperparâmetro.
A otimização bayesiana enfoca o modelo substituto e a forma como esse modelo é construído é crucial para a BO. Também crucial para o BO é escolher uma boa função de perda.
Penso que o desempenho entre a pesquisa aleatória e a pesquisa bayesiana varia de conjunto de dados para conjunto de dados e de modelo para modelo. Bergstra & Bengio (2012) fizeram um forte argumento para pesquisa aleatória sobre pesquisa em grade. Shahriari et al. (2016) defendem a BO. As estratégias de banda hiperbásica baseadas em modelo podem potencialmente ter um desempenho melhor que o BO, especialmente para grandes dimensões, no entanto, é puramente exploração, não exploração. Isso pode resultar facilmente em muito cedo para parar. No entanto, houve esforços para combinar Hyperband e BO .
Eu tive um bom sucesso com otimização de scikit, apesar de haver um pouco de falta de implementação. É fácil criar um protótipo e pode interagir facilmente com o scikit-learn.
Bergstra, J. & Bengio, Y. (2012). Pesquisa aleatória para otimização de hiperparâmetros. Journal of Machine Learning Research, 13 (fev), 281-305.
Shahriari, B., Swersky, K., Wang, Z., Adams, RP e De Freitas, N. (2016). Tirando o ser humano do circuito: uma revisão da otimização bayesiana. Anais do IEEE, 104 (1), 148-175.
fonte
Você pode dar uma olhada no auto-sklearn . Esse é um kit de ferramentas de aprendizado de máquina automatizado, que é uma extensão direta do scikit-learn.
fonte