Close Menu
    Trending
    • Using Graph Databases to Model Patient Journeys and Clinical Relationships
    • Cuba’s Energy Crisis: A Systemic Breakdown
    • AI Startup TML From Ex-OpenAI Exec Mira Murati Pays $500,000
    • STOP Building Useless ML Projects – What Actually Works
    • Credit Risk Scoring for BNPL Customers at Bati Bank | by Sumeya sirmula | Jul, 2025
    • The New Career Crisis: AI Is Breaking the Entry-Level Path for Gen Z
    • Musk’s X appoints ‘king of virality’ in bid to boost growth
    • Why Entrepreneurs Should Stop Obsessing Over Growth
    AIBS News
    • Home
    • Artificial Intelligence
    • Machine Learning
    • AI Technology
    • Data Science
    • More
      • Technology
      • Business
    AIBS News
    Home»Machine Learning»Testando estabilidade do modelo: 03 estratégias | by Gabriel Cabral Guimaraes | Jan, 2025
    Machine Learning

    Testando estabilidade do modelo: 03 estratégias | by Gabriel Cabral Guimaraes | Jan, 2025

    Team_AIBS NewsBy Team_AIBS NewsJanuary 16, 2025No Comments4 Mins Read
    Share Facebook Twitter Pinterest LinkedIn Tumblr Reddit Telegram Email
    Share
    Facebook Twitter LinkedIn Pinterest Email


    1. Erro ao longo da variável resposta (Y)

    No caso de a variável resposta ser quantitativa e de um modelo de regressão ter sido aplicado, a métrica utilizada (MAE, MSE, RMSE, and many others.) geralmente reflete, de alguma forma, a média ou mediana do erro. Porém, surge a questão: essa métrica do erro é homogênea ao longo de Y, ou o modelo apresenta mais dificuldades em prever valores em determinadas partes da distribuição?

    Para investigar isso, podemos dividir Y, na base de teste, em 08 quantis e avaliar o MSE e o desvio-padrão em cada uma dessas porções de dados. O código a seguir permite realizar essa análise e oferece uma visão detalhada sobre a estabilidade do erro do modelo em diferentes regiões da variável resposta.

    # Divide a variável de resposta em quantis
    quantiles = pd.qcut(y_test, q=8, labels=False) # Divide em 8 quantis (ajuste o `q` conforme necessário)

    # Calcula os erros para cada quantil
    outcomes = pd.DataFrame({
    'y_true': y_test, # Valores reais de y
    'y_pred': y_pred_best, # Valores previstos de y
    'quantile': quantiles # Quantil correspondente
    })
    outcomes['erro'] = (outcomes['y_true'] - outcomes['y_pred'])**2 # Erro quadrático

    # Agrega estatísticas para cada quantil
    quantile_stats = outcomes.groupby('quantile').agg(
    mse=('erro', lambda x: np.imply(x)), # Média dos erros quadráticos (MSE)
    std_error=('erro', lambda x: np.std(x)) # Desvio padrão dos erros
    ).reset_index()

    # Exibe os resultados
    print(quantile_stats)

    Observa-se, neste exemplo, que o modelo tem uma qualidade de predição pior nos maiores valores de Y (sétimo e oitavo quantil) na base de teste, além da maior dispersão no último quantil.

    2. Diferentes bases de teste : Bootstrapping

    Uma forma honesta de verificar qual será a efficiency esperada do seu modelo em produção é avaliando seu desempenho na base de teste (não utilizada para treinar ou escolher os hiperparâmetros do modelo). Mas, e se você pudesse não apenas obter uma métrica desta estimativa, como também verificar a distribuição desse erro?

    Neste sentido, podemos criar novas bases de teste a partir da authentic utilizando reamostragem (bootstrapping) e, assim, calcular o erro em cada uma dessas partições. Abaixo, apresento o código utilizado para esse propósito, onde montamos 300 novas bases de teste por meio da reamostragem.

    # Número de amostras bootstrap (300 novas bases)
    n_bootstrap_samples = 300

    # Lista para armazenar as pontuações de MSE
    bootstrap_mse_scores = []

    # Realiza o processo de bootstrapping
    for i in vary(n_bootstrap_samples):
    # Gera uma amostra bootstrap (com reposição)
    bootstrap_indices = np.random.selection(len(X_test), measurement=len(X_test), exchange=True)

    # Usa os índices bootstrap para selecionar os dados e converter para NumPy
    X_bootstrap = X_test.iloc[bootstrap_indices].values
    y_bootstrap = y_test.iloc[bootstrap_indices].values

    # Faz previsões na amostra bootstrap
    y_pred = modelo.predict(X_bootstrap)

    # Calcula o erro médio quadrático (MSE) e o armazena
    mse = mean_squared_error(y_bootstrap, y_pred)
    bootstrap_mse_scores.append(mse)

    # Estatísticas resumidas
    mean_mse = np.imply(bootstrap_mse_scores) # Média dos MSEs
    std_mse = np.std(bootstrap_mse_scores) # Desvio padrão dos MSEs

    # Exibe os resultados
    print(f"Resultados do Bootstrap MSE:")
    print(f"Média do MSE: {mean_mse:.4f}")
    print(f"Desvio padrão: {std_mse:.4f}")

    Temos o retorno a seguir, observando a média do erro nestas partições e o desvio médio.

    Outra alternativa é visualizar a dispersão do erro, conforme código abaixo

    # Opcional: Visualizar os resultados
    import matplotlib.pyplot as plt

    plt.hist(bootstrap_mse_scores, bins=15, edgecolor='okay', alpha=0.7) # Cria o histograma
    plt.title("Distribuição do Bootstrap MSE") # Título do gráfico
    plt.xlabel("Erro Quadrático Médio (MSE)") # Rótulo do eixo X
    plt.ylabel("Frequência") # Rótulo do eixo Y
    plt.present() # Exibe o gráfico

    Pelo gráfico, observa-se que, apesar de centrar-se em 0.25/0.26, há ocasião em que o modelo performou na casa dos 0.23.

    3. Impacto de cada variável no erro

    Uma forma complementar de mapear a importância de cada variável para o modelo é, dentro da base de teste, iterativamente, embaralhar os valores de cada variável explicativa e, após este ajuste, calcular qual o erro no teste.

    Em tese, quando as variáveis mais importantes tiverem valores aleatórios atribuídos, o erro deve aumentar consideravelmente, ao passo que as variáveis menos relevantes para o modelo, quando embaralhadas, não deverão prejudicar muito a efficiency.

    Assim, é possível, por exemplo, entender quais variáveis devem ser imprescindíveis quando o modelo estiver em produção.

    # Inicializa um contêiner para armazenar os resultados de desempenho
    feature_mse = []

    # Itera sobre cada characteristic (coluna)
    for characteristic in X_test.columns:
    # Cria uma cópia de X_test
    X_test_modified = X_test.copy()

    # Cria uma versão da characteristic atual com os valores embaralhados
    X_test_modified[feature] = np.random.permutation(X_test[feature])

    # Avalia o modelo no conjunto de dados modificado
    y_pred = modelo.predict(X_test_modified)
    mse = mean_squared_error(y_test, y_pred)
    feature_mse.append(mse)
    print(f"{characteristic} - MSE: {mse:.4f}")

    Conforme resultado abaixo, observa-se que ao embaralhar as variáveis MedInc, Latitude, Longitude e AveOccup, nesta ordem, temos uma deterioração da qualidade do modelo (tomado o referencial do MSE World de 0.26)



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Previous ArticleShe Is in Love With ChatGPT
    Next Article Basics of GANs & SMOTE for Data Augmentation | by Sunghyun Ahn | Jan, 2025
    Team_AIBS News
    • Website

    Related Posts

    Machine Learning

    Credit Risk Scoring for BNPL Customers at Bati Bank | by Sumeya sirmula | Jul, 2025

    July 1, 2025
    Machine Learning

    Why PDF Extraction Still Feels LikeHack

    July 1, 2025
    Machine Learning

    🚗 Predicting Car Purchase Amounts with Neural Networks in Keras (with Code & Dataset) | by Smruti Ranjan Nayak | Jul, 2025

    July 1, 2025
    Add A Comment
    Leave A Reply Cancel Reply

    Top Posts

    Using Graph Databases to Model Patient Journeys and Clinical Relationships

    July 1, 2025

    I Tried Buying a Car Through Amazon: Here Are the Pros, Cons

    December 10, 2024

    Amazon and eBay to pay ‘fair share’ for e-waste recycling

    December 10, 2024

    Artificial Intelligence Concerns & Predictions For 2025

    December 10, 2024

    Barbara Corcoran: Entrepreneurs Must ‘Embrace Change’

    December 10, 2024
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    Most Popular

    #دعانویس_یهودی_09058824042دعانویس اول نتیجه با رضایت و تضمین 100%. جهت دریافت مشاوره رایگان هم اکنون باما تماس بگیرید09058824042نویس یهودی دعا نویس درتهران بهترین دعا نویس در ایران دعای بازگشت معشوق دعای زبان بند قویی طلسم بازگشت معشوق طلسم گشایش بخت فال و سر کتاب 09058824042 | by دعانویس یهودی09058824042(دعا نویسی یهودی تضمین) | Jun, 2025

    June 8, 2025

    TikTok investigated by UK watchdog over use of children’s data

    March 3, 2025

    How AI Adapts Adult Content to Individual Tastes

    March 26, 2025
    Our Picks

    Using Graph Databases to Model Patient Journeys and Clinical Relationships

    July 1, 2025

    Cuba’s Energy Crisis: A Systemic Breakdown

    July 1, 2025

    AI Startup TML From Ex-OpenAI Exec Mira Murati Pays $500,000

    July 1, 2025
    Categories
    • AI Technology
    • Artificial Intelligence
    • Business
    • Data Science
    • Machine Learning
    • Technology
    • Privacy Policy
    • Disclaimer
    • Terms and Conditions
    • About us
    • Contact us
    Copyright © 2024 Aibsnews.comAll Rights Reserved.

    Type above and press Enter to search. Press Esc to cancel.