Validação Cruzada
No capítulo anterior, a divisão treino-teste foi utilizada para avaliação do modelo. Esse método possui duas principais desvantagens:
- Dados de treinamento limitados: apenas parte do conjunto de dados é usada para treinamento, enquanto mais dados geralmente melhoram o desempenho.
- Dependência da divisão: como a divisão é aleatória, os resultados podem variar consideravelmente entre execuções.
Para resolver essas questões, utiliza-se um método alternativo de avaliação chamado validação cruzada.
Primeiro, divida todo o conjunto de dados em 5 partes iguais, conhecidas como folds.
Em seguida, utilize um fold como conjunto de teste e combine os folds restantes para formar o conjunto de treinamento.
Como em qualquer processo de avaliação, o conjunto de treinamento é utilizado para treinar o modelo, enquanto o conjunto de teste é utilizado para medir seu desempenho.
O processo é repetido para que cada partição sirva como conjunto de teste uma vez, enquanto as partições restantes formam o conjunto de treinamento.
Esse processo gera cinco escores de acurácia, um de cada divisão. Calcular a média desses escores fornece o desempenho médio do modelo.
Em Python, o score de validação cruzada pode ser calculado com cross_val_score()
do módulo sklearn.model_selection
.
Embora o exemplo utilize 5 divisões, é possível escolher qualquer número de divisões para a validação cruzada. Por exemplo, pode-se utilizar 10 divisões, alocando 9 para o conjunto de treinamento e 1 para o conjunto de teste. Isso pode ser ajustado por meio do parâmetro cv
na função cross_val_score()
.
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
Fornece resultados mais estáveis e confiáveis do que o método de divisão treino-teste; entretanto, é consideravelmente mais lento, pois exige treinar e avaliar o modelo cinco vezes (ou n vezes, caso seja definido n como número de divisões), em comparação com apenas uma vez na divisão treino-teste.
A validação cruzada é normalmente utilizada em ajuste de hiperparâmetros, onde todo o processo de validação cruzada é executado para cada valor potencial de hiperparâmetro.
Por exemplo, ao determinar o número ideal de vizinhos em um algoritmo k-vizinhos mais próximos, realiza-se uma rodada completa de validação cruzada para cada valor candidato. Esse método garante uma avaliação abrangente de cada configuração de hiperparâmetro em todo o conjunto de dados, permitindo selecionar o valor que consistentemente apresenta o melhor desempenho.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how cross-validation improves model evaluation compared to train-test split?
What are some common use cases for cross-validation in machine learning?
How do I choose the number of folds for cross-validation?
Awesome!
Completion rate improved to 3.13
Validação Cruzada
Deslize para mostrar o menu
No capítulo anterior, a divisão treino-teste foi utilizada para avaliação do modelo. Esse método possui duas principais desvantagens:
- Dados de treinamento limitados: apenas parte do conjunto de dados é usada para treinamento, enquanto mais dados geralmente melhoram o desempenho.
- Dependência da divisão: como a divisão é aleatória, os resultados podem variar consideravelmente entre execuções.
Para resolver essas questões, utiliza-se um método alternativo de avaliação chamado validação cruzada.
Primeiro, divida todo o conjunto de dados em 5 partes iguais, conhecidas como folds.
Em seguida, utilize um fold como conjunto de teste e combine os folds restantes para formar o conjunto de treinamento.
Como em qualquer processo de avaliação, o conjunto de treinamento é utilizado para treinar o modelo, enquanto o conjunto de teste é utilizado para medir seu desempenho.
O processo é repetido para que cada partição sirva como conjunto de teste uma vez, enquanto as partições restantes formam o conjunto de treinamento.
Esse processo gera cinco escores de acurácia, um de cada divisão. Calcular a média desses escores fornece o desempenho médio do modelo.
Em Python, o score de validação cruzada pode ser calculado com cross_val_score()
do módulo sklearn.model_selection
.
Embora o exemplo utilize 5 divisões, é possível escolher qualquer número de divisões para a validação cruzada. Por exemplo, pode-se utilizar 10 divisões, alocando 9 para o conjunto de treinamento e 1 para o conjunto de teste. Isso pode ser ajustado por meio do parâmetro cv
na função cross_val_score()
.
1234567891011import pandas as pd from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/a65bbc96-309e-4df9-a790-a1eb8c815a1c/penguins_pipelined.csv') # Assign X, y variables (X is already preprocessed and y is already encoded) X, y = df.drop('species', axis=1), df['species'] # Print the cross-val scores and the mean for KNeighborsClassifier with 5 neighbors scores = cross_val_score(KNeighborsClassifier(), X, y) print(scores) print(scores.mean())
Fornece resultados mais estáveis e confiáveis do que o método de divisão treino-teste; entretanto, é consideravelmente mais lento, pois exige treinar e avaliar o modelo cinco vezes (ou n vezes, caso seja definido n como número de divisões), em comparação com apenas uma vez na divisão treino-teste.
A validação cruzada é normalmente utilizada em ajuste de hiperparâmetros, onde todo o processo de validação cruzada é executado para cada valor potencial de hiperparâmetro.
Por exemplo, ao determinar o número ideal de vizinhos em um algoritmo k-vizinhos mais próximos, realiza-se uma rodada completa de validação cruzada para cada valor candidato. Esse método garante uma avaliação abrangente de cada configuração de hiperparâmetro em todo o conjunto de dados, permitindo selecionar o valor que consistentemente apresenta o melhor desempenho.
Obrigado pelo seu feedback!