Dentro do aprendizado de máquina, o aprendizado supervisionado é uma das formas de se “ensinar”, ou melhor dizendo, treinar um computador a executar determinados comportamentos. Um modelo de aprendizagem supervisionada pode classificar dados, mas para isso é necessário “dizer” ao computador quais são os resultados esperados e como identificá-los
Analogia
Digamos que uma criança está aprendendo o que é uma mesa e o que é um lápis. Tamanho, peso e forma são características bem diferentes entre esses dois objetos, sendo fatores que contribuem para distinguí-los. Contudo, pensando em um lápis e em uma caneta, as características tamanho, peso e forma, por mais que ainda sejam diferentes, não são tão impactantes quanto no primeiro exemplo. Explorar outras características tornaria mais evidente a diferenciação, como o material: percebemos que o lápis geralmente é feito de madeira e grafite, enquanto a caneta pode ser de metal ou plástico, e possui tinta em seu interior.
Note ainda que se considerássemos apenas a característica “material” para distinguir o lápis da mesa, por mais que mesas possam ser de metal, plástico, inox ou vidro, sendo a mesa de madeira e o lápis também poderíamos inferir erroneamente que mesa e lápis são bem parecidos.
Certamente distinguimos estes objetos de maneira bastante automática e subconsciente e não nos atentamos em cada característica individual para processar um objeto, mesmo sendo aptos a elencar algumas características se estas nos forem perguntadas. Já no aprendizado de máquina, as características observáveis são responsáveis pela classificação, sendo algumas características mais esclarecedoras que outras.
Uma característica (feature) pode ser entendida como uma variável que ocupa uma dimensão. O plano cartesiano, por exemplo, é um espaço bidimensional, e admite visualizar a relação entre duas características. Não obstante, modelos de aprendizado de máquina podem conter muitas características, e consequentemente várias dimensões, o que naturalmente torna difícil sua visualização. A fim de simplificar um modelo, existe o processo de redução de dimensionalidade onde features parecidas/redundantes são agrupadas e features pouco relevantes são descartadas do modelo em questão.
Ensinando o Computador
Quanto ao termo “ensinar”, não é como se o computador estivesse suscetível ao processo fisiológico da aprendizagem. Até existem abordagens que se inspiram na estrutura do cérebro – redes neurais artificiais – contudo, em contraste com a programação tradicional onde scripts (i.e., instruções – linhas de código em alguma linguagem de programação e.g.: Python, Java, JavaScript, C#, C++, Go…) processam conjuntos de dados (input) e geram um resultado (output). No aprendizado de máquina supervisionado se fornece input e output, e espera-se que a máquina gere o script que relacione os dados apresentados, de modo que seja capaz de classificar corretamente novos dados utilizando do script gerado.
Como aplicar o aprendizado supervisionado?
Basicamente, devem ser apresentados atributos e rótulos ao computador. Estes servem como parâmetro para treinar o modelo em questão. Para isso, podemos importar modelos prontos no Python, como Random Forest, Support Vector Machine, Redes Neurais e Gradient Boosting.
Considerando o primeiro exemplo, os atributos (features – características) seriam o peso, o tamanho e o material, enquanto os os rótulos (lápis, caneta, mesa) correspondem ao resultado que o algoritmo deve retornar dada a ocorrência de determinado conjunto de características. Em outras palavras, o rótulo retorna o objeto apropriado associado a um conjunto de atributos.
No Python, importamos bibliotecas conforme necessidades do nosso trabalho. Por exemplo, a biblioteca Pandas é utilizada para trabalhar com dados tabulares (arquivos .csv comma separated values – planilhas), e o scikit-learn, que contém vários modelos de aprendizado de máquina, bem como ferramentas para separar seus dados em dados de treino e dados de teste.
Ao usar seus dados em modelos de aprendizado do scikit-learn, a convenção é criar as variáveis:
- X_treino e y_treino a partir dos dados de treino.
- X_teste e y_teste a partir dos dados de teste.
Onde X representa atributos e y representa rótulos. A seguir, alguns fundamentos úteis ao aprendizado de máquina:
- Dados de treino servem para treinamento do modelo, é nesse estágio que o modelo aprende a como se comportar, a como atributos devem ser relacionados com rótulos.
- Dados de teste são a prova real para verificar o quão bem um modelo está desempenhando, utilizados para gerar um relatório de classificação com algumas métricas de avaliação que dizem respeito a precisão, acurácia e recall do modelo.
- Também é importante verificar se o modelo apresenta overfitting, i.e., se o modelo se adequa excessivamente a um dataset, de modo a representar muito bem uma parcela dos dados mas não apresentar boa generalização e consequentemente classifica mal outros dados afins, contudo fora do dataset inicial.
Estudo de caso
A tabela a seguir corresponde a composição de aminoácidos na membrana de bactérias ou fagos. Note que cada linha desta tabela é representada por números de 0 a 19999, estes são os índices, que nos ajudam a trabalhar com a tabela. Cada coluna representada por uma letra, diz respeito a composição de aminoácidos de membrana do organismo que ocupa aquele índice, os valores indicados pelas colunas A, C, D, E, F, G, H, I, K, L, M, N, P, Q, S, T, V, W e Y são atributos. A coluna “phage” é o que indica se o organismo naquele índice é um fago (caso o valor seja 1.0) ou uma bactéria (caso o valor seja 0.0), sendo assim, esta única coluna representa o rótulo.
Tabela 1. Representação de um dataset que informa a constituição dos aminoácidos na membrana de fagos e bactérias. #PraTodosVerem Imagem contendo uma tabela, nas cores branco e cinza claro, com 22 colunas e 11 linhas, onde estão descritos os valores referentes a composição de aminoácidos de membrana dos microrganismos avaliados. Fonte: Dados gerados no Google Colab a partir de exercícios propostos em aula ministrada pelo professor Dr. Frederico Kremer.
Estes dados devem ser divididos em dados de treino e teste (X_treino, y_treino, X_teste e y_teste). Imagine que você possa pegar um estilete e cortar a tabela em linhas na horizontal, totalizando 20000 linhas. Cada linha é distribuída de maneira aleatória entre dados de treino e dados de teste. Uma parte importante é controlar a quantidade de linhas em cada conjunto de dados, as porcentagens a seguir podem variar, desde que a maior parte dos dados vá para o conjunto dados de treino.
Digamos que 70% dos dados vá para o conjunto de treino e o restante (30%) vá para o conjunto de teste. Além disso, você faz um outro corte em ambos conjuntos de dados, dessa vez na vertical, de modo a separar os atributos (X_treino, X_teste) dos rótulos (y_treino, y_teste).
Na fase de treinamento, o modelo aprende a relacionar os valores em X_treino com y_treino, criando equações para descrever esta relação.
Na fase de teste, o modelo usa os valores de X_teste dentro das equações criadas na etapa anterior, obtendo rótulos que chamamos de y_pred (valores previstos pelo modelo durante o teste).
Na etapa de validação, os valores de y_pred são relacionados com y_teste, e a partir daí conseguimos saber o quão bem o modelo está funcionando. Se o desempenho for satisfatório o suficiente, o modelo pode então ser utilizado para prever rótulos a partir de novos dados (desde que estes sejam contemplados pelo modelo). O aprendizado de máquina nada mais é que calibrar o seu algoritmo com as devidas equações matemáticas para que ele seja capaz de distinguir valores, e é este mecanismo que mimetiza o aprendizado
Para saber mais sobre o script em modelos preditivos clique aqui
E quais as aplicações?
No exemplo, o modelo foi capaz de distinguir fagos e bactérias a partir das proteínas de membrana. Você poderia treinar um modelo para, por exemplo, dizer qual o tipo de um vinho a partir de suas características (Brix, pH, acidez, teor alcoólico, concentrações de variados metabólitos…) ou ainda, dizer se há presença de algum microorganismo patogênico numa amostra de alimento (BFScan). Desde que seja possível apresentar atributos e rótulos a um modelo de aprendizado supervisionado, vai da sua criatividade e de quão bem os dados se relacionam para criar seu próprio modelo preditivo. Vale destacar que é necessário validar o modelo proposto, como forma de testar a confiabilidade do modelo.
Autor: Thiago Carvalho
Biotecnologista. Mestrando em Bioinformática, cujo trabalho envolveu o desenvolvimento de uma ferramenta para detectar patógenos em dados NGS com uso de bloom filters e aprendizado de máquina: o BFScan
Cite este artigo:
CARVALHO, T. O que é aprendizado supervisionado? Revista Blog do Profissão Biotec. V. 10, 2023. Disponível em:<>. Acesso em: dd/mm/aaaa.
Referências
GREENER, J. G. et al. A guide to machine learning for biologists. Nature Reviews Molecular Cell Biology, v. 23, n. 1, p. 40–55, jan. 2022.
HONDA, H., FACURE, M., YAOHAO, P. Os três tipos de aprendizado de máquina. LAMFO-UnB. Disponível em: <https://lamfo-unb.github.io/2017/07/27/tres-tipos-am/> Acesso em 13 de Set 2021.
KREMER, F. S. Criando um preditor de proteínas de membrana com Python. Omixdata. Disponível em: <https://medium.com/omixdata/criando-um-preditor-de-prote%C3%ADnas-e-membrana-com-python-8c3c19162ff8> Acesso em 13 de Set 2021.
RODRIGUES, V. B. Métricas de Avaliação: acurácia, precisão, recall… quais as diferenças? Vitor Rodrigues. Disponível em: https://vitorborbarodrigues.medium.com/m%C3%A9tricas-de-avalia%C3%A7%C3%A3o-acur%C3%A1cia-precis%C3%A3o-recall-quais-as-diferen%C3%A7as-c8f05e0a513c> Acesso em 25 de Out 2021.
Fonte da imagem destacada: Pexel.