Aprendizado não supervisionado

Unsupervised Learning em Python

Benjamin Wilson

Director of Research at lateral.io

Aprendizado não supervisionado

  • Aprendizado não supervisionado encontra padrões nos dados
  • Ex.: agrupar clientes por compras (clustering)
  • Comprimir dados via padrões de compra (redução de dimensão)
Unsupervised Learning em Python

Supervisionado vs. não supervisionado

  • O aprendizado supervisionado encontra padrões para prever
  • Ex.: classificar tumores como benignos ou malignos (labels)
  • O não supervisionado encontra padrões nos dados
  • ... mas sem uma tarefa de previsão específica
Unsupervised Learning em Python

Conjunto de dados Iris

  • Medições de muitas plantas de íris
  • Três espécies de íris:
    • setosa
    • versicolor
    • virginica
  • Comprimento/largura da pétala, comprimento/largura da sépala (as features do dataset)

Íris

1 https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html
Unsupervised Learning em Python

Arrays, features e amostras

  • Array NumPy 2D
  • Colunas são medições (as features)
  • Linhas são plantas de íris (as amostras)
Unsupervised Learning em Python

Dados de íris em 4 dimensões

  • Amostras de íris são pontos em espaço 4D
  • Dimensão = número de features
  • Dimensão alta demais para visualizar!
  • ... mas o não supervisionado dá insights
Unsupervised Learning em Python

Agrupamento k-means

  • Encontra clusters de amostras
  • Número de clusters deve ser definido
  • Implementado no sklearn ("scikit-learn")
Unsupervised Learning em Python
print(samples)
[[ 5.   3.3  1.4  0.2]
 [ 5.   3.5  1.3  0.3]
 ...
 [ 7.2  3.2  6.   1.8]]
from sklearn.cluster import KMeans

model = KMeans(n_clusters=3)
model.fit(samples)
KMeans(n_clusters=3)
labels = model.predict(samples)

print(labels)
[0 0 1 1 0 1 2 1 0 1 ...]
Unsupervised Learning em Python

Rótulos de cluster para novas amostras

  • Novas amostras podem ser atribuídas aos clusters existentes
  • k-means guarda a média de cada cluster (os "centróides")
  • Encontra o centróide mais próximo de cada nova amostra
Unsupervised Learning em Python

Rótulos de cluster para novas amostras

print(new_samples)
[[ 5.7  4.4  1.5  0.4]
 [ 6.5  3.   5.5  1.8]
 [ 5.8  2.7  5.1  1.9]]
new_labels = model.predict(new_samples)

print(new_labels)
[0 2 1]
Unsupervised Learning em Python

Gráficos de dispersão

  • Dispersão: comprimento da sépala vs. comprimento da pétala
  • Cada ponto é uma amostra de íris
  • Colorir pontos pelos rótulos dos clusters
  • PyPlot (matplotlib.pyplot)

Gráfico de dispersão

Unsupervised Learning em Python

Gráficos de dispersão

import matplotlib.pyplot as plt

xs = samples[:,0] ys = samples[:,2]
plt.scatter(xs, ys, c=labels)
plt.show()
Unsupervised Learning em Python

Vamos praticar!

Unsupervised Learning em Python

Preparing Video For Download...