Coleção modelos
Matriz de confusão
Classe real × classe prevista, com o acerto de cada classe e o geral.
O que o bloco faz
models/confusion conta, para cada classe real, em qual classe o modelo pôs cada caso. A saída é data/table no formato largo: real, uma coluna por classe prevista, total, acertos, taxa_acerto e a linha total com o acerto geral.
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.
- Modelo linear generalizado (GLM)
- Uma extensão do modelo linear para respostas que não são normais, como contagens (Poisson) e proporções ou sim/não (binomial). Uma função de ligação conecta a média da resposta à parte linear do modelo.
- Nível
- Cada valor que um fator assume no estudo: as doses 0, 50 e 100 kg/ha são três níveis do fator dose.
- 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 depois de ajustar um classificador — o GLM binomial, a discriminante ou a logística da coleção multivariada, as árvores de machine learning — para ver quais classes ele confunde.
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.Real e previsto usam os mesmos rótulos de classe; um rótulo escrito diferente vira uma classe a mais.
Se falhar: Padronize os rótulos com o
data/mutateantes.
Configuração
As duas entradas são opcionais, mas uma tem de estar ligada. Só modelo: avalia no treino pela Validação (cruzada, padrão, ou resubstituição). modelo e dados: prevê a tabela e compara com a resposta do modelo. Só dados: modo tabela, com Resposta e Previsto (padrão previsto) nomeando as colunas.
Tabela — matriz (padrão) ou métricas: acurácia, acurácia balanceada (a média das revocações; Brodersen et al., 2010), kappa de Cohen (1960) e precisão, revocação e F1 por classe. Classe nunca prevista tem precisão e F1 indefinidos (NA), e não zero.
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("logit", "models/glm", formula = "am ~ wt", familia = "binomial", from = "dados") |>
tr_add("cv", "models/confusion", validacao = "cruzada", from = "logit")Cada carro é classificado como manual ou automático por um modelo ajustado sem ele.
Como interpretar
A diagonal são os acertos. Leia a taxa de cada classe, não só a geral: com classes desbalanceadas, prever sempre a maior já acerta muito. A resubstituição é otimista; a cruzada estima o acerto num caso novo.
Implementação
trama.models::tr_models_confusion()versão 0.6.6Cálculo próprio combase::tablesobre os níveis da resposta, incluindo as contagens zero; semdados, as previsões são as da validação cruzada do contrato (tr_models_predict_cv). Métricas (tabela = "métricas") por implementação própria (porte damulti/confusionda main); kappa conferido contrairr::kappa2epsych::cohen.kappa.
No código O bloco chama trama.models::tr_models_confusion(), em trama.models/R/avaliar.R:153.
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
- Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8), 861-874. doi:10.1016/j.patrec.2005.10.010
- Lachenbruch, P. A.; Mickey, M. R. (1968). Estimation of error rates in discriminant analysis. Technometrics, 10(1), 1-11. doi:10.1080/00401706.1968.10490530
- 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
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, 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