Study Notes
DataMl

Dataset Partitioning

Em Machine Learning, os dados coletados (dataset) são tipicamente divididos em dois conjuntos:

  • train_full: as amostras que serão usados durante o treinamento. (80-85%)
  • test: as amostras que serão usadas para avaliar o desempenho do modelo treinado (15-20%). Após a divisão, é preciso de tomar decisões para conseguir resolver o problema da melhor forma:
  • Qual algorítimo usar (Random Forest, Logistic Regression, etc) ?
  • Como ajustar os parâmetros/hiperparâmetros ?
  • Quando parar de treinar para evitar overfitting (modelo decorou o conjunto de treino) ? Para ajudar nessas decisões durante o treinamento, o train_full set é divido em:
  • train: os dados que o modelo irá aprender de fato os padrões
  • val: conjunto de validação, amostras que irão ir "corrigindo" o modelo a ser ajustado durante a fase de treinamento.

Uma boa analogia seria imaginar o treinamento para uma prova. É separado execícios da matéria para treinar e execícios para serem a prova. Desses exercícios passados de treino alguns poucos desses seriam como se fossem simulados da prova, ou seja, enquanto você aprende a matéria esse conjunto te mostra se você está realmente sabendo a matéria/o conteúdo. No final, no dia da prova, você tem uma avaliação imparcial da sua performance ao aprender a matéria.

Stratification


Em estatística, estratificar significa formar grupos de uma população com base em uma variável (não continua, mas pode ser nominal, ordinal e até discreta/dependendo do contexto. Ou seja, variáveis categóricas).

Exemplo: Imagine uma população de 1.000 alunos de uma escola, com várias variáveis associadas (ex: nome, idade, altura, peso, série, média de nota, média de faltas, etc). Estratificar a população alunos por série seria formar grupo com as instâncias de alunos com tal valor de série:

SérieQuantidadeProporção
1ª série30030%
2ª série40040%
3ª série30030%
Cada linha/grupo na tabela seria um estrato, um grupo homogêneo de alunos (todos possuem a mesma série). Dessa forma, suponha que se deseja coletar, de forma estratificada, uma amostra de 100 indivíduos. A proporção de indivíduos dessa amostra seria mantida, ou seja, 30/100 alunos seriam da 1ª série, 40/100 da 2ª série e 30/100 da 3ª série.

Em ML, estratificar seria ao dividir o dataset, considerar a proporção das classes que há no total. Dessa forma, isso evita que, ao aplicar de forma aleatória, possa por acidente acabar tendo mais dados de uma classe no treinamento do que no de teste, por exemplo.

Cross Validation


CV é o conceito geral de dividir o dataset em múltiplas partes e treinar/testar o modelo várias vezes em combinações diferentes, para medir seu desempenho médio. O objetivo é avaliar a capacidade de generalização do modelo, sem depender de uma única divisão entre train/test. O "cross" vem de cruzar o que é train e o que test várias vezes.

K-Fold CV


É o tipo de CV mais comum de se implementar. O dataset é dividido em k folders/"blocos" de mesmo tamanho. A cada iteração k-1 folds são utilizados para o treinamento de um modelo ("zerado"). No final, calcula-se a média das métricas de avaliação dos resultados dos modelos de cada iteração.

kfold_cross_validation.png

Se a divisão for estratificada, chamamos de Stratified K-Fold.

Referências


On this page