Metodologias para aprendizado de maquina

Jacques Wainer

separação treino e teste

validação cruzada

Independência dos dados

todo teste estatístico assume que os dados de cada conjunto são independentes.

e se não forem -> o p-valor calculado pelo teste vai ser menor que o que deveria

1 só banco de dados

1) trata cada dado do teste como um dado binário (acetou ou não) - dados pareados

2 algoritmos: teste McNemar https://pt.wikipedia.org/wiki/Teste_de_McNemar

3 ou mais algoritmos: teste Q de Cochran https://pt.wikipedia.org/wiki/Teste_Q

bem fraco - nunca vi sendo usado em artigos

2) validação cruzada repetida

por exemplo rode o 10-folds, calcule a acurácia de cada fold, e vc tem 10 números. (pareados)

e porque não um 30-fold? n é maior, menor o p-valor!!

mas há o problema de independência, quanto mais folds, “menos independentes” são os resultados entre si(?)

a “solução” aceita é 5x2 cv: 5 repetições de um 2-folds (1/2 para treino 1/2 para teste),

10 números pareados.

Muitos banco de dados (N>10)

cada banco de dado resulta em 1 numero (obtido talvez com cv repetida mas isso não importa).

2 algoritmos

Wilcoxon pareado e o vencedor é o que tiver maior mediana

mais que 2 algoritmos

Friedman + post hoc

O problema com múltiplas comparações

p=0.05 significa que eu estou aceitando uma taxa de falso positivo de 0,05 (eu vou estar errado 1/20 vezes cada vez que eu disse que a diferença é real).

se eu tenho 6 algoritmos, e fizer todas as comparações para a par, eu vou ter 15 comparações (6!/(4! 2!))

Cada comparação tem 0.95 probabilidade de estar certa.

Qual a probabilidade das 15 comparações estarem certas:

Probabilidade de estar errada = probabilidade de algum falso positivo = 1-0.46329 = 0.53671

Se eu fizer as 15 comparações e usar p=0.05 em cada uma delas, no final eu tenho > 50% de ter algum falso positivo.

Eu preciso baixar o p-valor de cada comparação para que no final eu só tenha uma taxa de falso positivo de 0.05.

Numa aproximação, o valor que eu devo usar em cada comparação é de 0.05/15 (número de comparações)

p-value adjust

um outro jeito de pensar é que eu devo multiplicar cada p-valor interno por 15 (e limitar a 1.0). Se algum desses p-valor for menor que 0.05 eu aceito aquela comparação como estatisticamente significante

vc ajusta os p-valores obtidos nas comparações par a par

esse ajuste acima é chamado de Bonferroni.

mas ele tem varias pressuposições erradas (independencia das comparacoes, etc). Ele acaba sendo muito mais fraco que “deveria”

ha outras técnicas de p-value adjust

R: https://www.rdocumentation.org/packages/stats/versions/3.6.2/topics/p.adjust

python: https://www.statsmodels.org/dev/generated/statsmodels.stats.multitest.multipletests.html

eu uso o Holm na maioria das vezes.

Técnica 1: faça as comparações par a par usando Wilcoxon, e use um ajuste de p-valor como o Holm.

post-hoc “globais”

ha uma outra família de testes post-hoc que computam uma diferença global, se uma comparação tem uma diferença maior que essa diferença critica, a comparação é significativa

Uma técnica global famosa para dados não paramétricos é o Nemenyi, para dados paramétricos um teste famoso é o Tukey range test (ou Tukey HSD e outros nomes).

Técnica 2: use Frideman e Nemenyi (esta é a técnica mais tradicional proposta por Demsar.

Referencias