Conjuntos de treinamento e teste em machine learning
Dados para treinamento e teste em machine learning são requisitos essenciais. Durante o treinamento de um modelo, ele é exposto a dados e ajusta seus parâmetros gradativamente. Porém, para avaliar seu desempenho, é fundamental expô-lo a dados inéditos.
Por causa dessa dupla necessidade, treinamento e teste, um conjunto de dados (dataset) é normalmente dividido em um conjunto de treinamento e um de teste.
Conjunto de Treinamento
Um conjunto de treinamento é um subconjunto de dados usado para treinar um modelo de machine learning. Geralmente, ele é formado pela maior parte dos dados de um dataset. Seus dados são aqueles a partir dos quais o modelo aprende padrões e relações. Durante o treinamento, os parâmetros do modelo (por exemplo, os pesos em uma rede neural) são ajustados para minimizar o erro entre suas previsões e os rótulos verdadeiros no conjunto de treinamento.
Conjunto de Teste
Um conjunto de teste é um subconjunto de dados completamente separado do conjunto de treinamento. Ele é usado para avaliar o desempenho do modelo treinado com dados inéditos. As previsões do modelo no conjunto de teste são comparadas com os rótulos verdadeiros para estimar sua precisão e capacidade de generalização. O conjunto de teste deve ser representativo dos dados que o modelo encontrará na fase de produção. Contudo, eles nunca devem ser usados durante o treinamento para evitar overfitting.
Overfitting é um problema comum em machine learning. Ele ocorre quando um modelo aprende as flutuações aleatórias e o ruído nos dados de treinamento em vez de aprender seus padrões. Um modelo com overfitting se ajusta aos dados de treinamento quase perfeitamente, mas falha em generalizar bem para dados novos. O uso de um conjunto de teste com dados novos permite verificar se um modelo apresenta overfitting.
Por que os conjuntos de treinamento e teste em machine learning devem ser separados?
Uma das principais razões para ter dados de treinamento e teste em machine learning como subconjuntos separados é verificar como o modelo se comportará diante de dados inéditos. A presença de um conjunto de teste com dados diferentes auxilia na avaliação de overfitting. O conjunto de teste com dados inéditos oferece uma medida objetiva da generalizabilidade e eficácia do modelo no mundo real.
Qual é o tamanho ideal dos conjuntos de treinamento e teste?
Não existe uma regra. Artigos em machine learning usam geralmente um conjunto de treinamento com 70% dos dados e o restante para teste. Mas esse valor pode ser variado. Não é incomum encontrar separações em 80/20, 75/25 ou ainda 65/35. O maior subconjunto é sempre o de treinamento.
Também é comum encontrar separações entre conjuntos de teste e de validação. Nesses casos, cada um deles é formado por cerca de 15% dos dados e os 70% restantes são usados para treinamento.
O conjunto de validação é um subconjunto de dados separado do conjunto de treinamento e do conjunto de teste. Ele costuma ser usado para avaliar o desempenho do modelo durante o processo de treinamento para realizar ajustes de hiperparâmetros.
Como separar os dados em conjunto de treinamento e teste?
Para separar os dados em conjuntos de treinamento e teste em machine learning, é fundamental garantir que eles não sejam desequilibrados nos diferentes grupos. Por exemplo, se você tem 2 classes que serão classificadas em um modelo, é preciso garantir que os dois conjuntos tenham dados suficientes para ambas. Uma recomendação para garantir uma boa separação é usar um algoritmo de separação como o train_test_split da biblioteca scikit-learn (exemplo abaixo) ou realizar a randomização dos dados antes de dividi-los.
# exemplo de separação de dados usando scikit-learn
from sklearn.model_selection import train_test_split
# conjuntos de treinamento e teste para um modelo com aprendizagem supervisionada
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
Veja também:
O que é machine learning (aprendizado de máquina)?
Como machine learning (aprendizado de máquina) funciona?
Como machine learning (aprendizado de máquina) aprende?
Como implementar um modelo de machine learning?
Como escolher um bom modelo de machine learning?
Classificação e regressão em machine learning
O que é conjunto de dados (dataset) em machine learning?
Onde conseguir conjuntos de dados para machine learning?
Salve localmente conjuntos de dados para machine learning
Pré-processamento de dados em machine learning
Regressão Linear e Machine Learning
Conjuntos de treinamento e teste em machine learning
Função de perda em machine learning
Scikit-learn para machine learning
Matrizes de Confusão em Machine Learning
Floresta aleatória com Scikit-learn
Detecção de anomalias com Isolation Forest
Encontrou algum erro ou quer fazer uma sugestão? Por favor, entre em contato usando nosso formulário de contatos.