Setembro 24, 2019

Dados de Treino e Teste

Uma das bases do machine learning está nos dados históricos. Conforme abordamos no artigo O que é Machine Learning (Aprendizado de Máquina), os algoritmos de machine learning precisam aprender, e para isso quanto mais dados forem usados, melhor ficará o modelo.

Big Data

É neste momento que o famoso Big Data dá uma de suas importantes contribuições para o aprendizado de máquina. Uma de suas definições traz a ideia de “informação em alto volume”, ou seja, dados históricos em grande quantidade.

muitos dados

Pré-processamento e aplicação dos dados

Estes dados serão devidamente preparados, passando por alguns processos de limpeza e ajustes, que são o pré-processamento e a seleção de variáveis, para então estarem aptos a serem apresentados a um algoritmo de machine learning, que realizará as previsões, verificando o quão distante o resultado está do valor correto, reajustando os parâmetros utilizados na previsão afim de obter um valor mais adequado. Esse processo se repetirá até que o erro entre os valores reais e os valores previstos pare de diminuir a cada novo ajuste.

Separação dos dados históricos

Poderíamos utilizar a totalidade dos dados históricos no processo acima, criando assim um modelo de machine learning pronto para receber novos dados e realizar suas previsões, porém desta forma não saberíamos o real desempenho deste modelo. O algoritmo poderia aprender perfeitamente a relação existentes nos dados apresentados e com isso criar um modelo que sofre de Overfitting e só descobriríamos esse problema após as previsões desastrosas geradas por este modelo.

Desta forma, para medir o desempenho real do modelo criado, é necessário que realizemos testes com ele, utilizando dados diferentes dos que foram apresentados em sua criação.

Com esta finalidade, após a realização do pré-processamento, iremos separar a totalidade dos dados históricos existentes em dois grupos, sendo o primeiro responsável pelo aprendizado do modelo, e o segundo por realizar os testes.

Dados de Treino

Conforme podemos imaginar, dados de treino são os dados que serão apresentados ao algoritmo de machine learning para criação do modelo. Estes dados costumam representar cerca de 70% da totalidade dos dados.

Dados de Teste

Serão apresentados ao modelo após a sua criação, simulando previsões reais que o modelo realizará, permitindo assim que o desempenho real seja verificado. Estes dados costumam representar cerca de 30% da totalidade dos dados.

Aleatoriedade na separação dos dados

É importante observar que a separação dos dados em treino e teste é uma etapa essencial, e que caso ela seja realizada de maneira errada, poderá resultar em problemas no modelo.

Imagine que você tenha dados sobre vinte mil carros, com algumas características e o valor deles. Você decide que irá utilizar quinze mil amostras para treinar seu modelo, e para isso seleciona as quinze mil primeiras linhas, deixando a últimas cinco mil para teste. Porém estas linhas estavam organizadas em ordem alfabética com base nos nomes dos carros. Percebem o problema? Alguns modelos de carros específicos estarão presentes apenas nos dados de treino, e outros apenas nos dados de teste.

Esta situação levará a um modelo deficiente, que não aprendeu com todos os tipos de dados que poderia e que também não será testado de maneira correta. Afinal, nos dados de teste haverão apenas modelos de carros que começam, digamos, com as letras S, T, U, V, X, Y, Z (final do alfabeto).

A solução para este problema está na aleatoriedade. Selecionando os dados de maneira aleatória não haverá padrão algum no momento da divisão dos dados, e cada observação terá a mesma probabilidade de ser selecionada.

Tanto a linguagem de programação R quanto o Python já possuem funções prontas para esta finalidade, tornando esse processo extremamente simples e confiável. Na aula 12 de nosso Curso de R para Machine learning gratuito realizamos uma separação de dados em treino e teste na prática. Basta clicar no link do curso e acompanhar. Em Python, fizemos isso nesta aula.