1
resposta

[Projeto] 04 Etapa #2 Avaliação e Comparação de Modelos

import mlflow
import pandas as pd
import gradio as gr

--- 1. Busca de Modelos e Métricas ---

def get_best_models():
# Busca os dois últimos experimentos registrados
runs = mlflow.search_runs(experiment_names=["Recomendacao_Musicas_Playcatch"],
order_by=["metrics.rmse ASC"], max_results=2)
return runs

--- 2. Função de Recomendação para Comparação ---

def recommend_comparison(user_id):
runs = get_best_models()

# Carregando os modelos via URI do MLflow
model_v1 = mlflow.sklearn.load_model(f"runs:/{runs.iloc[0].run_id}/modelo_recomendacao_v1")
model_v2 = mlflow.sklearn.load_model(f"runs:/{runs.iloc[1].run_id}/modelo_recomendacao_v1")

# Simulação de geração de recomendações (Top 5)
# Aqui você filtraria músicas que o usuário ainda não ouviu
recs_v1 = ["Música A", "Música B", "Música C", "Música D", "Música E"]
recs_v2 = ["Música X", "Música Y", "Música B", "Música Z", "Música W"]

return "\n".join(recs_v1), "\n".join(recs_v2)

--- 3. Construção do Painel Gradio ---

def launch_dashboard():
with gr.Blocks(title="Playcatch - Comparador de Modelos") as demo:
gr.Markdown("#Painel de Avaliação de Modelos (A/B Test)")

    with gr.Row():
        user_input = gr.Number(label="ID do Usuário para Teste", value=101)
        btn = gr.Button("Comparar Recomendações")
        
    with gr.Row():
        out1 = gr.Textbox(label="Modelo A (Melhor RMSE)")
        out2 = gr.Textbox(label="Modelo B (Runner-up)")
        
    btn.click(fn=recommend_comparison, inputs=user_input, outputs=[out1, out2])
    
demo.launch()

launch_dashboard()

conceito:
Validação com Dados Não Vistos (Hold-out): É Avaliamos o modelo em dados que ele nunca viu para garantir que ele não apenas decorou o histórico (Overfitting)
Análise Qualitativa: Números (métricas) dizem se o modelo é preciso.

1 resposta

Oi, Moacir! Como vai?

Agradeço por compartilhar.

Gostei da sua implementação, principalmente na forma como você estruturou a comparação entre modelos usando MLflow e trouxe isso para um painel com Gradio. Sua explicação sobre validação com dados não vistos e análise qualitativa está bem alinhada com o objetivo da etapa, mostrando que você não ficou só nas métricas, mas também considerou a experiência do usuário.

Continue explorando esse tipo de comparação, pois ela é importante para entender o impacto real dos modelos em produção.

Dica: além de listar recomendações, você pode incluir uma métrica simples de interseção entre listas (ex: quantas músicas se repetem) e exibir isso no painel; faça isso criando uma função que compare as listas e retorne um valor numérico para complementar a análise.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!