Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

FUNDAMENTOS DE 
APRENDIZAGEM 
DE MÁQUINA 
Maikon Lucian Lenz 
Abordagens de 
aprendizagem de máquina 
e principais tarefas
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer os tipos de aprendizado de máquina.
 � Categorizar tarefas de aprendizado de máquina de acordo com os 
tipos propostos.
 � Diferenciar o processo de aprendizado de máquina de acordo com 
os tipos propostos.
Introdução
O aprendizado de máquina é uma área abrangente e em constante 
crescimento. Nos últimos anos, muitas tarefas de aprendizado foram 
desenvolvidas, o que contribui para o avanço não só da inteligência 
artificial, mas da tecnologia como um todo. Soluções antes inimagináveis 
estão sendo criadas graças ao aprendizado de máquina. Entretanto, 
há muitas características em comum entre as tarefas desenvolvidas. 
O tipo de aprendizado de máquina é um dos fatores mais importantes 
de determinada tarefa, além de um conceito que permite ao iniciante 
na área de aprendizado de máquina compreender muitos dos princípios 
envolvidos sem que seja necessário analisar toda a imensidão de algo-
ritmos e exemplos de cada um deles.
O aprendizado de máquina é dividido em quatro tipos, de acordo com 
a forma como o sistema compreende se o modelo que está utilizando 
é mais ou menos adequado aos dados apresentados. Para tanto, a má-
quina passa por um processo de treinamento. Enquanto o aprendizado 
supervisionado demanda o conhecimento prévio dos atributos-alvo, o 
tipo de aprendizado não supervisionado busca estruturas intrínsecas aos 
dados para tentar agrupá-los conforme as similaridades que apresentam. 
Há ainda os tipos de aprendizado semissupervisionado e por reforço. 
O primeiro combina os tipos anteriormente citados, de modo geral, 
devido ao fato de somente uma parte dos dados ser acompanhada 
de atributos-alvo. O segundo recebe estímulos que reforçarão ou não 
determinada característica do modelo.
Neste capítulo, você estudará sobre quatro tipos de aprendizados 
de máquina. 
1 Aprendizado de máquina
Apesar de a etapa de treinamento ser a mais enfatizada, o aprendizado de 
máquina envolve ainda outras etapas. Um exemplo é a seleção e preparação 
dos dados, que permite que os dados estejam adequados ao modelo e às tare-
fas utilizadas. Também têm vital importância para o sucesso no processo de 
aprendizado as etapas de teste, de validação e, quando necessário, o ajuste e 
refinamento de parâmetros para melhorar o desempenho do modelo. A Figura 1 
apresenta um resumo das etapas de aprendizado.
Figura 1. Etapas do aprendizado de máquina. 
Abordagens de aprendizagem de máquina e principais tarefas2
O processamento de dados em aprendizado de máquina pode ser de na-
tureza preditiva ou descritiva. Tarefas preditivas são aquelas que têm como 
objetivo estimar o atributo-alvo de uma nova instância a partir de um modelo 
previamente gerado. Em outras palavras, como o próprio nome sugere, elas são 
capazes de prever os valores de atributo-alvo para uma dada combinação de 
atributos previsores. Para treinar uma máquina do tipo preditivo, é necessário 
que as instâncias fornecidas durante o processo sejam acompanhadas do 
respectivo atributo-alvo, também conhecido como rótulo. Assim, o algoritmo 
poderá comparar o resultado obtido com o resultado esperado e proceder aos 
ajustes necessários na tentativa de melhorar sua previsão. 
As tarefas descritivas, por sua vez, têm por função explorar um conjunto de 
dados sem qualquer interferência externa, seja simultânea ou previamente definida, 
com o intuito de organizar e separar os dados a partir de padrões percebidos entre 
eles. A Figura 2 detalha como são organizadas as tarefas de aprendizado de má-
quina segundo a perspectiva do tipo de aprendizado utilizado e quais são os tipos 
de aplicações comuns a elas. É possível observar que as tarefas de classificação, 
regressão e agrupamento (na qual estão inclusas, ainda, associação e sumarização) 
podem ser aninhadas em diferentes tipos de aprendizado, como supervisionado, 
não supervisionado, semissupervisionado e por reforço.
Figura 2. Classificação dos tipos de aprendizado de máquina.
Tipos de
aprendizado de
máquinas
Aprendizado
supervisionado
Aprendizado não
supervisionado
Aprendizado
semissupervisionado
Aprendizado por
reforço
Atributos de saída
contínuos
Atributos de saída
discretos
Variável de destino
não disponível
Rótulo
Clusterização
Variável-alvo
Variável de destino
não disponível
Regressão
Estimativa de preço
residencial
Classi�cação
Exames de imagem
Clusterização
Associação
Classi�cação
Classi�cação
Controle
Localização de vias
em dados no GPS
Segmentação de
clientes
Análise de mercado
Classi�cação de
texto
Otimização de
marketing
Veículo autônomo
3Abordagens de aprendizagem de máquina e principais tarefas
As maiores diferenças ficam por conta dos tipos de aprendizado super-
visionado, não supervisionado e por reforço, uma vez que o aprendizado 
semissupervisionado é uma mescla dos dois primeiros. O Quadro 1 apresenta 
um resumo das principais diferenças entre os três tipos.
Características
Tipos de aprendizado
Semissupervisionado
Reforço
Supervisionado
Não 
supervisionado
Conjunto 
de dados
Valores para 
atributo previsor 
e alvo.
Dados não 
rotulados.
Sem 
atributo-alvo.
Aprimoramento
Treinamento 
do modelo 
com base nas 
instâncias 
rotuladas.
Análise 
intrínseca.
Recompensas 
e punições.
Tarefa
Prever a resposta 
ou o rótulo 
correto.
Agrupar 
instâncias com 
características 
similares.
Buscar novas 
hipóteses no 
sentido de 
tentar reduzir 
as punições e 
aumentar as 
recompensas.
Quadro 1. Comparativo das principais características entre os tipos de aprendizado
Todavia, uma aplicação nem sempre é fácil de enquadrar de maneira rígida 
e restrita ao esquema apresentado na Figura 2. É comum que um problema 
demande o uso de diferentes tipos de aprendizado, um exemplo é a própria 
existência de uma categoria denominada semissupervisionada, que combina 
os tipos supervisionado e não supervisionado.
Abordagens de aprendizagem de máquina e principais tarefas4
Cada uma das categorias envolve diferentes tipos de aplicações, no entanto, 
os problemas reais costumeiramente podem abranger fenômenos e dados de 
naturezas diversas, misturando características de dois ou mais tipos de apren-
dizado. Muitas vezes, o dado a ser examinado não decorre nem de uma, nem 
de outra natureza específica, mas da própria interação em si, o que terminará, 
por sua vez, na mixagem de tipos de aprendizado e tarefas.
Um ótimo exemplo para demonstrar o quão complexo pode se tornar um 
problema de aprendizado de máquina é a própria fala humana. A máquina 
não apenas deverá ser capaz de compreender a estrutura sintática e semântica 
da linguagem utilizada pelo interlocutor como também reconhecer padrões 
vocais, além de diferenciar entonações para avaliar diferentes ênfases que 
podem sugerir desde uma apresentação literal de determinada informação 
até o seu inverso, utilizando-se de tom irônico na pronúncia.
Aprendizado supervisionado
Imagine uma máquina capaz de melhorar a sua performance de previsão 
somente quando lhe são informados de maneira direta os valores de saída espe-
rados. Nesse caso, pode-se dizer que o aprendizado é supervisionado, porque, 
apesar de a máquina varrer os dados em busca de padrões que a permitam 
melhorar o modelo que utiliza para a previsão, o conhecimento dos atributos 
corretos de alvo para determinado conjunto de atributos previsores requer que 
outro indivíduo ou máquina os tenha classificado em um momento anterior.
Mesmo que não haja qualquer interferência externa durante o tempo de 
execução do algoritmo, compreende-se que o programa está sendo orientado 
por dados que demandaram algum conhecimento prévio. Assim, o aprendizado 
supervisionado pressupõe a existência, ou emulação, de um supervisor que 
o orienta quanto à assertividade objetiva de suas previsões (FACELI et al.,originais e os previstos pelo modelo (Figura 5).
Figura 5. Comparativo entre os clusters originais (à esquerda) e os previstos pelo k-means 
(à direita).
Na Figura 5, nota-se que as cores são diferentes para cada um dos clus-
ters, motivo que levou à criação do dicionário de tradução, já que a ordem 
dos clusters está invertida. Por essa razão, é possível imaginar que existem 
instâncias agrupadas em clusters diferentes em cada exemplo, e uma rápida 
observação denunciaria isso entre as espécies virginica e versicolor. As flores 
que, originalmente, eram classificadas como virginica, mas apresentavam 
características de comprimento de sépala e largura de pétala que as inseriam 
dentro do cluster da espécie versicolor, não puderam ser agrupadas de modo 
correto pelo algoritmo de k-means devido a essa sobreposição na distribuição. 
Também é possível constatar a quantidade de erros ao comparar quais instâncias 
estão agrupadas em clusters diferentes entre cada DataFrame (original e 
previsto), contabilizando o tamanho do vetor encontrado através da função 
len que retornará um total de 26 instâncias com clusters divergentes.
Aprendizagem não supervisionada: aplicação do k-means18
# Exemplo 11
len(prevDataFrame[iDF_SL_PW_T['specie'] != 
prevDataFrame['specie']])
cm = confusion_matrix(iDF_SL_PW_T['specie'], 
prevDataFrame['specie'])
cmtx = pa.DataFrame(
 cm, 
 index=('Real: ' + pa.DataFrame(iTarget_Names))
[0],
 columns=('Prev: ' + pa.DataFrame(iTarget_Na-
mes))[0]
 )
cmtx, accuracy_score(iDF_SL_PW_T['specie'], 
prevDataFrame['specie'])
O exemplo anterior, além de apresentar o algoritmo para calcular os erros, 
também utiliza a função confusion_matrix para apresentar uma matriz 
de confusão relacionando os valores esperados e os obtidos para cada grupo, 
como apresentado no Quadro 3, além do percentual de acerto segundo o 
método accuracy_score.
Prev: setosa Prev: versicolor Prev: virginica
Real: setosa 50 0 0
Real: versicolor 4 39 7
Real: virginica 0 15 35
Quadro 3. Matriz de confusão
19Aprendizagem não supervisionada: aplicação do k-means
Entretanto, a matriz de confusão e a quantidade de erros só podem ser 
utilizadas porque os rótulos corretos de cada espécie são conhecidos na biblio-
teca SciKit-Learn. Na maioria das situações, o agrupamento é utilizado em 
conjuntos de dados em que se pretende aprender estruturas ou características 
relacionadas para, só então, determinar a possibilidade de se rotular algum 
grupo.
Outras métricas devem ser utilizadas em situações em que os grupos 
originais não são conhecidos. O exemplo a seguir calcula a silhueta média 
dos clusters, uma das métricas mais utilizadas na avaliação de agrupamentos 
por k-means. Ambos buscam por grupos que possuem pouca ou nenhuma 
sobreposição.
# Exemplo 12
from sklearn.metrics import silhouette_score
prevs = alg.predict(iData_SL_PW)
silhouette_score(iData_SL_PW, prevs)
Para a silhueta, é encontrado um valor de 0,5, que é um bom valor para 
um índice que varia de –1 a 1. Quanto mais baixo esse número, maior a 
quantidade de instâncias que poderiam ser agrupadas em outro cluster. 
Outro indicador disponibilizado pela biblioteca do SciKit-Learn é o índice de 
Calinski-Harabasz, que calcula e avalia a taxa de dispersão entre os clusters 
pela dispersão entre os membros de cada um deles. Veja o exemplo a seguir.
# Exemplo 13
from sklearn import metrics
from sklearn.metrics import pairwise_distances
metrics.calinski_harabasz_score(iData_SL_PW, prevs)
Aprendizagem não supervisionada: aplicação do k-means20
Quanto maior for o índice de Calinski-Harabasz, melhor será o agru-
pamento. No entanto, esse valor fará mais sentido quando comparado com 
diferentes agrupamentos, podendo determinar qual é o maior deles e, portanto, 
o mais eficiente. A critério de comparação, quando testado o treinamento do 
k-means para valores de k = 2 e k = 4, teríamos, respectivamente, índices iguais 
a 318,25 e 323,32, enquanto que, para k = 3, conforme os exemplos executados, 
o índice seria de 350,24, ou seja, o maior entre eles conforme o esperado, 
já que sabemos que três clusters existem no conjunto de dados original.
ARTHUR, D.; VASSILVITSKII, S. K-means++: the advantages of careful seeding. In: ACM-
-SIAM SYMPOSIUM ON DISCRETE ALGORITHMS, 18., 2007, New Orleans. Proceedings 
[...]. Philadelphia: SIAM, 2007, p. 1027–1035. Disponível em: http://theory.stanford.
edu/~sergei/papers/kMeansPP-soda.pdf. Acesso em: 28 fev. 2020.
SCIKIT-LEARN. Clustering. c2019a. Disponível em: https://scikit-learn.org/stable/modules/
clustering.html#k-means. Acesso em: 28 fev. 2020.
SCIKIT-LEARN. sklearn.cluster.KMeans. c2019b. Disponível em: https://scikit-learn.org/
stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans. Acesso 
em: 28 fev 2020. 
Leituras recomendadas
ANACONDA INC. Anaconda distribution. c2020. Disponível em: https://www.anaconda.
com/distribution/#download-section. Acesso em: 28 fev. 2020. 
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio 
de Janeiro: LTC, 2011.
JAMES, G. et al. An introduction to statistical learning: with application in R. New York: 
Springer, 2013.
WITTEN, I. H.; FRANK, E. Data mining: practical machine learning tools and techniques. 
2nd ed. Boston: Morgan Kaufmann, 2005.
21Aprendizagem não supervisionada: aplicação do k-means
Os links para sites da web fornecidos neste livro foram todos testados, e seu funciona-
mento foi comprovado no momento da publicação do material. No entanto, a rede 
é extremamente dinâmica; suas páginas estão constantemente mudando de local 
e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre 
qualidade, precisão ou integralidade das informações referidas em tais links.
Aprendizagem não supervisionada: aplicação do k-means22
FUNDAMENTOS DE 
APRENDIZAGEM DE 
MÁQUINA
Rodrigo Santarelli
Aprendizagem 
supervisionada: árvores 
de decisão e regressão
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer os algoritmos de árvores de decisão com base em entropia 
e ganho de informação.
 � Descrever os passos de um algoritmo com base em árvores de decisão.
 � Aplicar critérios de entropia e ganho de informação para a avaliação 
de resultados.
Introdução
O problema de classificação possui um valor de saída discreto, ou seja, 
haverá uma resposta nominal ou booleana, por exemplo, se uma mulher 
de 27 anos gosta ou não de cebola no sanduíche em determinada rede 
de fast-food. Já o problema de regressão apresenta como solução um 
valor de grandeza real, seja ele dado por uma média ponderada ou não, 
ou por outro modelo matemático, como a mediana, em que temos, por 
exemplo, o valor estimado do peso de homens com 1,83 m de altura 
em uma dada população.
Árvores de decisão são métodos utilizados também em aprendi-
zado de máquinas, muito úteis em tarefas de classificação e regressão, 
enquanto as árvores de regressão são aplicadas em problemas de regres-
são. Assim, árvores de decisão e regressão são métodos com base em 
procura, sistemas orientados a conhecimento que objetivam a criação 
de estruturas simbólicas que sejam compreensíveis por humanos, além 
de usarem a estratégia de “dividir para conquistar” no intuito de resolver 
problemas de decisão. Além disso, o problema complexo é dividido em 
problemas mais simples, em que a mesma estratégia é usada, as soluções 
dos subproblemas são combinadas na forma de uma árvore e, em uma 
árvore de decisão, uma decisão é tomada através do caminhamento a 
partir do nodo raiz até o nodo folha.
Neste capítulo, você será capaz de resolver problemas de classifica-
ção e regressão utilizando árvores de decisão e de regressão. Também 
compreenderá a lógica da geração de árvores usando os conceitos de 
ganho de informação e entropia.
1 Algoritmos de árvores de decisão com base 
em entropia e ganho de informação
Árvores de decisãosão estruturas de dados formadas por um conjunto de 
elementos que armazenam alguns tipos de informações aos chamados nós 
(ou nodos). Nessa estrutura, a árvore terá um nodo chamado raiz, conhecido 
como o ponto de partida, e suas conexões para outros elementos, denominadas 
nodos filhos. Esses nodos filhos poderão ter seus próprios nodos filhos, e assim 
sucessivamente. Já o nodo que não possui filho é reconhecido como nodo folha 
ou terminal. Assim, a árvore de decisão possui a característica de armazenar 
regras em seus nodos, e os nodos folhas representarão a decisão a ser tomada.
Aplicamos as árvores de decisão em grandes bases de dados com o objetivo 
de descobrir automaticamente regularidades implícitas nessas bases, expres-
sando-as em forma de regras. Sua finalidade é determinar quais campos de 
informação na base de dados são importantes e se relacionam com o problema.
A partir de um conjunto de treino, com exemplos previamente classificados, 
as árvores de decisão passam pelo processo de treinamento, para que outros 
exemplos possam ser classificados a seguir de acordo com essa mesma árvore. 
O algoritmo de treinamento construirá a arvore de decisão da raiz até as folhas, 
de cima para baixo, fazendo a identificação do atributo mais importante, 
chamado de divisor ou teste. Esse atributo é o que faz a maior diferença para 
a classificação das amostras existentes. Já no teste, a árvore construída é 
testada e usada para classificar um novo conjunto de amostras independentes 
e separadas das utilizadas no treinamento. Havendo uma precisão considerada 
aceitável após os testes, é possível usar a árvore na classificação de amostras 
desconhecidas, oferecendo resultados aos problemas (Figura 1).
Aprendizagem supervisionada: árvores de decisão e regressão2
Figura 1. Caracterizar um cidadão como amigo ou inimigo.
Sim Não
Inimigo
BandeiraEspada
Inimigo Amigo
Sorri
Porta
Se o cidadão da Figura 1 não sorri, a resposta direta é inimigo. Se o cidadão 
sorri, é preciso saber se ele está portando uma espada (e será indicado como 
inimigo) ou se está portando uma bandeira (indicado como amigo). Outra 
forma de visualização de árvore de decisão é demonstrada pela Figura 2, 
quanto à condição de saúde de um cidadão.
Figura 2. Caracterizar um cidadão saudável ou doente.
Cidadão sente-se
bem?
Cidadão sente
dor?
Temperatura
cidadãobinária 0000001000 é de 4,6890 bits de 
informação total da mensagem, pois temos 10 dígitos em que cada “0” vale 
0,152 bits por ter pouca incerteza (imprevisibilidade), enquanto o único dígito 
“1” tem mais informação, sendo 3,321 bits. Veja:
Infototal = 9 × (informação do “0”) + 1 × (informação do “1”)
Infototal = 9 × 0,152 + 1 × 3,3219 = 4,6899 bits
Se alterarmos o percentual de aparição do dígito “1” ou o tamanho da 
sequência binária, teremos para esse novo caso um outro valor de entropia. 
Se a amostra ou, nesse caso, nossa sequência binária, for completamente homo-
gênea, teremos entropia zero, e se a amostra for completamente heterogênea, 
a entropia será um (valor igual a 1).
O ganho de informação nos apresenta um valor com base na redução de 
entropia após um conjunto ser dividido a partir de um atributo. Para definir 
o atributo que gera ramos da árvore de decisão mais homogêneos, temos:
1. inicialmente, calcular a entropia do conjunto de instâncias ou dados;
2. esse conjunto, então, deve ser dividido usando os diferentes atributos;
3. a entropia de cada ramo deve ser calculada e subtraída da entropia de 
antes da divisão;
4. ganho de informação é o resultado dessa operação;
5. o atributo com o maior ganho de informação é escolhido como nodo 
de decisão;
6. quando o ramo tiver entropia zero, ele será um nodo folha.
7Aprendizagem supervisionada: árvores de decisão e regressão
Todo esse processo repete-se recursivamente. No Quadro 1, adaptado de 
Faceli et al. (2011), a coluna Corrida nos indica se poderemos ou não ter o 
evento de uma corrida de Fórmula 1, com base nos atributos indicados em 
Clima, Temperatura, Aderência da pista e Vento. Nesse exemplo, existem 14 
(S) condições, ou amostras, das quais 9 (s1) determinam a classe Sim, haverá 
corrida, e 5 (s2) indicam a classe Não haverá corrida.
Fonte: Adaptado de Faceli et al. (2011).
Condição Clima Temperatura
Aderência 
da pista
Vento Corrida
C1 Sol Quente Baixa Fraco Não
C2 Sol Quente Baixa Forte Não
C3 Nuvens Quente Baixa Fraco Sim
C4 Chuva Normal Baixa Fraco Sim
C5 Chuva Frio Normal Fraco Sim
C6 Chuva Frio Normal Forte Não
C7 Nuvens Frio Normal Forte Sim
C8 Sol Normal Baixa Fraco Não
C9 Sol Frio Normal Fraco Sim
C10 Chuva Normal Normal Fraco Sim
C11 Sol Normal Normal Forte Sim
C12 Nuvens Normal Baixa Forte Sim
C13 Nuvens Quente Normal Fraco Sim
C14 Chuva Normal Baixa Forte Não
Quadro 1. Condições para uma corrida de Fórmula 1 (F1)
Aprendizagem supervisionada: árvores de decisão e regressão8
A entropia será:
I(s1,s2) = I(9,5) = ‒ (9/14) · log2 · (9/14) ‒ (5/14) · log2 · (5/14) = 0,940
O cálculo da entropia a cada atributo discreto será:
a) Atributo = Clima; Instância = Sol; Classe = Sim (Amostras s11 = 2); 
Classe = Não (Amostras s21 = 3)
I(s11,s21) = I(2,3) = ‒ (2/5) · log2 · (2/5) ‒ (3/5) · log2 · (3/5) = 0,971
b) Atributo = Clima; Instância = Nuvens; Classe = Sim (Amostras s12 = 4); 
Classe = Não (Amostras s22 = 0)
I(s12,s22) = I(4,0) = ‒ (4/4) · log2 · (4/4) ‒ (0/4) · log2 · (0/4) = 0,0
c) Atributo = Clima; Instância = Chuva; Classe = Sim (Amostras s13 = 3); 
Classe = Não (Amostras s23 = 2)
I(s13,s23) = I(3,2) = ‒ (3/5) · log2 · (3/5) ‒ (2/5) · log2 · (2/5) = 0,971
d) Atributo = Temperatura; Instância = Quente; Classe = Sim (Amostras 
s11 = 2); Classe = Não (Amostras s21 = 2)
I(s11,s21) = I(2,2) = ‒ (2/4) · log2 · (2/4) ‒ (2/4) · log2 · (2/4) = 1,0
e) Atributo = Temperatura; Instância = Normal; Classe = Sim (Amostras 
s12 = 4); Classe = Não (Amostras s22 = 2)
I(s12,s22) = I(4,2) = ‒ (4/6) · log2 · (4/6) ‒ (2/6) · log2 · (2/6) = 0,918
f) Atributo = Temperatura; Instância = Frio; Classe = Sim (Amostras s13 
= 3); Classe = Não (Amostras s23 = 1)
I(s13,s23) = I(3,1) = ‒ (3/4) · log2 · (3/4) ‒ (1/4) · log2 · (1/4) = 0,811
9Aprendizagem supervisionada: árvores de decisão e regressão
g) Atributo = Aderência; Instância = Baixa; Classe = Sim (Amostras s11 
= 3); Classe = Não (Amostras s21 = 4)
I(s11,s21) = I(3,4) = ‒ (3/7) · log2 · (3/7) ‒ (4/7) · log2 · (4/7) = 0,985
h) Atributo = Aderência; Instância = Normal; Classe = Sim (Amostras s12 
= 6); Classe = Não (Amostras s22 = 1)
I(s12,s22) = I(6,1) = ‒ (6/7) · log2 · (6/7) ‒ (1/7) · log2 · (1/7) = 0,592
i) Atributo = Vento; Instância = Forte; Classe = Sim (Amostras s11 = 3); 
Classe = Não (Amostras s21 = 3)
I(s11,s21) = I(3,3) = ‒ (3/6) · log2 · (3/6) ‒ (3/6) · log2 · (3/6) = 1,0
j) Atributo = Vento; Instância = Fraco; Classe = Sim (Amostras s12 = 6); 
Classe = Não (Amostras s22 = 2)
I(s12,s22) = I(6,2) = ‒ (6/8) · log2 · (6/8) ‒ (2/8) · log2 · (2/8) = 0,811
Portanto, a entropia a cada amostra de condição para a corrida de Fórmula 1 
será dada por:
 � E(Clima) = (((2 + 3) / 14) · 0,971) + (((4 + 0) / 14) · 0,0) + (((3 + 2) / 14) 
· 0,971) = 0,694 
 � E(Temperatura) = (((2 + 2) / 14) · 1,0) + (((4 + 2) / 14) · 0,918) + (((3 + 1) 
/ 14) · 0,811) = 0,911
 � E(Aderência) = (((3 + 4) / 14) · 0,985) + (((6 + 1) / 14) · 0,592) = 0,789
 � E(Vento) = (((3 + 3) / 14) · 1,0) + (((6 + 2) / 14) · 0,811) = 0,892
Considerando todos os valores calculados anteriormente, vamos então ao 
Ganho de Informação:
 � Ganho(Clima) = 0,940 – 0,694 = 0,246
 � Ganho(Temperatura) = 0,940 – 0,911 = 0,029
 � Ganho(Aderência) = 0,940 – 0,789 = 0,151
 � Ganho(Vento) = 0,940 – 0,892 = 0,048
Aprendizagem supervisionada: árvores de decisão e regressão10
O atributo que possui o maior ganho de informação é o Clima, com o 
valor de 0,246. Assim, ele é o escolhido para ser o divisor do nodo raiz da 
árvore de decisão. O processo não termina nesse ponto, deve-se continuar os 
cálculos recursivamente e, a partir de Clima, teremos a possibilidade de uma 
nova ramificação com o atributo Sol. A partir do atributo Clima = Sol, o ganho 
de informação de saída dos outros três atributos (Temperatura, Aderência e 
Vento) será dado por:
 � Ganho(Temperatura) = 0,971 – 0,400 = 0,571
 � Ganho(Aderência) = 0,971 – 0,0 = 0,971
 � Ganho(Vento) = 0,971 – 0,951 = 0,020
Entropia:
I(s1,s2) = I(2,3) = – (2/5) · log2 · (2/5) – (3/5) · log2 · (3/5) = 0,971
O cálculo da entropia a cada atributo discreto será:
a) Atributo = Temperatura; Instância = Quente; Classe = Sim (Amostras 
s11 = 0); Classe = Não (Amostras s21 = 2)
I(s11,s21) = I(0,2) = – (0/2) · log2 · (0/2) – (2/2) · log2 · (2/2) = 0,0
b) Atributo = Temperatura; Instância = Normal; Classe = Sim (Amostras 
s12 = 1); Classe = Não (Amostras s22 = 1)
I(s12,s22) = I(1,1) = – (1/2) · log2 · (1/2) – (1/2) · log2 · (1/2) = 1,0
c) Atributo = Temperatura; Instância = Frio; Classe = Sim (Amostras s13 
= 1); Classe = Não (Amostras s23 = 0)
I(s13,s23) = I(1,0) = – (1/1) · log2 · (1/1) – (0/1) · log2 · (0/1) = 0,0
11Aprendizagem supervisionada: árvores de decisão e regressão
d) Atributo = Aderência; Instância = Baixa; Classe = Sim (Amostras s11 
= 0); Classe = Não (Amostras s21 = 3)
I(s11,s21) = I(0,3) = – (0/3) · log2 · (0/3) – (3/3) · log2 · (3/3) = 0,0
e) Atributo = Aderência; Instância = Normal; Classe = Sim (Amostras s12 
= 2); Classe = Não (Amostras s22 = 0)
I(s12,s22) = I(2,0) = – (2/2) · log2 · (2/2) – (0/2) · log2 · (0/2) = 0,0
f) Atributo = Vento; Instância = Forte; Classe = Sim (Amostras s11 = 1); 
Classe = Não (Amostras s21 = 1)
I(s11,s21) = I(1,1) = – (1/2) · log2 · (1/2) – (1/2) · log2 · (1/2) = 1,0
g) Atributo = Vento; Instância = Fraco; Classe = Sim (Amostras s12 = 1); 
Classe = Não (Amostras s22 = 2)
I(s12,s22) = I(1,2) = – (1/3) · log2 · (1/3) – (2/3) · log2 · (2/3) = 0,918
Portanto, a entropia a cada amostra de condição Sol é dada por:
 � E(Temperatura) = (((0 + 2) / 5) · 0,0) + (((1 + 1) / 5) · 1,0) + (((1 + 0) / 5) 
· 0,0) = 0,400
 � E(Aderência) = (((0 + 3) / 5) · 0,0) + (((2 + 0) / 5) · 0,0) = 0,0
 � E(Vento) = (((1 + 1) / 5) · 1,0) + (((1 + 2) / 5) · 0,918) = 0,951
Como o Ganho (Aderência) possui o maior valor de informação, com os 
seus 0,971 bits, o atributo Aderência será selecionado como ramificação. 
O processo deve continuar com a mesma ideia, o que nos leva à ilustração 
da Figura3.
Aprendizagem supervisionada: árvores de decisão e regressão12
Figura 3. Ilustração da árvore de decisão com 
nodos folha puros.
Sol
... ...
Baixa Normal
Não
Não
Não
Sim
Sim
Aderência
Clima
Esse processo deve terminar quando todos os nodos da folha são puros, 
ou seja, quando é possível que todas as amostras venham a ter a mesma 
classificação. Contudo, talvez não se consiga ramificar nessa condição de ter 
todos os nodos folha puros, em razão de haver, no conjunto de treino, dois 
ou mais exemplos/amostras com conjunto de atributos idênticos para classes 
diferentes. Assim, deve-se parar quando não podem ser mais ramificados. Em 
contraposição à escolha anterior em que temos nodos folha puros, a Figura 4 
nos apresenta a formação da árvore de decisão com os nodos folha não puros.
Figura 4. Ilustração da árvore de decisão com nodos folha não puros.
Sol Sol
Quente Frio
... ... ......
Fraco Forte
Sim
Não
Não
Sim
Não Não
Não
Sim
Não
Sim
Clima Clima
TemperaturaVento
Normal
13Aprendizagem supervisionada: árvores de decisão e regressão
Assim, podemos afirmar que:
 � quando em Clima temos Sol e Aderência é Normal, SIM, teremos 
