ÍNDICE DE CONTEÚDO
- Introdução ao Machine Learning: Conceitos Básicos
- Tarefas do Aprendizado de Máquina
- Datasets: O que são e para que servem no Aprendizado de Máquina
- Explorando os Datasets — Parte 1
- Estatística Descritiva — Parte 1
- Estatística Descritiva – Parte 2
- Pré-Processamento Dos Dados
- Limpeza Dos Dados
- Transformação De Dados
- Classificação X Regressão
- O Algoritmo Dos K Vizinhos Mais Próximos
- Regressão Linear – Parte 1
Nesse artigo vamos falar um pouco sobre com ajustar os dados para serem usados em um algoritmo de Machine Learning. Existem muitos aspectos envolvendo essa primeira fase do processo de aprendizado e eles são muito importantes! Os resultados que obteremos com os algoritmos dependem muito da qualidade dos dados e essa qualidade é garantida no pré-processamento. Vamos entender melhor sobre o assunto então?
Introdução
Como já estudamos, os datasets possuem característica, dimensões e formatos. Um dataset pode ser relativo a um problema binário, multiclasse ou multirrótulo, pode ter muitas ou poucas instâncias, assim como muitos ou poucos atributos. Os atributos também podem ser independentes ou dependentes. Atributos (entrada ou saída) independentes não tem relação alguma com outros atributos. Já atributos dependentes são atributos que tem relação com outros e, inclusive, podem ser melhor aprendidos devido a isso. Por exemplo, geralmente existe uma relação entre um sintoma de doença e um efeito colateral de um remédio.
É fato que para termos melhores modelos, precisamos de muitos dados, mas os dados precisam ter qualidade. No momento de coleta e organização dos dados, erros podem acontecer, uma informação pode ter sido coletada errado devido a falta de concentração de alguém, ou um sensor não captou um sinal, ou uma instância deixou de ser rotulada, ou foi rotulada erroneamente, enfim, são diversas as razões. Então, quando pegamos um dataset para trabalhar, precisamos moldá-los para fiquem em um estado de utilização adequado.
Ruídos, imperfeições, valores incorretos, valores inconsistentes, valores duplicados, valores ausentes são alguns dos problemas que você encontrará nesta fase. Dessa forma, técnicas precisam ser aplicadas para eliminar e minimizar esses problemas. Com isso conseguimos facilitar o processo de treinamento (aprendizado) de um algoritmo, reduzir complexidade, construir melhores modelos, facilitar o ajuste de parâmetros, e também melhorar a interpretação dos resultados. Algumas dessas técnicas são: eliminação, transformação, amostragem, limpeza, desbalanceamento, adequação integração, redução, seleção e relevância.
Eliminando atributos a olho nu
Quais atributos do dataset são realmente relevantes? Quais deles realmente contribuem para o aprendizado? Essas são perguntas que você deve se fazer neste momento. Muitas vezes você não saberá essas respostas e será necessário consultar um especialista do domínio. Imagine retirar um atributo de uma sequência de DNA do dataset. Qual o estrago que isso pode causar? Então, veja, cada problema é um problema e deve ser tratado de forma diferente, mas desde que você conheça as técnicas, ficará menos complicado.
Portanto, se o atributo não contribui para absolutamente nada no aprendizado, então ele é totalmente desnecessário, irrelevante, e pode ser retirado. Exemplo: se todas as instâncias de um dataset de carros possui o valor “branco” para cor de carro. Bom, não faz o menor sentido você deixar o atributo cor de carro, pois você já sabe que todos os carros têm a mesma cor, esse tipo de informação não vai te trazer nada de novo e não vai agregar nada ao modelo.
Integração
Existirão situações em que você receberá vários arquivos diferentes do mesmo problema de dados. Neste caso é necessário que você integre tudo em um único arquivo. Como vimos lá nos primeiros artigos, o dataset Flags vem em dois arquivos diferentes que devemos manipular para transformar em apenas um.
No entanto, alguns problemas podem vir a ocorrer, por exemplo, informações podem ser duplicadas ou perdidas. Algo a que se deve prestar muita atenção antes de começar a integração é a verificação de atributos nomeados diferentemente, isto é, colunas com o mesmo conteúdo mas o nome diferente. Exemplificando, pode havar um atributo “nome” em um arquivo, mas no outro arquivo esse atributo é denominado “nome completo”, no entanto o conteúdo é exatamente o mesmo. Por este motivo, é preciso consultar a descrição dos atributos de cada arquivo e fazer a relação entre eles. Se isto não for fornecido, então um mapeamento detalhado deve ser feito.
Algo que ajuda a integrar os diferentes arquivos em um único é um atributo ID, como ocorre em bancos de dados tradicionais. Isso inclusive ajuda a eliminar instâncias repetidas.
Amostragem
Existe um termo muito comum na área denominado MALDIÇÃO DA DIMENSIONALIDADE. Um número muito alto de atributos ou instâncias pode comprometer o desempenho de um algoritmo. Além disso, é preciso ter um grande poder de processamento e memória para conseguir treinar um modelo com tantos dados. Portanto: mais dados = maior acurácia = menor eficiência
Neste caso, é possível trabalhar com uma amostra dos dados, que gerlamente leva ao mesmo desempenho obtido com o conjunto original. Essa amostra deve ser representativa, isto é, as instâncias e atributos devem representar adequadamente o problema que se está tratando com aqueles dados. Se diferentes amostras não representativas forem usadas, então diferentes modelos serão obtidos. Suponha que um problema é composto por três classes: azul, vermelho e branco. Na amostragem realizada, apenas instâncias das classes azul e vermelha foram selecionadas. Pergunto: o modelo será capaz de aprender algo sobre a classe branco? A resposta, acredito que você saiba. O modelo só aprende aquilo que lhe é ensinado.
Resumindo: a ideia do uso de amostragem é permitir encontrar conclusões do todo a partir de uma parte. Para que nosso aprendizado sobre esse tópico seja melhor, e também porque não caberá tudo neste artigo, vou apenas mencionar aqui os tipos de amostragem e, em outro artigo, entrarei em detalhes teóricos/práticos. São eles: aleatória simples, estratificada, progressiva, sistemática, por grupos (ou conglomerados), reservatório, conveniência.
Desbalanceamento
Este tópico é muito discutido em tarefas de classificação. Aposto que muitos aqui estão pensando que precisam fazer o balanceamento do carro. Bom, na teoria, o conceito é parecido. No caso do carro, as rodas e os pneus precisam estar definitivamente equilibrados para evitar problemas. No caso dos dados, esse equilibrio está entre o número de instâncias e as classes. Exemplificando: suponha que em um dataset de uma loja, os clientes são rotulados (classificados) como pagantes no prazo e pagantes fora do prazo. Aqueles que pagam dentro do prazo ganham descontos, enquanto que é cobrada multa daqueles que pagam depois do prazo. Suponha que nesse dataset 30% dos clientes pagam dentro do prazo, e os outros 70% não. Nesse caso, temos uma classe majoritária (fora do prazo) e outra minoritária (dentro do prazo). Se fosse 50%-50%, poderíamos dizer que há um equilíbrio entre a quantidade de instâncias e as classes do problema, mas este não é o caso.
Em alguns problemas de classificação, o desbalanceamento das classes pode vir a prejudicar o aprendizado. Por exemplo, menos de 1% dos dados pertencem de fato à classe todo o restante não foi classificado na classe. Como o modelo vai aprender só com esses dados? Se um dataset muito desbalanceado for usado em um modelo, o algoritmo tenderá a favorecer a classificação de novos dados na classe majoritária, o que leva ao overfitting, isto é, ao superaprendizado. Aparentemente o modelo aprendeu, mas no fundo, ele apenas está classificando todo mundo na mesma classe, portanto, é um aprendizado falso.
Há algumas formas de minimizar este problema: 1) gerar novos dados pelo mesmo processo que gerou o dataset original, 2) acrescentar instâncias às classes minoritárias, 3) eliminar instâncias das classes majoritárias. Quando aumentamos o número de instâncias de maneira artificial, podemos correr o risco de gerar instâncias que representarão características que nunca existirão de fato, e isso pode ser muito ruim para o modelo. Em contrapartida, se retirarmos instâncias, poderemos estar perdendo informações relevantes e, talvez até essenciais, ao processo de aprendizado.
Não existe uma fórmula mágica para lidar com este problema, mas inúmeros artigos científicos estão disponíveis na Internet com diferentes propostas de métodos para tentar resolver esta questão.
Conclusão
Obrigada por ler até aqui. No próximo artigo vamos ver como limpar os dados, depois como transformá-los e, por fim, como reduzir dimensionalidade. Ah sim, não vamos nos esquecer também da amostragem que terá um artigo específico. Caso ainda não tenha o R/Python instalado, sugiro que o faça! Vamos precisar deles e também de planilhas eletrônicas. Te vejo já já!
Sugestão de leitura
- A broad review on class imbalance learning techniques
- A Comprehensive Review on the Issue of Class Imbalance in Predictive Modelling
- A Review on Imbalanced Data Classification Techniques
- Class Imbalance Problems in Machine Learning: A Review of Methods And Future Challenges
- Feature dimensionality reduction: a review
- Machine Learning for Hypothesis Space and Inductive Bias: A Review
- A review: Data pre-processing and data augmentation techniques
- A review and assessment of importance sampling methods for reliability analysis
- Stability of feature selection algorithm: A review