Os algoritmos de Machine Learning utilizam de dados fornecidos para alcançarem um objetivo proposto, quanto maior a quantidade e a qualidade dos dados importados, mais correto e preciso será o resultado.
O que é Machine Learning?
Machine Learn é um subconjunto da Inteligência Artificial, conhecido como Aprendizado de Máquina tem o objetivo treinar um algoritmo com base em um conjunto de dados para alcançar um resultado, como para reconhecimento de algo desejado ou identificar um padrão. É capaz de aprender e melhorar conforme os dados fornecidos sem necessariamente uma instrução direta.

Principais tipos de Machine Learning
Existem algumas formas e tratativas para chegar no resultado esperado e as principais delas são:

1 – Aprendizado Supervisionado
O Aprendizado Supervisionado necessita da intervenção humana para que o algoritmo possa funcionar da melhor forma possível.

Após receber os dados, será feita uma preparação, que é a parte manual, onde haverá a Limpeza que consiste em remover os dados duplicados, remover dados que sejam irrelevantes para o objeto e dados vazios, por exemplo. A Rotulação que serve para dizer o que são aqueles dados, nesse exemplo o que é Carro é o que é Ônibus e por fim a divisão dos dados em Treino e Teste, essa etapa é importante para que após o treinamento possamos utilizar os dados de teste para medir o desempenho do algoritmo.
Divisão dos dados:
- Dados de Treino: são usados para ensinar o modelo.
- Dados de Teste: são usados para avaliar o desempenho do modelo.
- Divisão de dados aleatória: Divide os dados aleatoriamente entre treino e teste.
- Divisão de dados estratificada: Divide proporcionalmente os dados entre treino e teste.
Com os dados preparados, divididos em Treino e Teste e devidamente rotulados, são apresentados para o Algoritmo, que após processar os Dados de Treino gera o Modelo. O Modelo receberá os Dados de Teste na Predição para que o desempenho do resultado possa ser medido.
Medição do desempenho:
Como foram identificados quais dados são corretos no processo de rotulação, os Resultados gerados na Predição pelo Modelo são comparados com os Dados de Teste, a quantidade de acertos do algoritmo é a porcentagem de Acurácia de quão bom está o Modelo.
Por Exemplo:
Dados de Teste esperados: [ônibus, carro, ônibus]
Dados previstos pelo Modelo: [ônibus, carro, carro]
Podemos dizer que a Acurácia é de 66.67% pois de 100%, três valores, acertou dois e errou um.
Principais algoritmos:
- Regressão linear
- Regressão polinomial
- Vizinhos mais próximos exatos
- Naive Bayes
- Árvores de decisão
2 – Aprendizado Não Supervisionado
Aprendizado não supervisionado não necessita da intervenção humana, os dados não são rotulados como no Aprendizado Supervisionado, o próprio algoritmo interpreta e processa os dados.

Não há uma forma de medir o desempenho, portanto o que o Algoritmo irá fazer, será tentar procurar padrões e classificá-los em grupos. A quantidade de grupos pode ser informada pelo analista.
Principais algoritmos:
- Difundido significa
- Criação de cluster k-means
- Clustering hierárquico
- Mínimos quadrados parciais
3 – Aprendizado Semi-Supervisionado
Aprendizado Semi-Supervisionado ocorre quando uma parte dos dados é tratada por pessoas, alguns dados apenas serão rotulados, e o restante interpretado pelo algoritmo, uma junção do Aprendizado Supervisionado e do Não-Supervisionado.

4 – Aprendizado por Reforço
Aprendizado por reforço é um aprendizado por tentativa e erro onde o algoritmo interage com o ambiente ao seu redor recebendo recompensas ou punições com o objetivo de conseguir a maior recompensa possível.
O aprendizado é ao longo prazo, onde o algoritmo vai aprendendo com os erros e acertos e os dados de treino que o algoritmo recebe dependem das decisões que o algoritmo toma no ambiente em que foi inserido.

Um exemplo pode ser uma partida de xadrez:
O Agente, é o personagem que está no jogo, no caso será um dos jogadores controlados pelo algoritmo. O Ambiente é o jogo de xadrez em si. O Estado é a posição das peças que vão mudando conforme as Ações que o Agente tomar, cada Ação, pode resultar ou não em uma Recompensa, sendo ela positiva ou negativa e gerar um novo Estado que são as novas posições das peças.
Cálculo de Recompensas
As recompensas recebidas pelo agente, podem ser positivas ou negativas, pode-se configurar por exemplo, toda vez que o algoritmo perder uma peça, recebe uma penalidade, toda vez que ele roubar uma peça do adversário, recebe uma recompensa e toda vez que ele simplesmente se movimentar não recebe nada.
Por exemplo, toda vez que o algoritmo roubar um peão, recebe uma recompensa de um ponto e toda vez que roubar uma rainha recebe uma recompensa de cinco pontos, a partir dali o algoritmo tem que aprender com tentativa e erro quais são as melhores jogadas, que entreguem as melhores ações para alcançar a maior pontuação.
Não necessariamente eliminar a rainha do adversário, que vale mais pontos, pode ser a melhor escolha, a melhor escolha pode estar na sequência de várias ações que vão determinar a melhor pontuação.
O que deve ser levado em conta é a proporção das pontuações, quanto mais ações têm pontuações, o algoritmo tende a tentar seguir essas pontuações podendo não deixar o modelo tão bom quando for jogar novas situações que nunca viu.
Quanto menos pontuações, por exemplo, apenas ao realizar xeque-mate dá um ponto e apenas ao receber xeque-mate perde um ponto, pode deixar o algoritmo com desempenho melhor em situações que nunca viu, porém até ele acertar o xeque-mate envolve maior custo computacional.
Exploration
O algoritmo explora as possibilidades do que ele pode fazer no Ambiente.
Exploitation
O algoritmo toma uma decisão com base em tudo o que ele aprendeu até o momento. É o que ele acha ser a melhor Ação durante um Estado.
Principais algoritmos:
- Q-Learning
- SARSA
- Métodos de gradiente de política
- Redes Q profundas (DQN)
Overfitting e Underfitting
Considere os seguintes dados, onde as cores verdes representam valores de treino e as cores laranjas representam valores de teste:

| Overfitting | Underfitting |
| Overfitting é quando a previsão dos dados se ajusta perfeitamente com os dados de treino e na hora de aplicar os dados de teste acaba não tendo um bom resultado. | Underfitting é quando a previsão dos dados não se ajusta nem bem com os dados de treino e nem bem com os dados de teste. Um modelo que representa uma reta não consegue se ajustar aos dados que representam uma curva. |
Um exemplo é como ensinar um aluno a tabela de multiplicação, ele recebe apenas algumas operações, se o algoritmo apenas decorar essas operações, no momento em que receber uma nova operação ele não vai saber resolver. Se o algoritmo entender como se multiplicam dois valores, então quando apresentado uma operação que ele nunca viu, vai saber resolver.
Ao aplicar o algoritmo de Machine Learning o que se busca é o melhor ajuste aos dados, porém esse ajuste após um treinamento, o modelo deve ser capaz de interpretar os novos dados que serão apresentados.

Principais Vantagens do Machine Learning
- Reconhecimento de padrões;
- Automação;
- Melhoria contínua.
Principais Desvantagens do Machine Learning
- A qualidade dos dados influencia no resultado;
- Grande quantidade de dados;
- Compreensão profunda do objetivo e dos resultados;
- Grande tempo de preparação e processamento.
Usos do Machine Learning
- Sistemas de recomendação;
- Previsão de mercado de ações e comportamento do cliente;
- Detecção de fraudes em transações financeiras;
- Sistemas de previsão de tempo.
Exemplo de código em Python
O script a seguir demonstra um algoritmo de aprendizado por reforço representando uma base de dados com meios de transporte de carros e ônibus.
# Dependências
# pip install scikit-learn
# pip install pandas
import pandas as pd
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.svm import LinearSVC
# Criar ou importar uma base de dados
# A base simula um exemplo de meio de transportes com carro e ônibus
meios_de_transporte = pd.DataFrame(
columns=['peso', 'qtd_bancos', 'comubustivel', 'transporte'],
data= [[2, 5, 0, 'carro'],
[10, 30, 1, 'ônibus'],
[3, 16, 1, 'ônibus'],
[10, 30, 1, 'ônibus'],
[3.5, 16, 0, 'ônibus'],
[1.8, 5, 0, 'carro'],
[1.5, 7, 0, 'carro'],
[10, 5, 1, 'ônibus'],
[1, 4, 0, 'carro'],
[15, 44, 1, 'ônibus'],
[2.5, 5, 0, 'carro'],
[5, 44, 1, 'ônibus'],
]
)
# Mostrar as primeiras linhas da base de dados
print(meios_de_transporte.head())
print()
# Recuperar as colunas que são os dados para o treinamento
x = meios_de_transporte[["peso", "qtd_bancos", "comubustivel"]]
# Recuperar a coluna classe rótulo que indica o meio de transporte
y = meios_de_transporte["transporte"]
# Separar os dados em Treino e Teste
x_treino_dados, x_teste_dados, y_treino_classes, y_teste_classes = train_test_split(x, y, random_state=2)
print(f"Quantidade de dados para o Treino: {len(x_treino_dados)}")
print(f"Quantidade de dados para o Teste: {len(x_teste_dados)}\n")
# Treinar o modelo
modelo = LinearSVC()
modelo.fit(x_treino_dados, y_treino_classes)
# Aplicar os dados de Teste que o modelo nunca viu
previsoes = modelo.predict(x_teste_dados)
print(f"Valores esperados: {list(y_teste_classes)}")
print(f"Valores previstos: {previsoes}")
# Medir o desempenho do modelo
acuracia = accuracy_score(y_teste_classes, previsoes) * 100
print(f"Acurácia: {acuracia:.2f}%")
Resultado do código:
peso qtd_bancos comubustivel transporte
0 2.0 5 0 carro
1 10.0 30 1 ônibus
2 3.0 16 1 ônibus
3 10.0 30 1 ônibus
4 3.5 16 0 ônibus
Quantidade de dados para o Treino: 9
Quantidade de dados para o Teste: 3
Independentemente do tipo de aprendizado, na hora de construir um modelo de Machine Learning, ter em mente o objetivo que se deseja alcançar é fundamental para obter bons resultados. Não é apenas o algoritmo em si que deve ser levado em conta, mas todo o processo, desde o tratamento dos dados até a análise dos resultados. A qualidade da base de dados e o poder computacional influenciam diretamente nas escolhas e consequentemente no resultado.
Autor: Gabriel C. Lazzari
Referências:
- https://cloud.google.com/learn/what-is-machine-learning?hl=pt-BR
- https://www.ibm.com/br-pt/think/topics/machine-learning
- https://www.alura.com.br/artigos/machine-learning?srsltid=AfmBOorpDufILAsv7EExJ_nU4-5JYT9XRVNwD5DhfJ1uSZgltxn4BItY
- https://labelyourdata.com/articles/machine-learning-and-training-data
- https://maddevs.io/blog/semi-supervised-learning-explained/
- https://www.youtube.com/watch?v=IHAb3NHDahU&list=PLyqOvdQmGdTSqkutrKDaVJlEv-ui1MyK4&index=4
- https://medium.com/turing-talks/aprendizado-por-refor%C3%A7o-1-introdu%C3%A7%C3%A3o-7382ebb641ab
- https://didatica.tech/estados-acoes-e-recompensas-no-aprendizado-por-reforco/

