Executando verificação de segurança...
2

Cross Validate em modelos de Machine Learning

• Olá TabNewers, e TabCoders 😄, sou o Ricardo Castle.

• Hoje, vamos falar um pouco sobre validação cruzada em machine learning.

• É comum desenvolvermos os nossos modelos usando os métodos tradicionais "train_test_split" para fazer a segregação de dados de treino e teste para os nossos modelos.

• Porém, há desvantagens nesta abordagem, a primeira é que estaremos dependentes da aleatoriedade no momento da segregação dos nossos dados. O que torna o nosso modelo não muito eficiente.

• Para solucionarmos isso, podemos setar um SEED, diretamente no método do "numpy", que esta dentro de random.seed(). Porém ainda assim, estaríamos dependentes da aleatoriedade do SEED.

• Uma alternativa mais eficiente é usarmos o método da validação cruzada. Mas antes, vamos analisar o seguinte:

  • Imagine que temos um aluno que na primeira prova teve nota 2. Muitas vezes não é que o aluno não compreendeu a matéria, talvez ele esteve com problemas na família, no relacionamento e a sua cabeça no momento da prova este em outro lugar. Para ter a certeza ele fará mais duas provas, na segunda terá 4 e na terceira terá 10. Para sabermos o nível de desempenho do aluno teremos que encontrar a média de todas as notas, neste caso teremos (2+4+10)/3, na qual teremos: 5,3. Logo, com este dado saberemos como lidar com este aluno.

  • Levando esta analogia no nosso modelo, ao invés de realizarmos um e único teste com uma e única segregação dos dados e que será de maneira aleatória. Podemos fazer vários testes e treinos de maneira cruzada, eliminando assim a aleatoriedade. E no final só precisaremos encontrar a média de todos os treinos e testes feitos.

• COMO ESTE CRUZAMENTO ACONTECE?

  • Geralmente, definimos a quantidade de pedaços dos dados que serão separados e das vezes que os mesmos serão treinados e testados.

• Exemplo: Temos 1000 dados no nosso DataSet, 700 para treino e 300 para teste.

• Aplicando a validação cruzada usamos o seguinte:

pedaços a serem separados = 4 ( que também será o número de vezes que serão repetidos os treinos e testes )

• A cada repetição, ele pega os dados de maneira cruzada.

• Pegou, até aqui pessoal ? 😄. Bora continuar. Segura só mais um pouco.

• IMPLEMENTANDO EM PYTHON,

  • Para isso, usaremos a biblioteca Sklearn, na qual tem uma feature para a validação cruzada, que se chama cross_validade().

° Implementando:

from sklearn.model_selection import cross_validate

model = DecisionTreeClassifier()
results = cross_validate(model, x, y, cv = 4)
print(results['test_score'])

• Está é a implementação do método cross_validate. Ele recebe o estimador que estivermos usando, depois as nossas features(x) e a label(y).

• Porém ainda há um problema neste cross_validate, que é o valor do cv ( quantidade de pedaços a separar os dados e as vezes de repetição do treino e teste ).

• Mas, este pode ser um assunto, para um próximo tutorial. O que achou do conteúdo ?

Carregando publicação patrocinada...
1

Opa ric4rdocodes, um post bem interessante 🥰

Eu criei um post sobre redes neurais também, mas não é ensinando algo, mas sim procurando idéias e tentando ajudar da minha maneira 😌

Que tal explorarmos o SIMPLES?

Um ponto interessante a respeito de validações é que evitam muitas "seeds", permitido mais liberdade para testes, sem contar que é uma "metodologia" que funciona muito bem em conjunto com algoritmo genético.

1