Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] [Técnicas de Otimização][grid] - Teste de parâmetros

Na aula o professor utiliza alguns parametros para testar o modelo conforme abaixo:

grid = ParamGridBuilder() \
    .addGrid(dtr.maxDepth, [2, 5, 10]) \
    .addGrid(dtr.maxBins, [10, 32, 45]) \
    .build()

Ao final, ele retorna o código abaixo para analisar as métricas Sem Cross Validation vs Com Cross Validation. Me gerou uma dúvida.. como descobrir qual parametro acima ([2, 5, 10] e [10, 32, 45]) foi escolhido como resultado final usando Cross Validation?

Gostaria de saber se existe alguma função que informa as métricas de R² e RMSE para cada parâmetro testado a fim de saber se dentre os parâmetros informados houve uma diferença significante. Pois as vezes a ténica pode escolher o parâmetro [10, 45] e o custo de processamento ser alto porém as métricas para os parâmetros [5, 32] não forem significativamente diferentes.

print('Decision Tree Regression')
print("="*30)
print("Sem Cross Validation")
print("="*30)
print("R²: %f" % evaluator.evaluate(previsoes_dtr_teste, {evaluator.metricName: "r2"}))
print("RMSE: %f" % evaluator.evaluate(previsoes_dtr_teste, {evaluator.metricName: "rmse"}))
print("")
print("="*30)
print("Com Cross Validation")
print("="*30)
print("R²: %f" % evaluator.evaluate(previsoes_dtr_cv_teste, {evaluator.metricName: "r2"}))
print("RMSE: %f" % evaluator.evaluate(previsoes_dtr_cv_teste, {evaluator.metricName: "rmse"}))
1 resposta
solução!

Oi Lucas, tudo bem?

Você pode usar a função bestModel do objeto CrossValidatorModel, que retorna o melhor modelo encontrado durante o processo de validação cruzada. Por exemplo, se modelo_dtr_cv é o seu objeto CrossValidatorModel, você pode tentar fazer:

best_model = modelo_dtr_cv.bestModel
print(best_model._java_obj.getMaxDepth())
print(best_model._java_obj.getMaxBins())

Quanto a obter as métricas R² e RMSE para cada combinação de parâmetros testada, infelizmente o Spark não fornece uma maneira direta de fazer isso. No entanto, você pode implementar uma solução alternativa, fazendo um loop sobre todas as combinações de parâmetros e treinando/avaliando um modelo para cada uma. Isso pode ser bastante intensivo em termos de computação, mas permitirá que você obtenha as métricas que deseja.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software