Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Validação Cruzada | Modelagem
Introdução ao ML com Scikit-learn

bookValidaçã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:

  1. Dados de treinamento limitados: apenas parte do conjunto de dados é usada para treinamento, enquanto mais dados geralmente melhoram o desempenho.
  2. 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.

Note
Nota

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().

1234567891011
import 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())
copy

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.

question mark

Por que a validação cruzada pode ser preferida em relação à divisão treino-teste para avaliar o desempenho de um modelo de aprendizado de máquina?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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

bookValidaçã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:

  1. Dados de treinamento limitados: apenas parte do conjunto de dados é usada para treinamento, enquanto mais dados geralmente melhoram o desempenho.
  2. 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.

Note
Nota

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().

1234567891011
import 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())
copy

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.

question mark

Por que a validação cruzada pode ser preferida em relação à divisão treino-teste para avaliar o desempenho de um modelo de aprendizado de máquina?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
some-alt