corrida de Fórmula 1;
 � quando em Clima temos Sol e Aderência é Baixa, NÃO teremos corrida 
de Fórmula 1.
A Figura 5 ilustra a árvore de decisão com nodos folha puros, em que pode-
remos ter ou não o evento de uma corrida de Fórmula 1, com base nos cálculos 
apresentados de entropia e ganho de informação ao longo deste capítulo.
Figura 5. Ilustração da árvore de decisão.
Sol
Nuvens
Chuva
Baixa
Baixa
BaixaNormal
Normal
Normal
Não
Não
Não
Não
Não
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Aderência Aderência
Aderência
Vento
Vento
Forte
Forte
Fraco
Fraco
Clima
Para complementar o conteúdo deste capítulo, leia os artigos “Aplicação de algoritmos 
de árvore de decisão sobre uma base de dados de câncer de mama”, de Jéssica Augusti 
Bonini, e “Avaliação da escolha de um fornecedor sob condição de riscos a partir do 
método de árvore de decisão”, de Wesley Vieira da Silva, Jansen Maia Del Corso, Hanna 
Tatarchenko Welgacz e Julinês Bega Peixe.
Aprendizagem supervisionada: árvores de decisão e regressão14
AMADO, N. M. R. Algoritmos paralelos de indução de árvores de decisão. 2001. Disserta-
ção (Mestrado em Inteligência Artificial e Computação) – Faculdade de Engenharia, 
Universidade do Porto, Porto, 2001.
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio 
de Janeiro: LTC, 2011.
INGARGIOLA, G. Building classification models: ID3 and C4.5. [Philadelphia: Temple Uni-
versity, 1994]. Notas de aula do curso de Inteligência Artifical da Temple University. 
Também apresentado no Workshop "Providing and Integrating Educational Resources 
for Faculty Teaching Artificial Intelligence", da mesma universidade, entre 20 e 25 de 
junho de 1994. Disponível em: https://cis.temple.edu/~ingargio/cis587/readings/id3-
-c45.html. Acesso em: 9 abr. 2020.
POZO, A. T. R. Árvores de decisão. [Curitiba]: Universidade Federal do Paraná, [200-?]. 
Notas de aula do Departamento de Informática, da Universidade Federal do Paraná. 
Disponível em: http://www.inf.ufpr.br/aurora/disciplinas/datamining/arvore-decisao.
pdf. Acesso em: 9 abr. 2020.
Leituras recomendadas
BONINI, J. A. Aplicação de algoritmos de árvore de decisão sobre uma base de dados 
de câncer de mama. ComIng, v. 1, n. p. 57–67, 2016. Disponível em: https://periodicos.
ufsm.br/coming/article/view/21132/12781. Acesso em: 9 abr. 2020.
BREIMAN, L. et al. Classification and regression trees. Belmont: Wadsworth,1984.
FONSECA, J. M. M. R. Indução de árvores de decisão: HistClass: proposta de um algoritmo 
não paramétrico. 1994. Dissertação (Mestrado em Engenharia Informática) – Departa-
mento de Informática, Universidade Nova de Lisboa, Lisboa, 1994.
REZENDE, S. O. et al. Mineração de dados. In: REZENDE, S. O. (org.). Sistemas inteligentes: 
fundamentos e aplicações. Barueri: Manole, 2003. p. 307–335.
WELGACZ, H. T. et al. Avaliação da escolha de um fornecedor sob condição de riscos 
a partir do método de árvore de decisão. In: ENCONTRO DA ANPAD, 31., 2007, Rio de 
Janeiro. Anais [...]. Maringá: ANPAD, 2007.Disponível em: http://www.anpad.org.br/
diversos/down_zips/33/ADI-D230.pdf. Acesso em: 9 abr. 2020.
15Aprendizagem supervisionada: árvores de decisão e regressão
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Aprendizagem supervisionada: árvores de decisão e regressão16
FUNDAMENTOS DE 
APRENDIZAGEM 
DE MÁQUINA
Maikon Lucian Lenz
Aprendizagem 
supervisionada: 
aplicação de árvores para 
classificação e regressão
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Desenvolver um conjunto de dados para as tarefas de predição, clas-
sificação ou regressão.
 � Aplicar algoritmos de árvore de decisão.
 � Determinar métricas para avaliação dos resultados obtidos utilizando 
métodos de amostragem e validação.
Introdução
As árvores de decisão dividem o espaço de hipóteses, seja para rotular 
a saída ou para determinar valores contínuos de saída. Esse método, 
apesar de não garantir uma solução ótima global, é bastante utilizado e 
costuma apresentar bom desempenho tanto em classificação quanto em 
regressão. Assim como outros algoritmos de aprendizado, a biblioteca 
do Scikit-Learn implementa métodos e classes que facilitam o desenvol-
vimento de aplicações utilizando esses modelos.
Neste capítulo, você vai ver de que forma as árvores de decisão podem 
ser parametrizadas usando o Scikit-Learn e vai conhecer a importância 
das métricas de avaliação e das técnicas de amostragem, em especial, 
o hold-out e o cross-validation.
1 Árvores de decisão e regressão 
no Scikit-Learn
As árvores de decisão são algoritmos não paramétricos que, como o nome 
sugere, fazem uso de regras de decisão para determinar um atributo alvo 
a partir dos atributos previsores. O treinamento de uma árvore de decisão 
consiste no aprendizado dessas regras de decisão. Trata-se, portanto, de um 
método baseado em procura, quando um espaço de hipóteses é varrido para 
encontrar a melhor solução (FACELI et al., 2011).
A biblioteca Scikit-Learn, por sua vez, implementa o algoritmo de árvores 
de decisão, assim como outros métodos de aprendizado. Nela, há um módulo 
destinado exclusivamente a esses algoritmos: sklearn.tree (SCIKIT-
-LEARN, c2019a).
Os algoritmos de decisão produzem grafos acíclicos, no sentido de um nó 
folha ou de outras divisões do espaço de hipóteses em que os nós de divisão 
expressam um teste condicional dos valores de atributos previsores. Como 
critério de aprendizado, são usadas funções de custo 0-1 para obter a moda 
ou minimizar a média do erro médio quadrático, para tarefas de classificação 
e regressão, respectivamente (FACELI et al., 2011). A Figura 1 ilustra uma 
árvore de decisão e o respectivo espaço de hipóteses.
Figura 1. Árvore de decisão (à esquerda) e o respectivo espaço de hipóteses (à direita).
Fonte: FACELI et al. (2011, p. 84).
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão2
Enquanto a função de custo não satisfazer o critério, o espaço de hipóteses 
será recursivamente subdividido, conforme a Figura 1. As decisões não podem 
ser reconsideradas e o algoritmo pode levar a uma solução ótima local, porém, 
com solução normalmente rápida e satisfatória. Os atributos que serão alvo 
do teste de decisão em cada nó são determinados segundo a entropia, ou seja, 
o teste será utilizado para aqueles que representam menor aleatoriedade na 
variável do alvo (FACELI et al., 2011).
Além da função de custo,opções que impactam fortemente sobre o de-
sempenho de uma árvore de decisão são os critérios de poda, que podem ser 
pré-poda, para evitar o crescimento de alguns nós, ou pós-poda, para remover 
nós que não contribuem de forma significativa para a acurácia de classificação. 
É necessário também ter um cuidado especial com valores desconhecidos, 
uma vez que a árvore de decisão é hierárquica e testes deixarão de ser feitos 
a partir do momento que um atributo nulo apareça (FACELI et al., 2011).
Os algoritmos mais populares de árvores de decisão são quatro: ID3, que 
utiliza o atributo categórico com maior ganho de informação para a cons-
trução da árvore, que é expandida até o seu tamanho máximo e, somente 
ao final, podada para aumentar a capacidade de generalização; C4.5, uma 
evolução do ID3 que permite o uso de atributos não categóricos utilizando 
valores discretizados, cuja saída também difere do ID3 por não ser mais 
uma árvore, mas um conjunto de regras de decisão; C5.0, que não apresenta 
modificações substanciais, porém, desempenho e acurácia superiores ao C4.5; 
e CART (do inglês, classification and regression trees). O CART, implemen-
tado pela biblioteca Scikit-Learn, pode ser utilizado tanto para regressões 
quanto classificações e se assemelha ao algoritmo C4.5, contudo, permite o 
uso de variáveis numéricas e constrói a árvore ao invés do conjunto de regras 
de decisão (SCIKIT-LEARN, c2019a).
Dois métodos são utilizados: o sklearn.tree.DecisionTree-
Classifier, para tarefas de classificação, e o sklearn.tree.Deci-
sionTreeRegressor, para tarefas de regressão. O Quadro 1 apresenta os 
parâmetros dos modelos de árvore de decisão.
3Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
Parâmetro
DecisionTree- 
Classifier
DecisionTree- 
Regressor
criterion — 'gini': im-
pureza Gini; 'entropy': 
entropia/aleatoriedade.
X
criterion — 'mse': erro quadrá-
tico médio; 'friedman_mse': 
aprimoramento de Friedman para o 
mse; 'mae': erro médio absoluto.
X
splitter — 'best': melhor divi-
são; 'random': divisão aleatória.
X X
max_depth — profundi-
dade máxima (None).
X X
min_samples_split — nú-
mero mínimo de amostras 
para dividir um nó (2);
X X
min_samples_leaf – nú-
mero mínimo de amostras 
em um nó folha (1);
X X
min_weight_fraction_leaf 
— menor peso total para 
um nó folha (0,0);
X X
max_features — quantidade 
máxima de características relevan-
tes para dividir um nó (None).
X X
random_state — número 
de base para criar núme-
ros aleatórios (None);
X X
max_leaf_nodes — número 
máximo de nós folha (None);
X X
min_impurity_decrease 
— menor redução aceitável 
do indicador de impureza 
para dividir um nó (0,0);
X X
Quadro 1. Parâmetros dos modelos de árvore de decisão
(Continua)
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão4
Parâmetro
DecisionTree- 
Classifier
DecisionTree- 
Regressor
min_impurity_split — maior 
valor aceitável de impureza 
para um nó folha (1,0e-7);
X X
class_weight — 'balan-
ced', lista ou dicionário con-
tendo os pesos (None).
X
ccp_alpha — custo de com-
plexidade mínimo (0,0).
X X
Quadro 1. Parâmetros dos modelos de árvore de decisão
(Continuação)
A maioria dos parâmetros e valores padrões assumidos por cada um dos mo-
delos são comuns em ambos os casos, com exceção do parâmetro criterion, 
que dispõe de opções diferentes para função de custo do classificador e regres-
sor, e do parâmetro class_weight, que obviamente não está presente no 
regressor por este lidar apenas com alvo de valor contínuo (SCIKIT-LEARN, 
c2019b, c2019c).
2 Algoritmos de árvore de decisão
Um classificador do tipo árvore de decisão pode ser inicializado utilizando o 
código-fonte a seguir.
# Exemplo 1 – Classificador
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
Assim como em outros algoritmos da biblioteca Scikit-Learn, estão pre-
sentes os métodos fit, predict e predict_proba. O método fit 
recebe um conjunto de dados separado em atributos previsores (parâmetro X) 
e atributo alvo (parâmetro y) e é utilizado no treinamento do modelo, como 
no exemplo apresentado a seguir.
5Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
# Exemplo 2 – Treinamento
# importa o método load _ iris
from sklearn.datasets import load _ iris
# carrega os dados separando em atributos previsores (X) e alvo (y)
X, y = load _ iris(return _ X _ y=True)
# treina o modelo de árvore de decisão
model.fit(X=X, y=y)
Nesse exemplo, é utilizado o conjunto de dados Iris da biblioteca Scikit-
-Learn. Nele, 150 amostras de flores são classificadas em três espécies dife-
rentes a partir de suas características de comprimento e largura das sépalas 
e pétalas. Para tanto, o método load_iris carrega o conjunto de dados e, 
por meio do parâmetro return_X_y como True, retorna o conjunto na 
forma de uma tupla, dividindo-o em atributos previsores (variável X) e alvo 
(variável y). Na sequência, as variáveis X e y alimentam o método fit do 
modelo instanciado.
Para comparar o conjunto de dados original e seus respectivos rótulos 
com os rótulos previstos pelo modelo treinado, são criados DataFrame, 
que facilitam a substituição de valores numéricos por categorias, como é o 
caso da coluna espécies, e também tornam mais prático seu uso nas demais 
ferramentas, como Seaborn para produzir gráficos. No DataFrame criado, 
cada coluna representa um atributo e o atributo previsor tem seus valores 
dados pelos nomes das espécies conforme o dicionário criado para mapeá-los. 
Veja a seguir.
# Exemplo 3 – Previsão, DataFrames e Exibição de Gráficos
# Bibliotecas para criar DataFrame e gráficos
import pandas as pa
import seaborn as sb
import matplotlib.pyplot as pyp
# Dicionário que mapeará os rótulos numéricos para respectivas 
espécies
dic = {0: 'Setosa', 1: 'Versicolor', 2: 'Virginica'}
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão6
# DataFrame do conjunto original
df = pa.DataFrame(X, columns=['Comprimento das Sépalas', 
 'Largura das Sépalas', 
 'Comprimento das Pétalas', 
 'Largura das Pétalas'])
df['Espécie'] = y
df['Espécie'] = df['Espécie'].apply(lambda i: dic[i])
# Previsão dos rótulos a partir dos atributos previsões
y _ prevs = model.predict(X)
# DataFrame com os rótulos previstos
df _ prevs = df.copy()
df _ prevs['Espécie'] = y _ prevs
df _ prevs['Espécie'] = df _ prevs['Espécie'].apply(lambda i: 
dic[i])
# Gráficos de distribuição dos dados originais e previstos
fig, axes = pyp.subplots(1, 2, figsize=(10,4))
sb.scatterplot( x=df['Comprimento das Pétalas'], 
 y=df['Comprimento das Sépalas'], 
 hue=df['Espécie'], ax=axes[0])
sb.scatterplot( x=df _ prevs['Comprimento das Pétalas'], 
 y=df _ prevs['Comprimento das Sépalas'], 
 hue=df _ prevs['Espécie'], 
 ax=axes[1])
axes[0].set _ title('a) Rótulos originais.')
axes[1].set _ title('b) Rótulos previstos.')
Ao final desse exemplo, são criadas duas colunas de imagem para exibir 
a distribuição de dados conforme os rótulos originais (Figura 2a) e os rótulos 
previstos (Figura 2b) utilizando o modelo treinado e o método predict com 
os valores de atributo previsor X. Uma vez que o conjunto de dados possui 
quatro atributos previsores, dois deles são selecionados para criar os gráficos, 
já que, apesar de possível, fazer um gráfico de quatro dimensões e um gráfico 
de três dimensões tornaria mais difícil comparar as instâncias.
7Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
Figura 2. (a) Distribuição dos dados conforme rótulos originais. (b) Distribuição dos dados 
conforme rótulos previstos.
8.0
7.5
7.0
6.5
6.0
5.5
4.5
21 3 4 5 6 7 21 3 4 5 6 7
5.0
8.0
7.5
7.0
6.5
6.0
5.5
4.5
5.0
Comprimento das pétalasComprimento das pétalas
Co
m
pr
im
en
to
 d
as
 sé
pa
la
s
Co
m
pr
im
en
to
 d
as
 sé
pa
la
s
Espécie
Setosa
Versicolor
Virginica
Espécie
Setosa
Versicolor
Virginica
(a) (b)
Percebe-se que o modelo foi capaz de prever todos os rótulos corretamente. 
Ainda é possível visualizar a árvore gerada a partir de um método plot_tree 
disponível no módulo sklearn.tree conforme o exemplo 4.
# Exemplo 4 – Plot _ tree
# Importa a biblioteca tree
import sklearn.tree
# Cria uma área de gráfico de tamanho específico
fig, ax = pyp.subplots(figsize=(16, 8))
# Plota a árvore preenchida pela cor da classe que predomina no nó
arvore = sklearn.tree.plot _ tree(model, max _ depth=1000, font-
size=10, filled=True, ax=ax)
O resultado pode ser visualizado na Figura 3. Percebe-se que apenas um 
teste é necessário para separar uma das três espécies das demais, produzindo 
um nó folha já no primeiro nível de profundidade. Dali em diante, para separar 
as outras duas espécies, são necessários mais quatro níveis. Esse distanciamento 
para uma das classes já era esperado, uma vez que nos gráficos da Figura 2 
é possível notar que uma das classes está agrupada com uma separação bem 
definida das demais.
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão8
Fi
gu
ra
 3
. Á
rv
or
e 
de
 d
ec
isã
o 
ge
ra
da
 p
el
os
 e
xe
m
pl
os
 3
 e
 4
.
X[
3]
boa representatividade dos 
dados; e o cross-validation, validação cruzada, em inglês, em que o conjunto 
de dados é dividido em vários grupos de mesmo tamanho e cada grupo serve 
uma vez como conjunto de teste, enquanto os demais são utilizados como 
treinamento.
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão14
No hold-out, uma vez definida a proporção adequada, o treinamento ocorre 
uma única vez e é mais afetado pela variação do conjunto de dados. No cross-
-validation, o treinamento é efetuado tantas vezes quanto a quantidade de 
divisões criadas no conjunto de dados e o que importa é o valor médio entre 
todos os treinamentos.
As duas técnicas contam com métodos próprios na biblioteca do Scikit-
-Learn. O exemplo 8 aplica a técnica de hold-out e treina um modelo de árvore 
de decisão para nove proporções diferentes de treinamento/teste.
# Exemplo 8 – Hold-out
from sklearn.model _ selection import train _ test _ split
from sklearn.metrics import accuracy _ score
Xh, yh = load _ iris(return _ X _ y=True)
acc = []
tt = np.arange(0.1, 1, 0.1)
for t in tt:
 X _ treino, X _ teste, y _ treino, y _ teste = train _ test _
split(Xh, yh, 
 test _ size=t, 
 random _ state=4)
 modelh = DecisionTreeClassifier(random _ state=4)
 modelh.fit(X=X _ treino, y=y _ treino)
 acc.append(accuracy _ score(y _ teste, modelh.
predict(X _ teste))*100)
pa.DataFrame(acc, index=tt*100, columns=['Acurácia'])
Para facilitar a análise, uma tabela foi montada com os valores de acurácia 
medidos com a iteração com amostragem diferente, relacionando-os com a 
proporção do conjunto de testes, conforme a Figura 7.
15Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
Figura 7. Acurácia obtida 
para diferentes proporções 
de amostragem.
Percebe-se que a acurácia aumenta até 30% quando atinge o maior valor 
entre todas as amostras. Era provável que esses resultados variassem bastante 
devido à aleatoriedade com que os grupos foram formados. Se aplicada a 
técnica de cross-validation, provavelmente, resultados mais constantes seriam 
observados. O algoritmo do exemplo 9 implementa essa técnica.
# Exemplo 9 – Cross-validation
from sklearn.model _ selection import cross _ val _ score
Xc, yc = load _ iris(return _ X _ y=True)
acc = []
dfc = pa.DataFrame()
for r in range(1, 5, 1):
 modelc = DecisionTreeClassifier(random _ state=r)
 s = 'Acurácia R' + str(r)
 cross = cross _ val _ score(modelc, Xc, yc, cv=10, 
 scoring='accuracy')*100
 cross = np.append(cross, sum(cross)/10)
 dfc[s] = cross
dfc
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão16
Nesse caso, cada uma das linhas se refere a uma iteração do cross-vali-
dation, com exceção da última linha (10), que é composta pelo valor médio. 
É feito um laço para testar a variação dos índices com a aleatoriedade das 
amostragens alterando o valor de random_state, conforme a Figura 8.
Figura 8. Acurácia para diferentes estados de random_state.
Percebe-se pela tabela que, independentemente da aleatoriedade, a acurácia 
média permaneceu sempre próxima de 96%, sendo um indicador mais confiável 
do desempenho do modelo. 
Tanto o hold-out quanto o cross-validation são utilizados em tarefas de 
regressão. Entretanto, as métricas de avaliação são outras, já que o alvo, nesse 
caso, é um valor contínuo. Se a acurácia é uma das métricas mais utilizadas 
em classificadores, o erro quadrático médio desempenha papel similar nos 
regressores (FACELI et al., 2011).
17Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
O exemplo 10 aplica o hold-out para o mesmo conjunto de dados criado 
no exemplo 6.
# Exemplo 10 – Erro Quadrático Médio (MSE, Mean Squared Error)
from sklearn.metrics import mean _ squared _ error
Xh = np.sort(2*np.pi * np.random.rand(50, 1), axis=0)
yh = np.sin(Xh).ravel()
mse = []
tt = np.arange(0.1, 1, 0.1)
for t in tt:
 X _ treino, X _ teste, y _ treino, y _ teste = train _ test _
split(Xh, yh, 
 test _ size=t, random _ state=4)
 modelh = DecisionTreeRegressor(random _ state=4)
 modelh.fit(X=X _ treino, y=y _ treino)
 mse.append(mean _ squared _ error(y _ teste, 
 modelh.predict(X _ teste))*100)
pa.DataFrame(mse, index=tt*100, columns=['MSE'])
Ao contrário da acurácia, busca-se pelo erro quadrático médio obter o 
menor valor possível. Nesse caso, a proporção de 10% de instâncias para o 
conjunto de testes apresentou o melhor desempenho, conforme a Figura 9. 
Entretanto, assim como na classificação, o hold-out é bastante impactado pela 
aleatoriedade das amostras.
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão18
Figura 9. Erro quadrático médio para 
diferentes proporções de amostragem.
O exemplo 11, por sua vez, utiliza o modelo de regressão em conjunto com 
o método de cross-validation. Destaca-se do método cross_val_score 
em relação ao exemplo 9 quanto ao parâmetro scoring, antes igual a ‘ac-
curacy’, agora, igual a ‘neg_mean_squared_error’.
# Exemplo 11 – CV - Erro Quadrático Médio (MSE, Mean Squared 
Error)
from sklearn.model _ selection import cross _ val _ score
Xc = np.sort(2*np.pi * np.random.rand(50, 1), axis=0)
yc = np.sin(Xc).ravel()
dfc = pa.DataFrame()
for d in range(2, 10, 1):
 modelc = DecisionTreeRegressor(max _ depth=d)
 s = 'MSE D=' + str(d)
 cross = cross _ val _ score(modelc, Xc, yc, cv=10, 
 scoring='neg _ mean _ squared _ error')*100
 cross = np.append(cross, sum(cross)/10)
 dfc[s] = cross
dfc
19Aprendizagem supervisionada: aplicação de árvores para classificação e regressão
Dessa vez, é testada a variação do parâmetro de profundidade máxima 
(max_depth), de 2 a 9, e se percebe uma estabilização do erro a partir de 
uma profundidade igual a 4, conforme a Figura 10. É preciso lembrar que a 
última linha (10) indica a média de todas as amostragens para uma mesma 
coluna de parametrização.
Figura 10. Erro quadrático médio para diferentes níveis de profundidade máxima da árvore.
Os classificadores e os regressores possuem muitas métricas disponíveis 
para a avaliação. Enquanto um classificador irá visar à avaliação de erro e 
acerto usando acurácia, índice de sensibilidade, especificidade, precisão e assim 
por diante, todos dependentes dos verdadeiros/falsos e positivos/negativos, um 
regressor irá utilizar medições contínuas, como erro quadrático, erro absoluto, 
desvio e assim por diante.
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio 
de Janeiro: LTC, 2011.
SCIKIT-LEARN. Decision trees. c2019a. Disponível em: https://scikit-learn.org/stable/
modules/tree.html. Acesso em: 24 abr. 2020.
Aprendizagem supervisionada: aplicação de árvores para classificação e regressão20
SCIKIT-LEARN. sklearn.tree.DecisionTreeClassifier. c2019b. Disponível em: https://scikit-
-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html. Acesso 
em: 24 abr. 2020.
SCIKIT-LEARN. sklearn.tree.DecisionTreeRegressor. c2019c. Disponível em: https://scikit-
-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeRegressor.html. Acesso 
em: 24 abr. 2020.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
21Aprendizagem supervisionada: aplicação de árvores para classificação e regressão2011). Esse tipo de aprendizado configura uma instrução objetiva e difere 
de outras formas de retorno de caráter qualitativo quanto à assertividade do 
algoritmo. Assim, o valor fornecido como objetivo do treinamento só pode 
ser do mesmo tipo do valor de saída.
São exemplos recorrentes de aprendizado supervisionado: a classificação de 
caracteres manuscritos, utilizando imagens da letra, do número ou do símbolo 
escrito para determinar o símbolo digital equivalente; a previsão de preços 
de determinado bem a partir de um conjunto de características; o diagnóstico 
de doenças a partir de exames diversos; entre outros. A Figura 3 mostra um 
5Abordagens de aprendizagem de máquina e principais tarefas
conjunto de imagens já rotuladas de vários números manuscritos todos de 
mesmo tamanho. Essa base de dados é utilizada para pesquisa e desenvol-
vimento de algoritmos capazes de reconhecer a escrita humana, e o rótulo 
de cada caractere identifica um valor equivalente na tabela ASCII utilizada 
pelos computadores para representar números, letras e símbolos nesse padrão.
Figura 3. Conjunto de dados MNIST.
Fonte: Adaptada de Baldominos, Saez e Isasi (2019).
Ao se utilizar aprendizado de máquina, espera-se que, com o modelo 
adequado e treinamento suficiente, o algoritmo seja capaz de analisar cada 
pixel de uma imagem na entrada e classificá-la segundo o dígito que deveria 
representar. Trata-se de um exemplo clássico de aprendizado supervisionado, 
preditivo, cuja tarefa principal é a de classificação dos dados. O padrão de 
entrada é determinado pela quantidade fixa de pixels, e o rótulo fornecido junto 
de cada imagem a orienta quanto à exatidão de suas previsões. Um algoritmo 
de aprendizado de máquina pode ser muito elaborado. Para implementar uma 
tarefa de aprendizado sobre imagens, parte considerável do problema reside em 
determinar de que forma os arquivos de imagem devem ser analisados, quais 
valores ou grupos de valores devem ser observados e como estão relacionados.
Abordagens de aprendizagem de máquina e principais tarefas6
O exemplo do Quadro 2 é mais simples e vai direto ao ponto: cada uma das 
colunas representa um atributo (característica). No aprendizado supervisio-
nado, pelo menos uma dessas colunas deve fazer menção a um atributo-alvo, 
ou seja, a um rótulo ou classe que identifique aquela instância. Assim, cada 
linha representa uma instância com os respectivos valores para cada um dos 
seus atributos. Nesse caso, o quadro mostra uma parte das instâncias de um 
conjunto de dados que relaciona os preços de casas na Califórnia com os 
atributos de: renda mediana na região (MedInc); idade mediana das casas 
na região (HouseAge); número de salas (AvgRooms); número de quartos 
(AvgBedrms); habitantes na região (Population); taxa de ocupação média das 
casas na região (AveOccup); latitude e longitude.
Fonte: Adaptado de Scikit-Learn (c2019).
M
ed
In
c
H
ou
se
A
ge
A
ve
Ro
om
s
A
ve
Be
dr
m
s
Po
pu
la
ti
on
A
ve
O
cc
up
La
ti
tu
de
Lo
ng
it
ud
e
Pr
ic
e
0 8.3252 41.0 6.984127 1.023810 322.0 2.555556 37.88 –122.23 4.526
1 8.3014 21.0 6.238137 0.971880 2401.0 2.109842 37.86 –122.22 3.585
2 7.2574 52.0 8.288136 1.073446 496.0 2.802260 37.85 –122.24 3.521
3 5.6431 52.0 5.817352 1.073059 558.0 2.547945 37.85 –122.25 3.413
4 3.8462 52.0 6.281853 1.081081 565.0 2.181467 37.85 –122.25 3.422
Quadro 2. Amostra de preços de casas (atributo-alvo) na Califórnia e suas respectivas 
características (atributos previsores)
Formalmente, o aprendizado supervisionado é definido segundo as três 
equações a seguir.
y = f(x)
onde:
 � y: atributo de saída
 � x: atributo de entrada
 � f: função que relaciona as entradas (x) com as saídas (y)
7Abordagens de aprendizagem de máquina e principais tarefas
D = {(xi, yi), i = 1, …, n}
onde:
 � D: conjunto de pares de entrada (xi) e saída (yi)
 � i: i-ésimo objeto do conjunto
 � n: quantidade total de objetos do conjunto
h = argmaxhϵℋP(h|D)
onde:
 � h: hipótese mais provável
 � ℋ: conjunto de hipóteses
 � P: função de probabilidade
A terceira equação determina que o aprendizado supervisionado ocorre 
quando a hipótese selecionada (h) dentro do conjunto de hipóteses (ℋ) é o 
parâmetro que maximiza (argmax) a função de probabilidade que relaciona 
cada hipótese ao conjunto de dados de entrada e saída (D) (RUSSEL; NORVIG, 
2013). Cabe ressaltar que os dados presentes em x e y não são necessariamente 
de tipo numérico, podendo ser de tipo simbólico. Ao final, espera-se que a 
função h seja tão próxima quanto possível da função f(x) da primeira equação.
O algoritmo só é capaz de generalizar (quando h ≅ f ) se o conjunto de 
hipóteses conter a hipótese (h) esperada e se os atributos de entrada seleciona-
dos possuírem características relevantes para o problema. Para tanto, pode-se 
imaginar que, quanto maior o conjunto de hipóteses e de atributos, melhor 
será a resolução. Contudo, à medida que eles aumentam, é possível que supe-
radaptações ocorram, situação em que o algoritmo acredita erroneamente que 
determinada característica tem relevância para um dado conjunto de entradas. 
Esse problema pode ser contornado aumentando a quantidade de exemplos 
ou encontrando um ponto de equilíbrio para cada um desses parâmetros, já 
que ampliar os conjuntos de dados, hipóteses e atributos levará sempre a um 
custo de processamento maior (RUSSEL; NORVIG, 2013).
Abordagens de aprendizagem de máquina e principais tarefas8
Aprendizado não supervisionado
Comum em tarefas descritivas, o aprendizado é considerado não supervisio-
nado quando a máquina deve aprender sobre a estrutura intrínseca dos dados, 
identificando similaridades ou dissimilaridades que permitam separar as 
instâncias em diferentes grupos (FACELI et al., 2011). Analogamente, pode-se 
pensar em diversas situações corriqueiras em que recorremos ao aprendizado 
não supervisionado, por exemplo, quando buscamos um padrão por meio da 
simples observação de algum evento. Esse é o caso, por exemplo, em que 
uma pessoa tenta compreender os elementos que compõem um novo jogo 
enquanto apenas o assiste pela primeira vez, mesmo que ninguém a esteja 
orientando sobre isso.
Após algum esforço e mesmo sem acompanhamento ou orientação, uma criança é 
capaz de reconhecer os elementos que fazem parte de um jogo de uma modalidade 
qualquer: jogadores, equipes, estrutura do ambiente, diferentes classes de acessórios, 
equipamentos e assim por diante — basta assistir a alguns eventos. Uma vez que ela 
tenha observado diversas partidas de esportes com bola, por exemplo, é provável 
que já saiba diferenciar com facilidade uma bola de outro objeto esférico qualquer, 
ou de outros objetos com outros formatos. Por meio de agrupamentos e associa-
ções, ela também é capaz de reconhecer indivíduos uniformizados, pertencentes ao 
mesmo grupo ou equipe. O mesmo ocorre com a máquina que se utiliza desse tipo de 
aprendizado, buscando por características similares entre cada instância presente no 
conjunto de dados que permitam agrupar ou separar essas instâncias umas das outras.
Contudo, é importante destacar que não se pode esperar do indivíduo que 
tenha reconhecido diferentes agrupamentos de objetos — apenas pela contínua 
observação — que saiba nomear ou, em outras palavras, rotular cada um dos 
objetos. Seria necessário que um observador o orientasse quanto aos rótulos 
que devem ou podem ser atribuídos às estruturas que ele identificou, o que já 
extrapola as atribuições do aprendizado não supervisionado.
9Abordagens de aprendizagem de máquina e principais tarefas
Enquanto no aprendizado supervisionado são conhecidos os rótulos corre-
tos, no aprendizado não supervisionado, a máquina poderá encontrar diferentes 
estruturas para um mesmo conjunto de dados conforme a variação dos parâ-
metros do algoritmo. Os grupos podem ou não ter algum significado válido, 
mas somente o observador poderá determinar isso, visto que o simples fato de 
encontrar alguma similaridade entre instânciasnão garante que as estruturas 
formadas possam ser aproveitadas para a analisar ou melhor compreender os 
dados. O aprendizado não supervisionado acarreta uma série de dificuldades 
adicionais se comparado ao aprendizado supervisionado. Entretanto, existem 
situações em que esse tipo de abordagem é a mais adequada ou a única possível 
de se resolver o problema. 
Um radiotelescópio pode ser programado para buscar determinados padrões 
em uma imagem a fim de detectar novos planetas, estrelas, cometas e outros 
objetos. Mesmo assim, é evidente que a imensidão do universo é demais para 
que se ouse pensar que qualquer pesquisa deva se restringir ao mundo que 
já se tem conhecimento atualmente. Logo, seria interessante que, paralelo 
às pesquisas convencionais, outros algoritmos objetivassem a busca não por 
padrões já conhecidos, mas por relações ainda não imaginadas pela comunidade 
científica, o que demandaria a flexibilidade que somente o aprendizado não 
supervisionado é capaz de fornecer.
Outras situações comuns envolvem aplicações de gestão e marketing 
empresarial, em que um algoritmo tem por finalidade encontrar produtos que 
estão frequentemente associados a uma base de dados de vendas, permitindo 
ao gestor determinar campanhas de publicidade mais eficientes, melhorar o 
mix de produtos e alterar o seu posicionamento nas prateleiras na tentativa de 
maximizar as vendas.
A Figura 4 mostra vários indivíduos de cores diferentes posteriormente 
agrupados com base nessa característica. No entanto, apesar de ser possível 
compreender a estrutura identificada, não quer dizer que esse tipo de agrupa-
mento tenha algum significado relevante. Pode ser que os indivíduos tivessem 
outras características mais significativas segundo as quais formariam outras 
estruturas, como altura, peso e até mesmo o gênero, conforme pode ser visto 
na imagem.
Abordagens de aprendizagem de máquina e principais tarefas10
Figura 4. Agrupamento de indivíduos com base no atributo cor.
Fonte: Orn Rin/Shutterstock.com.
É possível que a quantidade de amostras fosse insuficiente para o modelo 
identificar outras estruturas. Os parâmetros utilizados também podem in-
fluenciar os resultados, por exemplo, se o algoritmo utilizado for orientado a 
buscar por um agrupamento que resulte em três clusters. Havendo, coinciden-
temente, três cores diferentes e uma distribuição igualitária de amostras para 
essa característica, são grandes as chances de que, sem considerar os demais 
atributos, este seja favorecido no processo de treinamento. Caso o algoritmo 
fosse parametrizado para identificar dois grupos, as chances de a estrutura 
encontrada dividir os indivíduos entre homens e mulheres aumentam. Muitas 
são as aplicações desse tipo de aprendizado, e as tarefas de agrupamento e 
associação são as mais comuns
Aprendizado semissupervisionado
Nem sempre haverá uma classificação rígida dos métodos de aprendizado e 
treinamento adotados, e casos híbridos são muito utilizados. É o caso, por 
exemplo, dos métodos de aprendizado semissupervisionados. Esse tipo de 
11Abordagens de aprendizagem de máquina e principais tarefas
aprendizado tem por objetivo efetuar tarefas de classificação, porém, partindo 
de dados não completamente rotulados (WITTEN; FRANK, 2005).
A grande vantagem em utilizar ambas as abordagens em conjunto é o 
ganho em quantidade de dados disponíveis para o aprendizado. A técnica 
de aprendizado supervisionado depende dos dados previamente rotulados, o 
que envolve custos, já que alguém deverá filtrar e preparar esses dados para 
que possam ser utilizados. Ocorre que a quantidade de dados não rotulados 
existentes é muito maior, o que poderá impactar de forma positiva na qualidade 
do treinamento, caso seja possível utilizá-los em conjunto com os demais.
O processo pode ser dividido em quatro etapas. Primeiramente, deve-se 
treinar de maneira supervisionada a partir do conjunto de entradas que já 
possuem rótulo. Na sequência, o classificador deverá ser aplicado sobre o 
conjunto de dados que não possuem rótulos. Feito isso, a máquina precisa 
ser novamente treinada, agora utilizando todo o conjunto de dados. Por fim, 
a iteração deve ser repetida até que se possa obter um resultado satisfatório.
As etapas dois e três — de classificação dos dados não rotulados e de trei-
namento do conjunto completamente rotulado — podem recorrer a algoritmos 
como o de maximização de expectativa. Trata-se de um algoritmo iterativo 
de elevado grau de precisão para inferência bayesiana. É possível utilizar 
tanto as técnicas de MLE (maximum likelihood estimation, ou inferência por 
maximização de verossimilhança, em português) como de MAP (maximum a 
posteriori probability, ou probabilidade posterior máxima, em português). Em 
ambos os casos, pretende-se obter os parâmetros que minimizam as incertezas 
de se classificar um objeto em uma classe específica.
De forma resumida, espera-se que o algoritmo busque, por meio de fer-
ramentas estatísticas, características presentes nos objetos rotulados que 
aparecem também nos objetos não rotulados e que permitam associar um 
ao outro assumindo as mesmas classes. Assim, a característica em comum 
pode não ser a mesma utilizada para classificar os objetos já rotulados, mas 
serve de ponte para que o segundo obtenha a mesma classificação (WITTEN; 
FRANK, 2015).
Um exemplo bastante didático é o desenvolvimento de um algoritmo para 
prever a idade de um indivíduo com base em fotografias. Os rótulos são 
fornecidos pelos próprios indivíduos junto à sua imagem. No entanto, nem 
todos informam a sua idade, e outros podem eventualmente mentir a respeito 
dela. Em ambas as situações, faz-se necessária a aplicação de técnicas de 
aprendizado não supervisionado em conjunto com o supervisionado, tanto 
para estimar e reduzir a quantidade de erros pelos dados falsos fornecidos 
quanto pela falta de dados daqueles que nem mesmo informaram a sua idade.
Abordagens de aprendizagem de máquina e principais tarefas12
No exemplo anterior, a máquina buscará por características nas imagens 
que tenham relação direta com a idade, como sinais na pele (rugas). Utilizando 
os dados rotulados, a máquina pode aproximar as regras que levam de deter-
minadas características para a previsão da idade em si e, a partir do algoritmo 
não supervisionado, estimar, primeiramente, os erros de rotulação que podem 
existir, para só então tentar rotular as demais já com o algoritmo corrigido.
Aprendizado por reforço
O aprendizado por reforço, como o próprio nome sugere, visa reforçar ou 
atenuar parâmetros do modelo a partir dos resultados obtidos, conforme 
recompensas ou punições são dadas a cada tentativa. Pode-se imaginar esse 
tipo de aprendizado como uma espécie de adestramento, em que o que se está 
treinando (ou adestrando), apesar de ser incapaz de avaliar rótulos, pode ser 
instruído quanto à qualidade das decisões ou previsões tomadas por meio de 
recompensas e punições (RUSSEL; NORVIG, 2013).
A Figura 5 mostra a interação entre o agente (máquina) e o ambiente 
nesse tipo de aprendizado. A partir de uma situação ou estado atual (dados), o 
agente realiza uma ação com base no aprendizado acumulado até o momento, 
alterando o estado. O resultado dessa ação fará com que o ambiente retorne 
para o agente uma recompensa ou punição. Esse reforço servirá de guia para 
que o agente possa melhorar o seu desempenho.
Figura 5. Ciclo de aprendizado por reforço.
13Abordagens de aprendizagem de máquina e principais tarefas
Trata-se de um tipo de aprendizado mais abrangente, assim como o apren-
dizado não supervisionado, o que não acarreta necessariamente um melhor 
desempenho, uma vez que cada tipo de aprendizado tem suas vantagens e 
desvantagens. Mesmo assim, o algoritmo não está limitado a dados de en-
trada já avaliados por outro indivíduo, e compreender se as decisões tomadas 
resultaram em falha ou sucesso é suficiente para o algoritmo. Então, caberá 
ao algoritmo, utilizando ferramentas de probabilidadee recursos próprios do 
aprendizado de máquina, encontrar as decisões ou os parâmetros que foram 
mais relevantes para os casos repetidos de sucesso.
Imagine, por exemplo, um robô aspirador de pó que possui sensores de colisão e GPS 
para guiá-lo através do ambiente que se pretende limpar. Enquanto o GPS fornece 
as coordenadas atuais e permite que o robô armazene o caminho já percorrido, os 
sensores de colisão detectam a necessidade de mudança de percurso. Sem qualquer 
outro meio de sensoriamento, o robô só saberá que concluiu a limpeza do ambiente 
quando tiver encontrado todos os caminhos possíveis.
Para que o robô aspirador melhore a sua performance, serão necessárias várias 
repetições de um processo completo de limpeza, tentando encontrar rotas que o 
permitam concluir em menor tempo o percurso completo. Dessa forma, o tempo de 
conclusão da tarefa em conjunto com a quantidade de colisões funcionarão como 
mecanismos de reforço, permitindo que a máquina compreenda se as hipóteses 
adotadas na última iteração são melhores ou piores que as anteriores.
Esse também é um método de aprendizado muito utilizado pelos seres 
humanos. Ao contrário do exemplo citado no aprendizado não supervisionado, 
em que um indivíduo aprenderia as regras de um esporte a partir da observa-
ção de vários jogos, o aprendizado por reforço poderia representar o método 
utilizado pelo indivíduo para aprender as técnicas corretas de movimento para 
determinada modalidade que o levarão a resultados mais satisfatórios. À medida 
que os seus movimentos se tornem mais precisos, o resultado, provavelmente, 
será mais positivo, reforçando o que foi aprendido.
Abordagens de aprendizagem de máquina e principais tarefas14
Outra situação em que o aprendizado por reforço é o mais adequado ocorre 
quando as hipóteses para cada novo movimento ou etapa de um processo 
são muitas, como em um jogo de xadrez. A máquina precisa saber qual é a 
movimentação mais recomendada a cada jogada. No entanto, dificilmente 
disporá de orientações diretas para cada uma das combinações e, tanto para a 
máquina quanto para um jogador real, é comum tomar decisões com o intuito 
de atingir um objetivo muito mais distante. O resultado obtido pela execução 
da estratégia servirá como mecanismo de recompensa ou punição (RUSSEL; 
NORVIG, 2013).
No caso do xadrez, a recompensa é obtida sempre que, por algum motivo, 
um xeque-mate tenha ocorrido a seu favor, assim como a punição é obtida 
caso tenha ocorrido em favor do adversário. Alvos menores também podem 
ser determinados, até mesmo fracionando o algoritmo em partes menores, 
em que recompensas seriam ativadas conforme a quantidade de peças do 
adversário diminui ou, ainda, quando um xeque é aplicado. Quaisquer que 
sejam os gatilhos pretendidos de recompensa ou punição, eles deverão ser 
explicitamente determinados no algoritmo para que seja possível diferenciar 
essa entrada específica de todas as demais.
Em resumo, o aprendizado por reforço pode iniciar de maneira aleatória 
e concluir no momento em que se tornar capaz de tomar as decisões corretas 
para que atinja sempre a recompensa e não a punição. Quanto melhor for a 
capacidade de exploração do algoritmo, mais bem-sucedido ele será. 
BALDOMINOS, A.; SAEZ, Y.; ISASI, P. A survey of handwritten recognition with MNIST 
and EMNIST. Applied Sciences, v. 9, n. 3169, p. 1–16, 2019. Disponível em: https://www.
mdpi.com/2076-3417/9/15/3169/pdf. Acesso em: 14 fev. 2020.
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio 
de Janeiro: LTC, 2011.
RUSSEL, S. J.; NORVIG, P. Inteligência artificial. 3. ed. Rio de Janeiro: LTC, 2013.
SCIKIT-LEARN. California housing dataset. c2019. Disponível em: https://scikit-learn.org/
stable/modules/generated/sklearn.datasets.fetch_california_housing.html#sklearn.
datasets.fetch_california_housing. Acesso em: 14 fev. 2020.
WITTEN, I. H.; FRANK, E. Data mining: practical machine learning tools and techniques. 
San Francisco, CA: Morgan Kaufmann Publishers, 2005. 
15Abordagens de aprendizagem de máquina e principais tarefas
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Abordagens de aprendizagem de máquina e principais tarefas16
FUNDAMENTOS DE 
APRENDIZAGEM 
DE MÁQUINA
Maikon Lucian Lenz
Aprendizagem não 
supervisionada: 
agrupamento
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir uma tarefa de agrupamento (clustering).
 � Descrever os passos do algoritmo k-means.
 � Determinar critérios para a avaliação de clusters.
Introdução
O agrupamento é uma das tarefas mais comuns que compõem o apren-
dizado não supervisionado. Os grupos formados também são conheci-
dos como clusters e dependem muito das características do algoritmo 
utilizado.
Neste capítulo, além dos conceitos que envolvem tarefas de agru-
pamento, você conhecerá o algoritmo de K-Médias e os critérios de 
avaliação mais utilizados para determinar se os grupos condizem com 
os dados analisados.
1 Agrupamento
Nem sempre será possível contar com dados já classificados para proceder com 
o treinamento, descartando a possibilidade de se utilizar tarefas de aprendizado 
supervisionado. Os dados obtidos podem ser ainda mais restritos, contendo 
apenas os atributos previsores (de entrada) e nenhuma informação, nem mesmo 
de recompensa ou punição, situação em que até mesmo tarefas de aprendizado 
por reforço estão descartadas. Para situações como essa, podem ser utilizadas 
tarefas de aprendizado não supervisionado. Esse tipo de aprendizado não requer 
informações acerca dos atributos alvo. Pelo contrário, os algoritmos desse 
tipo de aprendizado buscam por características relevantes de um conjunto de 
dados que permitam separá-los uns dos outros.
O agrupamento, também conhecido como clusterização (do inglês, cluste-
ring), enquadra-se no aprendizado não supervisionado e consiste na divisão 
dos dados em grupos (em inglês, denominado como clusters) de características 
similares, ou seja, que compartilham valores próximos entre os atributos de 
entrada. A forma como esses grupos são divididos varia de acordo com a tarefa 
utilizada. A Figura 1 demonstra duas formas diferentes de se agrupar os dados. 
O eixo X representa um atributo, e o eixo Y, outro, enquanto dados que possuem 
valores próximos entre esses atributos são inseridos no mesmo grupo. Deve-se 
observar, entretanto, que o algoritmo utilizado afeta diretamente os grupos 
aprendidos, já que as instâncias pertencentes a determinado grupo na Figura 
1a não são em todos os casos as mesmas instâncias agrupadas na Figura 1b.
Figura 1. Agrupamento (a) hierárquico e (b) particional, com grupos que não se sobrepõem.
Fonte: Maikon Lucian Lenz/Shutterstock.com.
(a) (b)
Aprendizagem não supervisionada: agrupamento2
Enquanto os algoritmos particionais agrupam as instâncias dentro de 
um cluster de forma exclusiva, os algoritmos hierárquicos podem aninhar 
clusters criando uma hierarquia em que uma mesma instância pertence a dois 
ou mais clusters ao mesmo tempo, o que é facilmente distinguível em ambos 
os métodos comparados pela Figura 1. Existem tipos de dados em que essa 
relação (hierárquica) é bastante comum, como em modelos biológicos nos 
quais a estrutura dos membros, de modo geral, possui algum tipo de hierarquia 
(FACELI et al., 2011). O agrupamento pode ser definido como a busca por 
uma estrutura de clusters (grupos) nos quais as suas instâncias compartilham 
características similares relevantes para a análise dos dados. 
É importante destacar que o resultado do agrupamento não carrega definição sobre 
os grupos formados, ouseja, apesar de os dados serem divididos como em uma 
tarefa de classificação, no agrupamento, não há rótulo definido para eles. No entanto, 
sabe-se que, qualquer que seja o rótulo passível de ser atribuído ao grupo, os dados 
pertencentes a ele têm características similares, como em uma tarefa de classificação. 
Apesar disso, tarefas de agrupamento são muito úteis justamente para analisar dados 
que ainda não têm sua estrutura conhecida, ou ainda, na tentativa de buscar por novos 
padrões e características relevantes em uma estrutura.
Uma vez agrupados, os clusters formados podem ser analisados por um 
observador que poderá rotulá-los conforme suas características em comum. 
Isso torna a tarefa de agrupamento uma técnica recorrente na análise de 
dados que deverão ser classificados no futuro a partir das categorias a serem 
descobertas por ela. Também é possível que a tarefa de agrupamento encontre 
objetos intrusos, ou outliers, em inglês. Os outliers correspondem a instâncias 
no conjunto de dados que não são possíveis de inserir em nenhum grupo, pois 
possuem características muito diferentes de todos eles.
Os grupos, ou clusters, podem se apresentar de diversas formas, segundo 
o tipo de algoritmo e o objetivo pretendido no agrupamento (FACELI et al., 
2011). Cluster bem separado (Figura 2a) diz respeito ao grupo cujas instâncias 
estão, em todos os casos, mais próximas dos membros desse mesmo grupo 
do que de outras instâncias de outros grupos. Há uma divisão nítida entre os 
3Aprendizagem não supervisionada: agrupamento
grupos. Cluster com base em centro (Figura 2b) adota o centro do grupo como 
referência. Assim, as instâncias que pertencem a ele são definidas segundo 
a distância desse ponto central, e não dos demais membros em si como na 
situação anterior (FACELI et al., 2011). Nesse caso, podem existir instâncias, 
especialmente, nas bordas do grupo, próximas das instâncias de outro grupo.
O cluster contínuo é similar ao cluster bem separado, exceto que, para o 
caso contínuo, o vizinho mais próximo serve de referência (Figura 2c). Assim, 
apesar de, na média de todos os membros do grupo, um ponto poder ser mais 
perto de outro grupo, apenas o ponto mais próximo é considerado para definir 
a que grupo pertence. O cluster com base em densidade (Figura 2d) divide os 
grupos segundo níveis de densidade. Logo, o que separa um grupo de outro 
são as transições de baixa densidade entre eles, ou seja, regiões em que há 
pouca quantidade de dados, e cada grupo configura um aglomerado de grande 
quantidade de dados bem distribuídos dentro dele. Há ainda a definição de 
cluster por similaridade (Figura 2e), em que o critério de agrupamento adota 
a presença ou não de similaridades entre os membros (FACELI et al., 2011).
Figura 2. (a) Cluster bem separado; (b) com base no centro; (c) cluster contínuo; (d) com 
base em densidade e (e) cluster por similaridade.
Fonte: Maikon Lucian Lenz/Shutterstock.com. 
Aprendizagem não supervisionada: agrupamento4
Três critérios podem ser utilizados para avaliar o agrupamento: compacta-
ção, encadeamento ou separação espacial. A compactação visa à associação 
de objetos com pequena variação dentro do mesmo cluster mais eficientes 
na detecção de grupos esféricos. O encadeamento lida com o conceito de 
vizinhança, em que objetos próximos devem pertencer ao mesmo grupo, além 
de ter bons resultados em grupos bem separados. Já a separação espacial é 
mais genérica e considera apenas a distância entre os clusters (FACELI et al., 
2011). Qualquer que seja o critério de agrupamento, espera-se que esse tipo de 
aprendizado não supervisionado separe os dados em grupos com características 
similares entre si para que possam ser futuramente utilizadas para análises 
ou tarefas de classificação.
2 Algoritmo K-Médias
O algoritmo de K-Médias utiliza o critério de compactação e naturalmente 
apresenta resultados bastante satisfatórios para grupos de formato esférico 
(FACELI et al., 2011).
Assim como outros algoritmos, o K-Médias define cada grupo segundo 
um objeto representativo através de medidas de centroide (ponto médio do 
cluster) da Equação 1 ou de medoide (ponto mais representativo do cluster, 
corresponde, em geral, ao ponto de menor distância para os demais membros, 
conforme a Equação 2). Enquanto o centroide é apenas um ponto de referência, 
podendo estar associado à mesma posição de um objeto do cluster ou não, o 
medoide é a escolha de um dos membros do cluster para servir de referência. 
(1)
onde:
j: índice do cluster
: centroide do j-ésimo cluster
nj: número de instâncias no cluster
Cj: j-ésimo cluster
xi: i-ésima instância
5Aprendizagem não supervisionada: agrupamento
(2)
onde:
xm: m-ésima instância do cluster
d: função de distância
O K-Médias é um algoritmo do tipo particional que busca reduzir o erro 
quadrático médio dos agrupamentos de forma iterativa. Adotando-se E como 
sendo o erro, é função do K-médias encontrar o agrupamento que minimiza 
o erro (E) de acordo com a Equação 3 (FACELI et al., 2011):
(3)
onde:
E: erro quadrático médio
k: quantidade de clusters
A Equação 3 determina a quantidade de clusters pretendidos a partir do 
valor de k. O algoritmo deve então buscar um valor que minimize o erro dada 
uma função de distância d que pode ser a simples diferença entre a instância 
xi e o centroide . Encontrar o valor ideal de k é um dos grandes desafios 
desse tipo de abordagem, uma vez que o conjunto de dados pode apresentar 
diferentes estruturas e quantidades variadas dessas estruturas, dependendo 
da forma que se está buscando.
O valor de k é livre para ser determinado pelo usuário. Esse valor afetará 
diretamente o processo de aprendizado, uma vez determinada a quantidade de 
clusters que devem ser formados. A definição desse número pode ter base em 
conhecimentos prévios do usuário que, apesar de não possuir dados rotulados, 
sabe quais as categorias que se pretende obter. Em outros casos, o k pode ser 
simplesmente resultado de testes com diferentes parâmetros para, só após os 
resultados de agrupamento, concluir a quantidade mais adequada de clusters 
que devem ser formados para o problema pretendido.
Aprendizagem não supervisionada: agrupamento6
A seguir, o algoritmo, em pseudocódigo, apresenta o conceito básico do 
algoritmo de K-Médias. Deve-se ressaltar, no entanto, que muitas variações 
desse algoritmo já foram criadas, cada uma com vantagens em aplicações 
específicas.
Iniciar os valores de centroides dos k clusters 
Enquanto houver alterações no centroide, repetir:
Iterar conjunto de dados fazendo para cada instância:
Calcular a função de distância entre a instância e o centroide dos clusters.
Vincular a instância ao cluster mais próximo.
Fim da iteração
Iterar cada conjunto de dados fazendo para cada cluster:
Calcular o novo centroide
Fim da iteração
Fim da repetição
A inicialização dos valores de centroide pode ser feita de maneira aleató-
ria. Os dados são vinculados ao centroide mais próximo, que é recalculado. 
O processo se repete até que nenhuma instância mude de grupo, mantendo 
o centroide constante. Conhecendo o algoritmo é fácil compreender o nome 
K-Médias adotado, em que o termo k faz menção ao parâmetro que especifica 
a quantidade de clusters buscados, enquanto médias se refere ao critério de 
distância adotado: média quadrática (WITTEN; FRANK, 2005).
Assim como para outros algoritmos de agrupamento, o algoritmo de 
K-Médias dificilmente resultará em um mínimo global (solução ideal). Nesse 
caso, a limitação decorre da influência que o valor inicial dos centroides, em 
geral, escolhidos de maneira aleatória, tem sobre os clusters formados. Grupos 
diferentes podem ser formados apenas alterando os valores iniciais de centroide.
Inexistem algoritmos capazes de detectar todos os tipos de estruturas pre-
sentes em um conjunto de dados. O algoritmo será mais ou menos eficiente a de-
pender da forma como os dados estão distribuídos. Por exemplo, é provável que 
o K-Médias não seja capazde detectar o grupo em forma de anel da Figura 3, 
apenas os grupos em formas esféricas (FACELI et al., 2011).
7Aprendizagem não supervisionada: agrupamento
Figura 3. Grupos detectados pelo K-Médias.
Fonte: Maikon Lucian Lenz/Shutterstock.com.
Por conta dessas restrições, é importante que sejam feitas avaliações dos 
grupos formados para que os parâmetros do algoritmo possam ser refinados, 
substituídos por outro modelo de agrupamento ou até mesmo complementados 
com outros. O simples fato de encontrar e sugerir grupos para os dados em 
questão não quer dizer que o agrupamento está sendo efetivo.
3 Avaliação de grupos
Os grupos formados pelo algoritmo de K-Médias podem variar em quanti-
dade e em relação a quais instâncias pertencem ao mesmo grupo. Diferentes 
parâmetros resultarão em diferentes níveis de dispersão, tanto entre os grupos 
(intercluster) quanto entre as instâncias (intracluster). Esses conceitos são 
apresentados na Figura 4.
Aprendizagem não supervisionada: agrupamento8
Figura 4. Tipos de dispersão: intercluster e 
intracluster.
Fonte: Maikon Lucian Lenz/Shutterstock.com.
A distância entre dois clusters corresponde à menor distância entre duas 
instâncias pertencentes a cada um deles e pode ser calculada por meio da 
Equação 4:
d(Ca,Cb) = min d(xai,xbj) (4)
onde:
Ca,Cb: clusters diferentes
xai: i-ésima instância do cluster Ca
xbj: j-ésima instância do cluster Cb
O problema em se determinar a quantidade de grupos pode ser simplificado 
medindo o quanto a inclusão de um novo grupo contribui para reduzir as 
dispersões intercluster e intracluster. Para tanto, deve-se repetir o algoritmo 
de K-Médias e selecionar o valor de k a partir do qual a redução na dispersão 
pouco é afetada. Esse método é conhecido como método de Elbow, ou cotovelo, 
já que representa a mudança drástica de sentido no gráfico que relaciona o 
parâmetro k à dispersão entre os grupos (intercluster) ou entre as instâncias 
de um mesmo grupo (intracluster), conforme é possível ver na Figura 5.
9Aprendizagem não supervisionada: agrupamento
Figura 5. Método Elbow de seleção do parâmetro k.
Fonte: Adaptada de Maikon Lucian Lenz/Shutterstock.com.
M
ét
ric
a
Parâmetro k
A variância é comumente utilizada como função para medir a dispersão in-
tracluster, além de mensurar o quão compacto um cluster pode ser (Equação 5):
(5)
onde:
nx: quantidade total de instâncias
A conectividade mede o quanto instâncias de maior proximidade, ditas 
vizinhas, pertencem ao mesmo grupo (Equação 6):
(6)
onde:
nv: quantidade total de instâncias vizinhas à instância xi
vij: j-ésima instância vizinha à instância xi
Aprendizagem não supervisionada: agrupamento10
Por fim, a silhueta é uma métrica que avalia o quanto uma instância está 
adequadamente vinculada a um cluster. Os valores de silhueta variam de –1, 
quando um objeto deveria estar vinculado a outro cluster, até 1, quando um 
objeto está associado ao cluster ideal (FACELI et al., 2011). A medida de 
silhueta utiliza os valores de distância média de uma instância para os seus 
parceiros de cluster (Equação 7) e a menor distância deste para os demais clus-
ters (Equação 8) para avaliar tanto as instâncias individualmente (Equação 8) 
quanto a totalidade dos clusters em si (Equação 9) (FACELI et al., 2011).
(7)
(8)
(9)
(10)
onde:
n: quantidade de instâncias do cluster
11Aprendizagem não supervisionada: agrupamento
Os critérios de avaliação citados lidam com abordagens de aprendizado não 
supervisionada, portanto, não buscam por soluções corretas, mas por soluções 
que encontrem estruturas apropriadas e que possam revelar outras ocultas. 
Isso porque um mesmo conjunto de dados pode ter diferentes soluções em 
uma mesma quantidade de grupos, utilizando atributos e critérios diferentes 
de agrupamento. Nem por isso, algum deles estará errado. Em outras pala-
vras, a avaliação tem por objetivo determinar se a estrutura encontrada de 
fato existe e se faz sentido (FACELI et al., 2011). A Figura 6 apresenta duas 
soluções de K-Médias para o mesmo conjunto de dados utilizando diferentes 
parâmetros de k.
Figura 6. (a) Dois clusters (k = 2). (b) Quatro clusters (k = 4).
Fonte: Maikon Lucian Lenz/Shutterstock.com.
O baixo custo computacional, geralmente associado ao algoritmo de 
K-Médias, é um dos fatores que o tornam tão utilizado, entretanto, a dificul-
dade em se encontrar a quantidade de clusters mais adequada e inicializar 
os centroides de cada cluster demandam o uso de rotinas de validação que 
recorrem a medidas de distância e dispersão intercluster e intracluster. Esse 
tipo de algoritmo responde melhor para grupos de formato esférico sem so-
breposição entre eles (JAMES, et al., 2013).
Aprendizagem não supervisionada: agrupamento12
FACELI, K. et al. Inteligência artificial: uma abordagem de aprendizado de máquina. Rio 
de Janeiro: LTC, 2011.
JAMES, G. et al. An introduction to statistical learning: with application in R. New York: 
Springer, 2013.
WITTEN, I. H.; FRANK, E. Data mining: practical machine learning tools and techniques. 
2nd ed. Boston: Morgan Kaufmann, 2005.
Leituras recomendadas
NILSSON, N. J.  Artificial intelligence: a new synthesis.  San Francisco: Morgan Kaufmann, 
1998.
RUSSELL, S. J.; NORVIG, P. Inteligência artificial. 2. ed. Rio de Janeiro: Campus, 2004.
13Aprendizagem não supervisionada: agrupamento
FUNDAMENTOS 
DE APRENDIZAGEM 
DE MÁQUINA 
Maikon Lucian Lenz
Aprendizagem não 
supervisionada: 
aplicação do k-means
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Processar um conjunto de dados para a tarefa de agrupamento 
(clustering).
 � Empregar o algoritmo k-means para uma tarefa de agrupamento.
 � Aplicar métricas para avaliar uma formação dos clusters.
Introdução
A aplicação de algoritmo de agrupamento depende de uma seleção 
adequada dos dados, e inúmeras ferramentas foram desenvolvidas para 
facilitar a implementação desses dados, com destaque para a biblioteca 
SciKit-Learn para Python. A biblioteca inclui métodos e classes configurá-
veis para todas as abordagens de aprendizado. O algoritmo de k-means 
permite a configuração de diversos parâmetros que influenciarão não 
apenas os clusters encontrados, mas também a velocidade com que os 
dados são processados e a quantidade de memória necessária.
Neste capítulo, você verá como dados podem ser carregados para 
variáveis com o auxílio das bibliotecas de SciKit-Learn, organizados e 
manipulados a partir de bibliotecas como Pandas e Seaborn. Também 
serão treinados diferentes conjuntos de dados utilizando o algoritmo de 
k-means, incluso nessas bibliotecas, e as métricas disponíveis para avaliar 
a eficiência dos agrupamentos realizados.
1 Ferramentas e dados
Existem muitas linguagens de programação e ferramentas adequadas para todo 
o tipo de aplicação. Você pode optar pela linguagem de sua preferência para 
desenvolver sistemas que abordem algum tipo de aprendizado de máquina. 
No entanto, a linguagem Python é uma das primeiras opções entre os desenvol-
vedores e pesquisadores quando o assunto é análise e processamento de dados.
Devido à sintaxe simplificada e de fácil aprendizado, o Python conquistou 
espaço significativo em trabalhos acadêmicos, a maioria deles sobre análise 
de dados. Assim, surgiram muitas bibliotecas e ferramentas associadas ao 
Python que permitiram a manipulação cada vez mais facilitada de dados.
Em aprendizado de máquina, uma das bibliotecas mais importantes, espe-
cialmente para aqueles que estão iniciando na área, é a SciKit-Learn, totalmente 
voltada para problemas de aprendizado de máquina. Ela conta com ferramentas 
de pré-processamento de dados, interpretação de arquivos, criação de gráficos 
e outras formas de exibição das informações.
Também estão inclusos na biblioteca SciKit-Learn conjuntos de dados úteis 
para todos os tipos de abordagens de aprendizado de máquina, com destaque 
para: o conjunto íris, com 150 amostras de três espécies deflores do gênero íris 
em que, para cada uma, são atribuídos o comprimento e a largura de pétalas 
e sépalas, além da espécie em si, utilizado para modelos de classificação; 
e o conjunto Boston house-prices (preço de casas em Boston), utilizado para 
modelos de regressão, com 506 amostras de casas acompanhadas do atributo 
alvo preço e de 13 atributos previsores que incluem a taxa de criminalidade 
per capita da região, o número de quartos, entre outros.
Outras bibliotecas bastante úteis na análise de dados são: Numpy, com 
recursos que facilitam o cálculo e a manipulação de vetores, além de servir 
de base para o SciKit-Learn; Pandas, para criar estruturas de dados de fácil 
visualização e integração; Matplotlib e uma extensão chamada Seaborn, ambas 
para criação de gráficos.
Com todos esses recursos, você será capaz de: carregar dados de diferentes 
fontes, arquivos, páginas da web e conjuntos de dados embutidos nas biblio-
tecas; criar conjuntos aleatórios; visualizar e analisar os dados recebidos, 
além de suas estatísticas que serão úteis para determinar qual é a melhor 
abordagem a seguir no aprendizado de máquina, bem como para adequá-los 
aos próximos passos, por exemplo, ajustando a escala dos atributos para que 
todos contribuam igualmente no processo de treinamento; testar diferentes 
algoritmos de aprendizado e o impacto que mudanças no conjunto de dados 
Aprendizagem não supervisionada: aplicação do k-means2
e seus respectivos parâmetros têm sobre o modelo escolhido; exibir as infor-
mações utilizando gráficos e recursos visuais de forma facilitada.
Todos os exemplos apresentados e as bibliotecas mencionadas podem ser 
utilizados no ambiente de desenvolvimento do Jupyter, que pode ser facilmente 
instalado por meio da plataforma Anaconda. A instalação das bibliotecas pode 
ser feita pelo prompt de comando do Anaconda utilizando o comando conda 
install package, em que o termo package deve ser substituído pela 
biblioteca desejada. As bibliotecas aqui utilizadas podem ser instaladas por 
meio de um único comando: conda install scikit-learn pandas 
seaborn matplotlib numpy. Concluídas as instalações, o Jupyter 
pode ser iniciado pelo comando: jupyter notebook. O exemplo a seguir 
demonstra de que forma um conjunto de dados da biblioteca SciKit-Learn é 
carregado.
# Exemplo 1
# importa o módulo que contém os conjuntos de dados
from sklearn import datasets as ds
# carrega o conjunto iris de dados
iris = ds.load_iris()
A biblioteca SciKit-Learn é dividida em módulos, e o módulo datasets 
é destinado, exclusivamente, aos conjuntos de dados embarcados na biblioteca. 
O caractere # indica que o restante da linha será ignorado pelo compilador, 
servindo apenas de comentário. A primeira linha de instrução importa o 
módulo datasets existente na biblioteca SciKit-Learn (sklearn), que 
passará a ser referenciado somente pelo nome ds. Na sequência, a variável 
iris recebe um dicionário contendo o conjunto de dados íris através do 
método load_iris(). A variável iris contém seis itens:
 � data — matriz ou vetor em que cada linha representa uma instância, 
e as colunas são diferentes atributos de uma mesma instância;
 � target — índice para os rótulos de cada instância na mesma ordem 
em que aparecem em data;
3Aprendizagem não supervisionada: aplicação do k-means
 � target_names — os nomes dados a cada um dos rótulos;
 � feature_names — nomes de cada uma das colunas de atributos;
 � DESCR — um texto descrevendo autoria e características do conjunto 
de dados;
 � filename — caminho em que se encontra o arquivo com os dados.
Essa disposição não é a mais prática para visualizar e analisar os dados. 
Então, é possível recorrer à biblioteca Pandas e criar um objeto DataFrame, 
que se parece com uma planilha, conforme o exemplo a seguir.
# Exemplo 2
# importa a biblioteca pandas
import pandas as pa
# cria um DataFrame a partir do objeto íris 
d f = p a . D a t a F r a m e ( d a t a = i r i s [ ' d a t a ' ] , 
columns=iris['feature_names'])
# adiciona ao DataFrame a coluna de atributos alvo
dfT = df.copy()
dfT['target'] = iris['target']
display(df), display(dfT)
O parâmetro columns utiliza o vetor feature_names para nomear 
cada uma das colunas de atributos. Já o parâmetro data pode receber todos 
os valores de atributos previsores e do atributo alvo, para isso, basta que os 
vetores sejam concatenados antes da criação do DataFrame. No entanto, 
adicionar essa coluna do atributo alvo separadamente é mais simples e legível. 
O resultado dessa transformação pode ser visualizado no Quadro 1.
Aprendizagem não supervisionada: aplicação do k-means4
sepal 
length 
(cm)
sepal 
width 
(cm)
petal 
lenght 
(cm)
petal 
width 
(cm)
target
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
… … … … … …
Quadro 1. Quadro de dados utilizando a biblioteca Pandas e o conjunto de dados íris do 
SciKit-Learn
Observe que o conjunto de dados íris contém quatro atributos previsores 
que especificam tamanhos de sépala e pétala, que são: sepal length (compri-
mento da sépala); sepal width (largura da sépala); petal length (comprimento 
da pétala); e petal width (largura da pétala). Todos os atributos previsores são 
dados em centímetros. O Quadro 1 exibe apenas as cinco primeiras instâncias 
do conjunto em que cada linha representa uma delas com seus respectivos 
valores para cada atributo.
O atributo denominado target é o atributo alvo, e os seus valores indicam 
uma das três classes possíveis de flor que a instância pode pertencer: setosa 
(0), versicolor (1) e virginica (2). Esse atributo, no entanto, não será utilizado 
no treinamento de tarefas de agrupamento, já que esse tipo de tarefa é de 
aprendizado não supervisionado e visa encontrar clusters que descrevam 
características intrínsecas dos dados.
Outra vantagem de se utilizar o DataFrame é o uso do método des-
cribe, que exibe um resumo com estatísticas a respeito de cada coluna 
de atributos (Quadro 2). Essas informações poderão guiá-lo na escolha da 
abordagem de aprendizado a ser utilizada e na necessidade da preparação e 
adequação dos dados.
5Aprendizagem não supervisionada: aplicação do k-means
sepal 
length 
(cm)
sepal 
width 
(cm)
petal 
length 
(cm)
petal 
width 
(cm)
target
count 150.000000 150.000000 150.000000 150.000000 150.000000
mean 5.843333 3.057333 3.758000 1.199333 1.000000
std 0.828066 0.435866 1.765298 0.762238 0.819232
min 4.300000 2.000000 1.000000 0.100000 0.000000
25% 5.100000 2.800000 1.600000 0.300000 0.000000
50% 5.800000 3.000000 4.350000 1.300000 1.000000
75% 6.400000 3.300000 5.100000 1.800000 2.000000
max 7.900000 4.400000 6.900000 2.500000 2.000000
Quadro 2. Resumo estatístico do DataFrame do conjunto de dados íris
A biblioteca Pandas conta ainda com diversos métodos de leitura de dados 
a partir de outras fontes, por exemplo:
 � read_clipboard — cria um DataFrame a partir dos dados co-
piados na prancheta (clipboard) do sistema operacional;
 � read_csv — arquivos em que colunas (atributos) são separadas por 
algum caractere especial, geralmente uma vírgula, e cada linha repre-
senta uma nova instância;
 � read_html — varre uma página na web na busca por tabelas que 
possam conter dados;
 � read_json — formato textual para representação de dados de qual-
quer tipo;
 � read_sql — leitura de banco de dados SQL, entre outros.
Aprendizagem não supervisionada: aplicação do k-means6
Além disso, é possível criar conjuntos de dados com valores aleatórios 
utilizando métodos como o make_blobs da biblioteca SciKit-Learn. 
Nos parâmetros, devem ser especificados a quantidade de instâncias (n_sam-
ples), a quantidade de atributos (n_features), um número aleatório 
para servir de base (random_state), o desvio padrão que os dados devem 
apresentar (cluster_std) e outros menos usuais. O exemplo a seguir mostra 
como criar um conjunto de dados de 100 instâncias com quatro atributos.
# Exemplo 3:
from sklearn import datasetsas ds
mb = ds.make_blobs(n_samples=100, n_features=4)
O resultado é uma tupla em que o primeiro item é uma matriz contendo 
os valores de cada um dos quatro atributos das 100 instâncias, e o segundo 
item é um vetor contendo o rótulo de cada instância.
2 Aplicação de k-means em um conjunto de 
dados
O SciKit-Learn inclui diversos algoritmos de agrupamento por meio do módulo 
sklearn.cluster. São classes com métodos de treinamento e predição. 
Para utilizar esses recursos, um objeto deve ser criado a partir da classe do 
algoritmo que se deseja implementar, configurando as propriedades do objeto 
para alterar os parâmetros do algoritmo (SCIKIT-LEARN, 2019a).
A biblioteca implementa o algoritmo de k-means. No modo padrão, é feita 
a escolha aleatória dos centroides (conforme quantidade especificada pelo 
parâmetro k), iniciada a classificação dos objetos mais próximos de cada 
centroide e feito o cálculo dos novos centroides a partir dos objetos perten-
centes ao grupo. Os últimos dois passos são repetidos até que não ocorram 
modificações nos grupos entre as iterações. Há ainda a possibilidade de utilizar 
uma versão modificada do algoritmo de k-means conhecida como k-means++, 
que seleciona os pontos iniciais de centroide por meio de um método, parte 
7Aprendizagem não supervisionada: aplicação do k-means
aleatório, parte estatístico, que evitará os piores casos de inicialização que 
poderiam ocorrer no algoritmo básico (ARTHUR; VASSILVITSKII, 2007).
O k-means++ não apenas está disponível na biblioteca do SciKit-Learn 
como é a opção padrão do módulo k-means. A inicialização aleatória pode 
ser utilizada por meio do parâmetro init='random', conforme o exemplo 
a seguir.
# Exemplo 4
# importação do módulo KMeans da biblioteca SciKit-Learn
from sklearn.cluster import KMeans
# alg recebe o objeto do método KMeans aleatório básico
alg = KMeans(init='random')
Caso seja omitido, o parâmetro init padrão será init=’k-means++’. 
Outros parâmetros podem ser configurados, como: n_clusters, n_init, 
max_iter, tol, precompute_distances, verbose, random_state, 
copy_x, n_jobs e algorithm.
O parâmetro n_clusters recebe um valor inteiro e define a quantidade 
de grupos buscados, geralmente conhecido por parâmetro k. O n_init, 
também do tipo inteiro, determina a quantidade de vezes que o algoritmo 
será executado na íntegra com novos valores iniciais para os centroides, en-
tretanto, apenas o melhor resultado será selecionado. O padrão é de 10 vezes 
(SCIKIT-LEARN, 2019b).
A quantidade de iterações máximas executadas também pode ser limitada 
pelo valor de max_iter (padrão de 300 iterações). Caso o algoritmo de 
k-means não estabilize antes desse limite, as iterações são interrompidas de 
qualquer forma (SCIKIT-LEARN, 2019b). Apesar de contrariar a teoria do 
algoritmo, essa é uma limitação prática para evitar que problemas excessiva-
mente complexos resultem em numerosas iterações atrasando o restante da 
aplicação, muitas vezes, sem grande contribuição para melhorar o resultado.
Aprendizagem não supervisionada: aplicação do k-means8
A variável tol é um valor do tipo float (ponto flutuante) para determinar 
a tolerância da variância admitida para que seja admitida a convergência do 
resultado (SCIKIT-LEARN, 2019b). Idealmente, espera-se que somente uma 
solução seja válida, no entanto, arredondamentos e limitações de casas decimais 
no cálculo poderiam fazer com que pequenas variações fossem mascaradas, 
resultando em mudanças de agrupamento que não estabilizariam o algoritmo. 
Por padrão: tol = 0,0001.
O parâmetro precompute_distances pode ser definido como auto 
(padrão) ou true/false. Quando ativado, ele acelera o processo de cálculo 
das distâncias, porém pode consumir uma quantidade significativa de memória 
para problemas com muitos clusters e amostras. No modo automático (auto), 
a pré-computação das distâncias será feita sempre que clusters · amostras ≤ 
12.000.000 (SCIKIT-LEARN, 2019b). Já o valor de verbose, de tipo inteiro, 
define o nível de informações retornadas pelo algoritmo durante as iterações. 
Se omitido, assumirá o valor zero, e nenhuma informação é retornada durante 
o processo. Pode ser útil para a depuração do código e para compreender com 
mais profundidade a forma como o algoritmo é executado (SCIKIT-LEARN, 
2019b).
Para iniciar os centroides de forma aleatória, o algoritmo depende de um 
algoritmo gerador de valores pseudoaleatórios com base no valor inteiro de 
random_state para melhorar a condição de aleatoriedade (SCIKIT-LEARN, 
2019b). Por padrão, copy_x recebe o valor true, determinando que os 
valores originais não sejam diretamente manipulados durante as iterações, 
preservando o resultado de pequenas variações durante o cálculo que poderiam 
atrasar o algoritmo (SCIKIT-LEARN, 2019b). Essa configuração, no entanto, 
afeta a quantidade de memória utilizada por demandar a cópia dos valores 
antes de cada iteração.
O valor de n_jobs permite efetuar mais de uma inicialização do k-means 
em tarefas paralelas. É um inteiro que define a quantidade de processamentos 
em paralelo, o padrão é apenas 1, fazendo com que a quantidade máxima 
permitida de processadores seja selecionada através do valor –1 (SCIKIT-
-LEARN, 2019b). Por fim, algorithm seleciona entre três formatos de 
cálculo das distâncias:
1. full — padrão dos algoritmos de k-means que calcula a distância de 
todos os pontos com relação ao centro;
2. elkan — converge para os mesmos resultados, mas reduz, a partir 
de triangulações, a quantidade de distâncias calculadas, eliminando 
muitas etapas desnecessárias/redundantes;
9Aprendizagem não supervisionada: aplicação do k-means
3. auto — recorre ao método convencional para conjuntos de dados 
esparsos, em que o algoritmo elkan implementado é incapaz de con-
vergir, e ao método elkan para conjuntos de dados densos (SCIKIT-
-LEARN, 2019b).
Apesar da simplicidade com que é definido, o algoritmo de k-means, 
como muitos outros algoritmos, tem inúmeras limitações e parâmetros na 
prática, a maioria relacionada ao tempo e à taxa de processamento deman-
dados. Na maior parte das vezes, especialmente quando estiver lidando com 
conjuntos de dados pequenos, as configurações se limitarão à quantidade de 
clusters (n_clusters) e ao valor de base para geração de pontos aleatórios 
(random_state). O código a seguir exemplifica a criação de um objeto 
da classe k-means a partir desses dois parâmetros, definindo k = 4 e para o 
random_state.
# Exemplo 5
# importação do módulo KMeans da biblioteca SciKit-Learn
from sklearn.cluster import KMeans
# alg recebe o objeto do método KMeans configurado para 
# identificar 4 clusters. O valor 50 serve de base para o 
# cálculo do ponto inicial de cada centroide.
alg = KMeans(n_clusters=4, random_state=50)
Uma vez criado o objeto com as devidas configurações, o conjunto de 
dados deve ser fornecido através da função fit que fará o treinamento do 
modelo. Nela, os parâmetros X e sample_weight (opcional) correspondem, 
respectivamente, aos dados de treinamento, em forma de vetor ou matriz, e 
aos pesos que devem ser dados para cada observação. O código a seguir faz 
o treinamento de dados com 100 amostras, dois atributos separados em três 
grupos de centro diferentes produzidos a partir do método make_blobs e.
Aprendizagem não supervisionada: aplicação do k-means10
# Exemplo 6
# carrega bibliotecas e módulos necessários
from sklearn import datasets as ds
from sklearn.cluster import KMeans
import pandas as pa
import seaborn as sb
import matplotlib.pyplot as pp
# distribuição aleatória: 100 objetos, 4 grupos, 2 carac-
terísticas desvio padrão de 1,3
X, y = ds.make_blobs(n_samples=100, n_features=2, cen-
ters=4, cluster_std=1.3)
# inicializa e treina um algoritmo de K-Means
km = KMeans(n_clusters=4, random_state=50)
km.fit(X)
prevs = km.predict(X)
# DataFrames para o conjunto de dados original com seu 
# atributo alvo e outro quadro com o atributo alvo previsto 
# a partir do K-Means
xDF =pa.DataFrame(data=X, columns=['Attr1', 'Attr2'])
pDF = xDF.copy()
xDF['Target'] = y
pDF['Target'] = prevs
# divisão da figura em duas colunas para plotar os dois 
# conjuntos
fig, axes = pp.subplots(1, 2, figsize=(12,4))
sb.scatterplot(data=xDF, x='Attr1', y='Attr2', hue='Target', 
palette='rainbow', ax=axes[0])
sb.scatterplot(data=pDF, x='Attr1', y='Attr2', hue='Target', 
palette='rainbow', ax=axes[1])
11Aprendizagem não supervisionada: aplicação do k-means
Com o auxílio das bibliotecas Pandas e Seaborn, são criados os 
DataFrame e os gráficos de dispersão (scatterplot), respectivamente. 
Uma vez que o método make_blobs retorna uma tupla, o resultado é des-
membrado em duas variáveis: x para os atributos previsores e y para o atributo 
alvo. O método predict cria um vetor para o atributo previsor a partir dos 
clusters descobertos pelo método fit anteriormente. Os quadros (Data-
Frame) facilitam tanto a apresentação dos dados quanto sua utilização em 
outras funções do Seaborn, quando é possível fornecer os índices de caracte-
rística (x e y) e o índice que representa as classes pelo atributo hue. A Figura 1 
apresenta um comparativo entre os dados originais e suas classificações e os 
dados previstos pelo k-means.
Figura 1. Comparativo entre os dados originais e suas classificações (à esquerda) e os dados 
previstos pelo k-means (à direita).
Como é possível perceber na Figura 1, clusters parecidos foram detectados, 
contudo, devido a pontos de sobreposição (imagem da esquerda), alguns objetos 
dos grupos 2 e 3 foram invertidos na imagem da direita. Também devido a 
isso, não foram atribuídos exatamente os mesmos rótulos para cada grupo, 
porque cada função utilizou os objetos em ordens diferentes. Os nomes dados, 
no entanto, não possuem qualquer relevância, não é atribuição dos algoritmos 
de agrupamento atribuir um rótulo, mas encontrar grupos que possam ser 
rotulados. Nesse caso, pode-se perceber que o treinamento, apesar de possuir 
imprecisões, foi muito eficiente, apresentando poucas divergências de clusters.
Aprendizagem não supervisionada: aplicação do k-means12
3 Agrupamento e avaliação
A fim de compreender o algoritmo de agrupamento, um novo exemplo utili-
zando o conjunto de dados íris é criado no código a seguir.
# Exemplo 7
# importação das bibliotecas e seleção dos módulos a serem 
# utilizados
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
import pandas as pa
import seaborn as sb
import matplotlib.pyplot as pp
import numpy as np
# importação e separação dos dados
iDS = load_iris()
iData, iTarget, iTarget_Names, _, iFeature_Names, _ = 
iDS.values()
# formatação dos dados em quadro da biblioteca pandas para 
# facilitar a visualização
iDF = pa.DataFrame(data=iData, columns=iFeature_Names)
iDF_Target = iDF.copy()
iDF_Target['specie'] = iTarget_Names[iTarget]
# visualizar a sobreposição das espécies entre todas as 
# combinações de pares de características
sb.pairplot(data=iDF_Target, hue='specie')
A tupla retornada por load_iris() é desmembrada em seis variáveis:
 � iData — matriz contendo os valores de cada instância de cada atributo 
previsor;
 � iTarget — vetor contendo os valores de atributo alvo para cada instância;
13Aprendizagem não supervisionada: aplicação do k-means
 � iTarget_Names — vetor com os nomes dados a cada uma das três 
espécies rotuladas;
 � iFeature_Names — vetor com o nome dado aos atributos previsores;
 � outros dois itens da tupla recebem um nome qualquer, pois não há 
interesse em seus usos, referem-se a uma string contendo a descrição 
e a outra contendo o caminho para o arquivo.
Os dados de entrada e saída (atributos previsores e atributo alvo) são 
utilizados para construir um DataFrame. A coluna alvo recebe o nome 
specie (espécie). O DataFrame é utilizado na plotagem da distribuição 
dos dados aos pares de atributos (função pairplot), sempre classificados 
segundo a coluna specie, conforme especificado pelo parâmetro hue. 
O resultado pode ser visto na Figura 2.
Figura 2. Gráficos de distribuição das instâncias selecionando pares de cada um dos 
atributos.
Aprendizagem não supervisionada: aplicação do k-means14
Qualquer combinação de características pode ser utilizada na tarefa de 
agrupamento. O resultado, no entanto, será muito diferente de uma para outra. 
Todos os gráficos da Figura 2 possuem algum nível de sobreposição, algumas 
combinações parecem ter maiores distinções entre os agrupamentos do que 
outras. Poderíamos descartar o cruzamento entre as duas características das 
sépalas (sepal) apenas visualizando os gráficos. Para esse exemplo, optou-se 
pela combinação sepal length e petal width por relacionar características 
bem diferentes e aparentar uma distribuição com boa separação de espécies. 
No entanto, outras combinações poderiam resultar em agrupamentos ainda 
melhores.
O exemplo a seguir apresenta a seleção dos atributos que serão utilizados, 
respectivamente, a primeira (índice 0) e a quarta (índice 3) coluna da matriz, 
como foi possível ver nos gráficos da Figura 2. Mais uma vez é criado um 
DataFrame e adicionada a coluna dos rótulos originais ao novo DataFrame.
# Exemplo 8
# seleção das duas características
iData_SL_PW = iData[:, [0,3]]
iDF_SL_PW = pa.DataFrame(data=iData_SL_PW, 
columns=[iFeature_Names[0], iFeature_Names[3]])
iDF_SL_PW_T = iDF_SL_PW.copy()
iDF_SL_PW_T['specie'] = iDF_Target['specie']
# distribuição após seleção dos atributos sem rótulos 
# definidos
prevFeatureNames = iDF_SL_PW_T.keys()
sb.scatterplot(data=iDF_SL_PW_T, x=prevFeatureNames[0], 
y=prevFeatureNames[1])
O gráfico da Figura 3 mostra novamente a distribuição dos dados segundo 
o par de características selecionadas, porém, sem qualquer rótulo ou agrupa-
mento que as separe.
15Aprendizagem não supervisionada: aplicação do k-means
Figura 3. Distribuição dos dados sem clusters formados.
O algoritmo de k-means é configurado para buscar a mesma quantidade de clus-
ters que a quantidade de espécies esperada, a previsão de agrupamento é treinada 
e feita segundo os clusters encontrados para o mesmo conjunto de dados utilizados 
no treinamento. O vetor resultante é atribuído ao novo DataFrame, agora com 
os dados das duas características de entrada, mas como atributo alvo os valores 
previstos pelo algoritmo. A seguir, é apresentado o código desse procedimento.
# Exemplo 9
# quantidade de clusters será a mesma da quantidade de 
# espécies do conjunto de dados
k = len(iTarget_Names)
# configuração do algoritmo e treinamento
alg = KMeans(n_clusters=k, random_state=50)
alg.fit(X=iData_SL_PW)
# construção de novo quadro considerando os agrupamentos 
# previstos pelo K-Means
prevDataFrame = iDF_SL_PW.copy()
prevDataFrame['specie'] = alg.predict(iData_SL_PW)
prevDataFrame
Aprendizagem não supervisionada: aplicação do k-means16
O gráfico da Figura 4 serve de base para que os grupos encontrados sejam 
então rotulados pelo usuário. É possível observar que a ordem detectada não 
é a mesma, mas é visível qual cluster se refere a qual espécie.
Figura 4. Clusters encontrados.
Na Figura 4, é possível notar três clusters em posições equivalentes aos 
formados pelas espécies setosa, virginca e versicolor, como já observado no 
pairplot entre as características selecionadas da Figura 4. 
# Exemplo 10
translateDic = { 0: 'virginica', 1: 'setosa', 2: 'versicolor' }
prevDataFrame['specie'] = [translateDic[s] for s in 
prevDataFrame['specie']]
fig, axes = pp.subplots(1, 2, figsize=(12,4))
fig1 = sb.scatterplot(data=iDF_SL_PW_T, 
x=prevFeatureNames[0], y=prevFeatureNames[1], hue='specie', 
ax=axes[0])
fig2 = sb.scatterplot(data=prevDataFrame, 
x=prevFeatureNames[0], y=prevFeatureNames[1], hue='specie', 
ax=axes[1])
17Aprendizagem não supervisionada: aplicação do k-means
O exemplo anterior faz a tradução e termina por exibir um comparativo 
entre os clusters

Mais conteúdos dessa disciplina