Coleção modelos
Avaliar previsões
Erro de previsão (regressão) ou acerto, kappa e F1 (classificação), numa tabela de métricas.
O que o bloco faz
models/evaluate mede a previsão numa tabela metrica, valor, n. Regressão: mae, rmse e r2 de previsão. Classificação: accuracy, balanced_accuracy, macro_f1, kappa e, com duas classes, sensitivity e specificity da classe positiva.
Antes de continuar
Termos que esta página usa, em poucas palavras. As definições completas estão no glossário.
- Amostra
- A parte da população que é de fato observada. Quando é sorteada com probabilidades conhecidas, permite estimar características da população e medir a incerteza dessa estimativa.
- Resíduo
- A diferença entre o valor observado e o valor que o modelo ajustado prevê para aquela observação. É nos resíduos que se conferem os pressupostos do modelo: eles devem parecer ruído, sem padrão.
- Coeficiente de determinação (R²)
- A fração da variação da resposta que o modelo explica, entre 0 e 1. Nunca diminui quando se acrescentam variáveis, por isso não serve sozinho para escolher entre modelos.
- Treino e teste
- Dividir os dados em uma parte para ajustar o modelo (treino) e outra, guardada, para medir o desempenho (teste). O teste só é honesto se o modelo nunca o viu durante o ajuste.
- Matriz de confusão
- A tabela que cruza a classe verdadeira com a classe prevista. Dela saem acurácia, sensibilidade, especificidade e precisão, que podem contar histórias diferentes quando as classes têm tamanhos muito diferentes.
Quando usar
Use para saber quanto o modelo erra num caso novo. models/fit_stats descreve o ajuste no treino; este bloco mede a previsão, por validação cruzada ou em dados que o modelo não viu.
Pressupostos
A medida que interessa é a fora da amostra: com o teste separado (
ml/split) emdados, ou pela validaçãocruzadaquando só o modelo está ligado. A resubstituição sai otimista, e mais ainda com muitos preditores e poucos casos. Previsões do treino marcado peloml/splitsão recusadas, salvopermitir_treino(que acrescenta a nota de otimismo); tabelas sem essa marca (divisão feita por fora, treino e teste juntados) são medidas como chegam, e num teste já usado para decidir a medida também sai otimista — isso nenhuma marca detecta.Se falhar: Ligue a saída teste do
ml/splitemdados, ou deixe avalidacaoemcruzada; se o teste já foi usado para escolher, reporte a medida como otimista.Com classes desequilibradas, a acurácia engana: prever sempre a classe maioritária já a deixa alta. A acurácia balanceada e o macro F1 dão peso igual a cada classe.
Verificar:Agrupar e resumir
Se falhar: Conte as linhas por classe no
data/group_summarisee leia abalanced_accuracyou omacro_f1e amodels/confusion, não só aaccuracy.Na regressão, o R² compara com a média do próprio conjunto avaliado; no teste pode ser negativo (pior que prever a média) e é indefinido com resposta constante.
Verificar:Analisar resíduos
Se falhar: Leia RMSE e MAE, na unidade da resposta, junto do gráfico de resíduos.
O kappa desconta a concordância esperada pelas marginais, mas depende da prevalência: com uma classe muito rara ele cai mesmo com boa acurácia, e não há escala universal do que é “bom”.
Se falhar: Leia o kappa junto da acurácia balanceada e das métricas por classe.
Precisão, revocação e F1 por classe tratam cada classe contra as demais; com poucas linhas de uma classe (coluna
n), os valores dela variam muito. Uma classe nunca prevista tem precisão indefinida (0/0): sai NA e fica fora das médias macro e ponderada, comozero_division = np.nando scikit-learn — o padrão do scikit-learn põe 0 e puxa a média para baixo, então compare com cuidado.Verificar:Matriz de confusão
Se falhar: Confira as contagens na
models/confusionantes de interpretar a classe.
Configuração
Mesmas entradas opcionais da matriz de confusão. No modo tabela, resposta ou previsto categóricos fazem classificação; dois números, regressão. Linhas sem real ou previsto ficam fora, e n diz quantas contaram.
Precisão de classe nunca prevista é indefinida (0/0): sai NA e fica fora das médias macro e ponderada, como zero_division = np.nan do scikit-learn.
Permitir avaliar o treino — com dados vindos do ml/split (a tabela leva a marca de treino/teste), previsões das linhas de treino são recusadas (tr_ml_error_train_eval): a medida no treino é otimista. Ligado, avalia assim mesmo e acrescenta a nota de otimismo. Tabela sem a marca é avaliada como chega.
Exemplo
library(trama)
reg <- tr_registry()
tr_use("trama.models", registry = reg)
tr_flow(reg) |>
tr_add("dados", "models/example", dataset = "mtcars") |>
tr_add("reg", "models/lm", formula = "mpg ~ wt + hp", from = "dados") |>
tr_add("cv", "models/evaluate", validacao = "cruzada", from = "reg")Como interpretar
rmse está na unidade da resposta. O r2 de previsão pode ser negativo: o modelo prevê pior que a média. O kappa desconta o acerto que o acaso daria com as mesmas proporções.
Implementação
trama.models::tr_models_evaluate()versão 0.6.6Cálculo próprio: MAE, RMSE e R² = 1 − SQE/SQT; na classificação, por classe (um contra todos) precisão, revocação e F1, com médias macro sobre as classes observadas e ponderadas pelo suporte; acurácia balanceada = média das revocações; kappa = (po − pe)/(1 − pe) com pe das marginais; na binária, sensibilidade e especificidade da positiva.
No código O bloco chama trama.models::tr_models_evaluate(), em trama.models/R/avaliar.R:684.
A conta é implementada pelo próprio trama, sem um pacote R de referência por trás.
Outras funções de pacotes que o bloco usa (1)
stats::complete.cases(par$prob)
Referências
Teoria
- Cohen, J. (1960). A Coefficient of Agreement for Nominal Scales. Educational and Psychological Measurement, 20(1), 37-46. doi:10.1177/001316446002000104
Livro-texto
- James, G.; Witten, D.; Hastie, T.; Tibshirani, R. (2021). An Introduction to Statistical Learning: with Applications in R. 2. ed. New York: Springer. doi:10.1007/978-1-0716-1418-1
- Kuhn, M.; Johnson, K. (2013). Applied Predictive Modeling. New York: Springer. doi:10.1007/978-1-4614-6849-3
Complementar
- Brodersen, K. H.; Ong, C. S.; Stephan, K. E.; Buhmann, J. M. (2010). The Balanced Accuracy and Its Posterior Distribution. 20th International Conference on Pattern Recognition (ICPR), 3121-3124. doi:10.1109/ICPR.2010.764
- Sokolova, M.; Lapalme, G. (2009). A systematic analysis of performance measures for classification tasks. Information Processing & Management, 45(4), 427-437. doi:10.1016/j.ipm.2009.03.002