Na ciência da computação e na matemática podemos entender um “algoritmo” como sendo uma sequência de ações que devem ser executadas para que determinado problema seja resolvido.
Este problema pode ser muito simples, como somar cinco mais cinco, ou extremamente complexo, como vencer uma partida de xadrez contra o melhor jogador do mundo.
Talvez a maneira mais fácil de entender um algoritmo seja através de exemplos. Vamos supor que você precise ensinar seu novo robô a ir da poltrona de sua sala até seu banheiro. Uma ideia de algoritmo que resolveria este problema seria o seguinte:
- Levante da poltrona
- De 3 passos em frente
- Vire à direita
- De 4 passos em frente
- Vire à esquerda
- Abra a porta
- Entre
Esse seria um simples algoritmo, com apenas sete ações a serem executadas e sem nenhuma condição, ou seja, sua forma de execução e resultado serão sempre os mesmos (desde que o robô esteja sentado na poltrona e não aconteça nenhuma modificação no ambiente).
Mas você poderia ainda tornar este algoritmo mais eficiente. Imagine que alguém coloque uma cadeira bem no caminho do robô após ele levantar. Esta situação não está prevista no algoritmo, portanto ele será interrompido antes de ser finalizado.
Para resolver este problema, poderíamos inserir condições em cada etapa que envolva um deslocamento, indicando que, em caso de obstáculo, o mesmo deverá ser contornado.
Algoritmo de machine learning
Os algoritmos de machine learning seguem esta mesma lógica, alguns possuem regras mais complexas, e outros regras mais simples. Nesse momento, o importante é entendermos que ações serão executadas e que condições serão verificadas.
Basicamente, esse processo de verificação e execução se repetirá muitas vezes até que determinados critérios sejam atendidos.
Conforme lemos no artigo O que é Machine Learning (Aprendizado de Máquina), são os algoritmos de machine learning que possibilitam o aprendizado. Através das regras já existentes nesses algoritmos, os cálculos serão executados com os dados apresentados (dados de treino).
O objetivo é a previsão dos valores ainda não apresentados ao algoritmo, e para isso as regras existentes farão com que o algoritmo comece suas previsões nos dados que já foram apresentados e verifique o quão distante o resultado está do valor correto, reajustando os parâmetros utilizados na previsão para obter um valor mais próximo do correto.
Esse processo se repetirá até que o erro entre os valores reais e os valores previstos pare de diminuir a cada novo ajuste. Nesse momento, teremos uma equação final que será capaz de prever valores para dados ainda não apresentados. Todo este processo terá seu entendimento simplificado quando mostrarmos alguns destes algoritmos em ação.
Modelo de machine learning
A equação final é o que chamamos de modelo de machine learning. Ou seja, o modelo não é o algoritmo. Nele não temos as regras que foram utilizadas e, portanto, os únicos cálculos a serem realizados pelo modelo são as previsões finais a partir dos dados que inserimos.
Assim percebemos que, na utilização de um algoritmo de machine learning, precisamos de muitos dados, para que todos estes dados sejam considerados na criação da equação final e ela seja generalizável, ou seja, possa ser utilizada para novos conjuntos de dados e apresente bons resultados.
Na prática, acabamos separando os dados históricos que temos em ao menos dois grupos: dados de treino e dados de teste. Utilizamos os dados de treino no algoritmo para criação do modelo e então apresentamos os dados de teste ao modelo para que este nos retorne as devidas previsões.
Assim, iremos comparar as previsões apresentadas pelo modelo com os valores reais dos dados de teste, lembrando que o algoritmo não foi apresentado a estes dados no momento da criação do modelo, e então poderemos medir o desempenho desse modelo antes de utilizá-lo efetivamente.
Algoritmos matemáticos
É fundamental entendermos que, antes de serem algoritmos de computadores, os algoritmos de machine learning são algoritmos matemáticos. Isso significa dizer que poderíamos realizar as previsões que um modelo de machine learning faz apenas com papel e lápis, não fosse o problema do tempo.
Considerando a complexidade e a quantidade dos cálculos, levaríamos um bom tempo para realizar cada um, milhares ou até milhões de anos em alguns casos. Por isso, os computadores entram em cena para executar os processos mais rapidamente.
Este entendimento é importante para percebermos que podemos criar nossos próprios algoritmos de machine learning, ou mesmo modificar os já existentes, e implementá-los na linguagem de programação de nossa preferência.
Mas fique tranquilo, essa possibilidade é só para aqueles que quiserem, a partir de uma especialização em matemática e programação.
Os algoritmos já existentes nos atendem muito bem, e com um conhecimento básico sobre eles já é possível obter grandes resultados. Na prática, com uma linha de código em Python ou linguagem R, por exemplo, já poderemos executar algoritmos sofisticados.
Os diferentes algoritmos de machine learning
Existem muitos algoritmos de machine learning, e talvez uma das principais qualidades de um cientista de dados seja conhecer bem cada um deles. Cada algoritmo tem suas próprias características, vantagens e desvantagens dependendo da situação. Seguem alguns exemplos de algoritmos com uma rápida descrição:
Regressão Linear
- Na Regressão Linear o objetivo é criar uma reta que melhor se ajuste aos dados, e para tanto, os coeficientes da reta precisam ser escolhidos, para depois calcular o erro da reta em relação aos dados. Muda-se então o valor destes coeficientes para se criar uma nova reta e calcula-se o erro novamente com essa nova reta e o processo se repete até que o modelo criado seja o melhor possível. Neste vídeo, criamos uma aula para mostrar o passo a passo de como isso acontece usando matemática (alguns conceitos importantes no mundo do machine learning como “gradiente descendente” são apresentados).
Problemas de classificação
Além de problemas de regressão como acabamos de ver, existem os problemas de classificação.
Em problemas de classificação, geralmente teremos como resultado de saída um valor entre 0 e 1. Se o valor estiver próximo de 1, podemos considerar que a amostra pertence a uma determinada classe (como aprovado, por exemplo), e se o valor estiver próximo de zero, a amostra pertence à outra classe. Além de aprovado ou reprovado, as classes podem ser qualquer definição, como doente ou saudável, forte ou fraco, etc.
Geralmente é estabelecido um limite a partir do qual a amostra será classificada em cada uma das classes. Por exemplo: se o valor de saída for superior a 0.5 pertence à classe A, caso contrário, pertence à classe B.
Confira abaixo alguns algoritmos utilizados para problemas de classificação:
Regressão Logística
- O mesmo processo apresentado anteriormente na regressão linear é realizado para a regressão logística, com a diferença que a função Sigmóide será aplicada à equação da regressão linear, para permitir que o resultado de saída fique entre 0 e 1.
KNN (K-Nearest Neighbors)
- O KNN, que em português chamamos de k vizinhos mais próximos, tem o objetivo de calcular a distância entre o dado que queremos prever e seus vizinhos mais próximos (nós definimos quantos vizinhos serão considerados), e o resultado da previsão será igual à classe que da maioria desses vizinhos mais próximos.
Decision Trees
- As Decision Trees, ou Árvores de Decisão, são algoritmos que estabelecem regras para tomada de decisão, criando uma espécie de fluxograma. Os dados de treino serão analisados a fim de encontrar as melhores regras que os descrevem, que posteriormente serão utilizadas para previsão de novos dados.
Não se preocupe se essas explicações sobre os algoritmos ficaram muito vagas. Se você quer conhecer mais sobre os algoritmos, e também ver seu funcionamento na prática, tanto nos cálculos quanto na programação, basta acompanhar nossos cursos completos de machine learning, desde o nível iniciante até avançado.
Lista de algoritmos de machine learning mais populares:
- Regressão linear
- Regressão logística
- Ridge regression
- Lasso regression
- Elastic net
- KNN
- Naive Bayes
- Decision trees
- K means
- Random Forest
- Extratrees
- Adaboost
- Gradient Boosting
- Bagging
- SVM
Observação: ensinamos e utilizamos na prática todos esses algoritmos em nossos cursos.
Como programar machine learning
Podemos utilizar Python, Linguagem R, ou outras linguagens de programação para trabalhar com machine learning. Criamos aqui alguns tutoriais gratuitos super práticos e didáticos para você dominar os conceitos essenciais de programação para machine learning, começando do zero:
- Python para Iniciantes
- Python para Machine Learning e Análise de Dados
- Linguagem R para iniciantes
- Linguagem R para Machine Learning e Análise de Dados
Como estudar machine learning?
Focando principalmente na simplicidade e didática, montamos o curso Introdução a Machine Learning, totalmente gratuito, que irá fornecer os primeiros passos para realmente compreender e dominar esta fascinante tecnologia.
Você pode conhecer todos os nossos cursos nessa página. Aproveite, pois dificilmente você irá encontrar um material tão detalhado e explicativo.
Com o crescimento do machine learning, o mercado está cada vez mais necessitando de bons profissionais que dominem esses assuntos. Esta é a melhor hora para correr na frente e se destacar.
Qualquer pessoa pode aprender machine learning, não é algo de outro mundo. Iremos mostrar todos os detalhes para você aprender se divertindo!
Leia também: