Alura > Cursos de Inteligência Artificial > Cursos de IA para Programação > Conteúdos de IA para Programação > Primeiras aulas do curso Fundamentos de IA: investigando algoritmos e abordagens de machine learning

Fundamentos de IA: investigando algoritmos e abordagens de machine learning

Explorando o aprendizado de máquina - Apresentação

Olá! Sou o Lucas Mata, instrutor na Alura. Boas-vindas a esse curso!

Audiodescrição: Lucas é uma pessoa branca, de cabelos pretos e barba rala. Usa óculos de grau com armação quadrada e uma camiseta preta escrita "Alura". Ao fundo, uma parede lisa com iluminação azul, ao lado direito, uma prateleira com itens de decoração.

Este curso é destinado a quem deseja entender mais sobre o mundo da inteligência artificial. De maneira específica, vamos explorar o aprendizado de máquina, ou machine learning, ao longo deste curso. Faremos isso de maneira prática, utilizando alguns exemplos no Google Collaboratory. Dessa forma, podemos trabalhar de forma mais simplificada com Python, sem o problema de lidar com dependências instaladas no ambiente.

O que aprenderemos

Começaremos estudando e explorando o aprendizado supervisionado. Vamos analisar alguns conjuntos de dados e gerar algoritmos capazes de identificar padrões em dados, como imagens e textos. Esses dados possuem rótulos, e utilizamos esses dados rotulados para gerar os algoritmos, caracterizando o aprendizado supervisionado.

Na sequência, vamos explorar algumas técnicas de aprendizado não supervisionado, quando temos um conjunto de dados, mas não possuímos rótulos para esses dados. Vamos explorar técnicas como algoritmos de clusterização e de redução de dimensionalidade.

Em seguida, analisaremos alguns conceitos essenciais da visão computacional e do processamento de linguagem natural, que estão por trás de ferramentas como o ChatGPT, Google Gemina e DeepSeek.

Por fim, exploraremos um pouco sobre o aprendizado por reforço, no qual os agentes aprendem com o ambiente em que estão interagindo. Este curso é uma introdução ao mundo da inteligência artificial. Nosso foco será em Machine Learning (aprendizado de máquina), mas, como essa é uma área bastante extensa, vamos explorar alguns conceitos e ideias fundamentais que estão por trás desse vasto mundo do Machine Learning.

Teremos algumas atividades importantes para podermos explorar outros casos e aprender mais. Contamos com o apoio do fórum e também da comunidade no Discord, caso você queira compartilhar alguma ideia ou tenha algum problema no desenvolvimento das atividades.

Aguardamos você para darmos início a essa jornada nos próximos vídeos. Vamos começar?

Explorando o aprendizado de máquina - Como computadores aprendem

Quando estamos em grandes cidades como São Paulo, Rio de Janeiro, Salvador ou Brasília, é muito comum utilizarmos um aplicativo para nos ajudar no tráfego entre um ponto e outro. Se desejamos ir de casa para a universidade ou para o ambiente de trabalho, escolhemos a melhor rota naquele momento.

Além disso, ao fazermos uma viagem para o exterior, para um país cuja língua não dominamos bem, podemos utilizar um aplicativo de tradução instantânea. Esse aplicativo, muitas vezes, possui uma voz que tenta emular as emoções embutidas na pergunta ou no texto que pedimos para traduzir, evitando parecer artificial ou robótico.

Compreendendo o papel do Machine Learning

O que está por trás dessas tecnologias, que já fazem parte do nosso cotidiano e carregamos no bolso com os smartphones é o Machine Learning (aprendizado de máquina), uma abordagem de inteligência artificial que tem ganhado muita projeção e importância em nosso dia a dia. Machine Learning é a abordagem por trás dos LLMs (Large Language Models ou Modelos de Linguagem Grande), dessas ferramentas de inteligência artificial generativa que utilizamos bastante nos últimos tempos, como o ChatGPT, o Google Gemini, DeepSeek e tantos outros.

O que é Machine Learning? Como funciona? À primeira vista, pode parecer que Machine Learning é algo destinado a pessoas especialistas, cientistas que desenvolvem fórmulas matemáticas para criar modelos capazes de realizar coisas extraordinárias, como as ferramentas de inteligência artificial generativa, que conseguem conversar conosco como se fossem quase humanas. No entanto, veremos que Machine Learning não é exclusivo para pessoas hiperespecialistas em IA, estatística, ciência da computação ou ciência de dados. Nós também podemos utilizar alguns modelos e explorar essa área da inteligência artificial, que tem crescido bastante nos últimos tempos.

Para começar a entender melhor o que é Machine Learning, que em si já é um mundo dentro da IA, utilizaremos um código em Python. Antes de mais nada, é importante esclarecer que, como ambiente de trabalho neste curso, utilizaremos uma ferramenta gratuita disponível na web, o Google Colaboratory ou Google Colab. Basta acessar a conta Google, procurar nos recursos disponibilizados pelo Google, abrir um notebook e construir códigos, executá-los e observar os resultados de maneira simplificada.

A vantagem de usarmos o Google Colab é que não será necessário configurar todo o ambiente, instalando bibliotecas ou dependências. Podemos ir direto ao código de maneira mais simples e rápida.

Utilizando dados para treinar a máquina

Na tela, já temos um código inicial. Antes de entendermos esse código, é importante esclarecer que, para o aprendizado de máquina, utilizaremos muitos dados. Talvez não tenhamos mencionado, mas em outros momentos da jornada, que dados são muito importantes no mundo da inteligência artificial, sobretudo quando lidamos com Machine Learning. Basicamente, ensinaremos as máquinas a "pensarem". Como faremos isso? É o que aprenderemos agora. Ensinaremos com base nesses dados.

Conhecendo o dataset Iris

Para começar, precisamos entender que tipo de dado utilizaremos e o que ensinaremos para essa máquina. Este código ensinará nosso computador, ou melhor, um algoritmo, a interpretar dados de imagens. Usaremos um conjunto de dados chamado Dataset, amplamente conhecido no mundo da IA por ser um dos mais antigos e utilizados em testes de Machine Learning. Trata-se do Dataset Iris, um conjunto de dados aberto, disponível para a criação de algoritmos. Ele contém informações sobre diferentes espécies de flores do tipo íris, incluindo a íris setosa, a íris versicolor e a íris virginica.

Observamos que essas flores possuem características únicas, e ensinar um algoritmo a interpretar e classificar diferentes imagens da flor do tipo íris em setosa, versicolor e virginica é um caso clássico de aprendizado de máquina. Da mesma forma que utilizamos esse dataset, poderíamos usar um conjunto de dados de animais para treinar um algoritmo a identificar um cachorro, um gato ou um jabuti, que são alguns dos animais de estimação mais comuns.

Analisando o código de classificação de flores

No código que ainda não explicamos em detalhes, utilizamos esse dataset para ensinar um modelo de Machine Learning a classificar diferentes imagens de flores do tipo íris. Agora que entendemos a composição desse dataset e como ele será utilizado para criar um algoritmo de classificação, vamos analisar o código. Embora possa parecer complexo à primeira vista, na verdade é bem simples.

# Passo 1: Importar as bibliotecas necessárias
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# Passo 2: Carregar o dataset Iris
iris = load_iris()
X = iris.data  # Características (comprimento e largura das pétalas e sépalas)
y = iris.target  # Rótulos (espécies das flores)

# Passo 3: Dividir os dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Passo 4: Treinar o modelo
model = DecisionTreeClassifier()
model.fit(X_train, y_train)

# Passo 5: Fazer previsões e avaliar o modelo
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Acurácia do modelo: {accuracy * 100:.2f}%")

Acurácia do modelo: 100.00%

O primeiro passo é a importação das bibliotecas. Utilizamos, principalmente, o Scikit-Learn, um conjunto de bibliotecas essencial no Python para ciência de dados e Machine Learning. No segundo passo, fazemos o carregamento do dataset, que será usado para ensinar ao modelo as características dessas flores. O que define se uma flor pertence a um determinado tipo são atributos como o comprimento e a largura das pétalas e das sépalas. Visualmente e geometricamente, cada espécie apresenta diferenças marcantes.

Após carregar o conjunto de dados, no terceiro passo, dividimos os dados em treino e teste. No conjunto de treino, estão as imagens usadas para ensinar o modelo. Já no conjunto de teste, separamos algumas imagens para verificar se o modelo consegue classificá-las corretamente, medindo sua acurácia e desempenho.

No quarto passo, treinamos o modelo utilizando os dados de treino. Em seguida, no quinto passo, com o modelo treinado, realizamos previsões para avaliar seu desempenho. Como resultado, obtemos uma acurácia de 100%, pois o dataset Iris é bem estruturado e influencia diretamente na precisão do modelo.

Ao longo desse processo, falamos sobre modelo, treinamento, teste e aprendizado de máquina. Machine Learning nada mais é do que ensinar as máquinas a realizarem tarefas específicas. Nesse caso, ensinamos o modelo a identificar diferentes flores do tipo íris e classificá-las corretamente. Se aplicássemos o mesmo princípio a um conjunto de dados de animais de estimação, poderíamos criar um modelo para classificá-los, embora a acurácia pudesse ser menor, dependendo da complexidade e diversidade do dataset.

Apesar de ser um conjunto de dados relativamente simples, entender como ele funciona nos permite experimentar e explorar a análise de IA com mais profundidade. Agora que compreendemos melhor o conceito de Machine Learning, podemos avançar para examinar esse processo com mais detalhes.

Explorando o aprendizado de máquina - Treinando modelos de IA

Exploramos o Dataset Iris para entender melhor o que é Machine Learning, que está por trás de tecnologias que utilizamos no dia a dia. Seja na web ou em aplicativos de celular, estamos sempre interagindo com aplicações que têm Machine Learning como base.

No caso do Dataset Iris, treinamos um algoritmo para classificar diferentes imagens de flores em subtipos da flor do tipo íris. Esse é um exemplo típico de visão computacional, ou seja, de algoritmos capazes de identificar padrões em imagens em outros conjuntos de dados. Alguns termos mencionados podem ter ficado um pouco confusos, então vamos esclarecê-los.

Modelos em Machine Learning

Para começar, mencionamos que estávamos treinando um modelo. Um modelo em Machine Learning é um algoritmo que aprende a identificar padrões, características ou aspectos semelhantes em conjuntos de dados apresentados durante o processo de treinamento.

No treinamento, o algoritmo realiza um conjunto de operações aritméticas, com muita estatística e matemática por trás da construção desses modelos. Existe uma diversidade enorme de modelos disponíveis em comunidades, como o Hugging Face, onde encontramos uma série de modelos e ferramentas para trabalhar com Machine Learning.

Aprendizado supervisionado

Nesse processo, vimos um caso típico de aprendizado supervisionado. Nesse caso, as imagens do Dataset Iris estavam rotuladas. Para cada imagem de uma flor, havia um rótulo, ou seja, uma especificação indicando, por exemplo, que a flor é do tipo íris versicolor ou de outro subtipo.

Apresentamos ao algoritmo todas as imagens do nosso dataset, juntamente com os rótulos dessas imagens, ou seja, as legendas que indicam o tipo de flor. Da mesma forma, poderíamos apresentar um conjunto de imagens de gatos, cachorros, tartarugas, jabutis e elefantes a um algoritmo, que interpretaria cada imagem e, a partir de uma grande variedade de dados, seria capaz de identificar padrões em novas imagens não rotuladas. Por isso, chamamos de aprendizado supervisionado, pois supervisionamos o processo, fornecendo os dados e os rótulos que indicam o significado de cada dado.

O processo de aprendizado supervisionado envolveu o treinamento, onde carregamos o Dataset Iris e o dividimos em conjunto de dados de treinamento e conjunto de dados de teste. O treinamento consistiu em apresentar os dados ao algoritmo para que ele entendesse cada subtipo de flor do tipo íris.

Na sequência, realizamos a previsão. Após o treinamento, o algoritmo, já pronto e treinado, é capaz de prever. Se fornecermos uma nova imagem sem rótulo, ele será capaz de identificar a qual subtipo de flor do tipo íris a imagem pertence. No final, realizamos a avaliação, obtendo a acurácia de 100%. Um número grande, afinal, estávamos lidando com um conjunto de dados diversificado e extenso, isso acaba impactando diretamente na qualidade do modelo.

Nesse caso, trabalhamos com um modelo chamado árvore de decisão. Mas, como não existe apenas esse modelo, podemos trabalhar com outro usando o mesmo Dataset.

Testando o modelo K-nearest neighbors

Voltamos ao colab e colamos o mesmo código que usamos anteriormente, porém, faremos algumas alterações. Primeiro, fazemos a importação de todas as bibliotecas necessárias. No segundo passo, novamente, carregamos e preparamos o dataset Iris. Após, é feito o tratamento dos dados, para normalizarmos.

Ao normalizar dados, usamos a mesma escala. Fazemos isso, pois alguns algorítmos de Machine Learning são sensíveis a dados que tem uma grande variação. Ao normalizar, retiramos um pouco da variação para melhorar o desempenho do algorítmo e acurácia no processo de treinamento.

No passo quatro, dividimos o conjunto de dados em treino e teste. Após, usando o mesmo algoritmo no modelo de árvore de decisão, fazemos o treinamento. Porém, nesse caso, no passo seis usaremos o modelo KNN, que pode ser usado para capturar algumas features de imagens e dar uma capacidade de previsão a partir do processo de treinamento.

# Passo 1: Importar as bibliotecas necessárias
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
import pandas as pd

# Passo 2: Carregar e preparar o dataset Iris
dataset = load_iris()
df = pd.DataFrame(data=dataset.data, columns=dataset.feature_names)
df['species'] = dataset.target

# Passo 3: Normalizar os dados
scaler = StandardScaler()
X_scaled = scaler.fit_transform(df.drop(columns=['species']))

# Passo 4: Dividir os dados em treino e teste
X_train, X_test, y_train, y_test = train_test_split(X_scaled, df['species'], test_size=0.3, random_state=42)

# Passo 5: Treinar e avaliar a Árvore de Decisão
tree_model = DecisionTreeClassifier()
tree_model.fit(X_train, y_train)
tree_accuracy = accuracy_score(y_test, tree_model.predict(X_test))
print(f"Acurácia da Árvore de Decisão: {tree_accuracy * 100:.2f}%")

# Passo 6: Treinar e avaliar o KNN
knn_model = KNeighborsClassifier()
knn_model.fit(X_train, y_train)
knn_accuracy = accuracy_score(y_test, knn_model.predict(X_test))
print(f"Acurácia do KNN: {knn_accuracy * 100:.2f}%")

Acurácia da Árvore de Decisão: 100.00%

Acurácia do KNN: 100.00%

Sabendo disso, executamos o código e notamos que obtivemos uma acurácia de 100% tanto para a árvore de decisão quanto para o KNN (K-nearest neighbors). Isso mostra que, nesse caso, os algoritmos convergiram. No entanto, em alguns momentos, ao usar algoritmos e modelos diferentes, podemos obter desempenhos distintos.

Dados

À medida que praticamos, percebemos que o processo de normalização dos dados e preparação é crucial para obter um melhor desempenho de acordo com cada modelo utilizado. Os dados são essenciais para Machine Learning, funcionando como combustível para os algoritmos de aprendizado. Portanto, é fundamental que tenhamos um conjunto de dados bem preparado e de qualidade para obter um bom desempenho no processo de treinamento.

Embora a acurácia possa ser boa, pode haver falsos positivos, como classificar uma imagem de forma errada. Por isso, é importante cuidar bem do dataset, pois ele determina a qualidade final do nosso modelo e da IA que estamos construindo.

Tipos de aprendizado

É importante destacar que existem diferentes tipos de aprendizado de máquina, não apenas o aprendizado supervisionado. Também podemos ter aprendizado não supervisionado e aprendizado por reforço. Vamos explorar cada um desses tipos de aprendizado ao longo desta jornada. Por enquanto, estamos trabalhando com aprendizado supervisionado, no qual fornecemos os dados e os rótulos, indicando ao modelo o que está presente nos dados.

Vamos avançar em nossa trajetória pelo mundo do aprendizado de máquina, mais precisamente do aprendizado supervisionado.

Sobre o curso Fundamentos de IA: investigando algoritmos e abordagens de machine learning

O curso Fundamentos de IA: investigando algoritmos e abordagens de machine learning possui 127 minutos de vídeos, em um total de 54 atividades. Gostou? Conheça nossos outros cursos de IA para Programação em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda IA para Programação acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas