Vous êtes sur la page 1sur 71

PÓS

-GRADUAÇÃO

Machine Learning e Algoritmos


Supervisionados
Machine Learning e Algoritmos Supervisionados

● Aula 1
○ Introdução a ML
○ Machine Learning como um Problema de Negócio
○ KNN e Pipeline de ML

● Aula 2
○ Árvore de Decisão e Entropia
○ Fine-tuning
○ Modelagem de uma solução de ML
○ ML em produção

● Avaliação
○ https://docs.google.com/document/d/1sR8hz2KhrCQKxQZDLj1dX_bwDS6UK3Nn8JnWAumxCDY/edit?usp=sharing
Roteiro

● Introdução a Machine Learning


● Machine Learning como um problema de negócio
● Similaridade
● Preparação de Dados (normalização e transformação)
● KNN
● Pipeline de ML
Introdução a ML

A área de estudo da IA é o estudo e projeto


de agentes inteligentes. E “inteligência” pode
ser desde escolher uma melhor rota (como o
Google Maps faz por você) até dirigir um carro
autônomo nessa rota (como o Tesla faz).

Ou seja, qualquer sistema que consiga tomar


uma decisão baseado em uma heurística pode
ser considerado “inteligente”.

Machine learning é sobre extração de


padrões nos dados para que esses padrões
possam ser utilizados na resolução de
problemas.
Introdução a ML

Aprendizado
não-supervisionado
trabalha na extração de
padrões de dados
desconhecidos, visa, através
das características dos
indivíduos inferir padrões
que podem ser utilizados nos
problemas.

● Clusterização
● Redução de
Dimensionalidade
Introdução a ML

Aprendizado
supervisionado aprende a
representar os padrões em
dados com
comportamento conhecido
para que sejam utilizados em
novos dados desconhecidos
problemas.

● Classificação
● Regressão
Introdução a ML

Aprendizado por Reforço


Gera conhecimento sobre
um problema a partir de
“tentativas e erros” em um
“mundo” bem definido.

● Jogos
Introdução a ML

O que define qual categoria de algoritmos devemos utilizar é o problema a ser


resolvido.

“se o seu objetivo é pintar a parede,


talvez usar a furadeira não seria uma
boa ideia….” - MS
Introdução a ML - Aprendizado
Supervisionado

Informação
Desconhecida

Inferência

Informação
Conhecida Modelo f(X) = y
Introdução a ML

Existe categoria errada para o


problema, mas existe o melhor
algoritmo para o problema X ou Y?

O que devemos fazer então?

“Machine Learning não é sobre


algoritmos, é sobre solucionar
problemas.”
Machine learning como um problema
de negócio…

Quando o problema pode ser


resolvido com um algoritmo
supervisionado (regressão ou
classificação) é preciso ter em
mente as features e o target.

Mas a vida não é o dataset do


Kaggle….
Machine learning como um problema
de negócio…

Problema: Somos uma equipe de marketing e precisamos escolher grupos de


clientes para direcionar nossas campanhas com base no perfil.
Machine learning como um problema
de negócio…

Problema: O setor de analytics detectou que no semestre passado houve um


aumento de 20% no cancelamento de clientes. Quais estratégias podemos
usar para mitigar esse indicador?
Machine learning como um problema
de negócio…

Problema: Precisamos calcular uma estimativa de vendas para os próximos


dois meses para o produto A e o produto B, sendo que o produto B é novo na
loja. O que indica?
Machine learning como um problema
de negócio…

Problema: Somos uma loja de roupas e queremos aumentar as vendas de


nossos produtos pelo site. Nossos indicadores de acesso ao site são bons,
mas o de conversão de compras não? Qual a sugestão?
Machine learning como um problema
de negócio…

Problema: Somos uma empresa de cartão de crédito e precisamos criar


um score de qualidade dos nossos clientes, esse score será utilizado para
bonificações ou cancelamento do cartão.

Quais são as features e qual é o target?

https://medium.com/@andresionek91/a-habilidade-chave-que-voc%C3%AA-precisa-desenvolver-como-cientista-de-dados-2783b272a747
Machine learning como um problema
de negócio…

Entender o problema faz parte da modelagem de uma solução de machine


learning. Nem sempre as features e target estarão claras, só após entender o
problema será possível escolher os algoritmos e métricas de avaliação que podem ser
utilizados
Similaridade

Similaridade ou
Dissimilaridade
Similaridade

A similaridade é a base de muitos métodos de ML. Parte da ideia de que “se duas
coisas (pessoas, empresas, produtos) são semelhantes em alguns aspectos, costumam
compartilhar outras características também”

● Itens semelhantes podem gerar um cluster de perfil

● Classificar um novo conteúdo dado a semelhança


de conteúdos conhecidos

● Recomendação de conteúdo semelhante em RecSys


Similaridade

Similaridade Dissimilaridade Normalmente as medidas satisfazem


Mede o quanto dois objetos Mede o quanto dois objetos
algumas propriedades:
são parecidos são diferentes

Quanto mais parecido, maior Quanto mais diferente, maior


● Os objetos não são diferentes de si
o valor o valor próprio
d(x, x) = 0 ou d(x, x) = 1
Geralmente valor dentro do Geralmente valor no intervalo
intervalo [0,1] [0, X]
● Simetria
d(a,b) = d(b,a)

● Positividade
d(a,b) >= 0
Similaridade

Dado o espaço vetorial das features, é possível calcular a distância entre os indivíduos
através de diferentes métricas, ex:

● Euclidean

● Manhattan

● Cosine
Similaridade

Qual a melhor métrica para descrever a distância entre dois endereços?

A = [lon, lat]
B = [lon, lat]
Similaridade

Similaridade não é só uma questão de distância e métrica, é uma questão de


conceito.

● O que é um filme similar a outro? Harry


Potter é similar a Senhor dos Anéis?
Similaridade

Similaridade não é só uma questão de distância e métrica, é uma questão de


conceito.

● O que é um filme similar a outro? Harry


Potter é similar a Senhor dos Anéis?

● Com relação a livros, como definir


similaridade entre livros e qual métrica
usar?
Similaridade

Similaridade não é só uma questão de distância e métrica, é uma questão de


conceito.

● O que é um filme similar a outro? Harry


Potter é similar a Senhor dos Anéis?

● Com relação a livros, como definir


similaridade entre livros e qual métrica
usar?

● Música?
Similaridade

A definição de similaridade depende das features do indivíduo, quando os dados já


estão estruturados é mais fácil calcular a similaridade pois as features já foram
definidas.
Similaridade

É preciso definir as features para depois calcular similaridade, ou seja, um indivíduo


é definido pelo seu vetor de features: David = [37,50,2]

Cliente Idade Renda Cartões Resposta (alvo) Distância


euclidiana

David 37 50 2 ? 0

John 35 35 3 Sim 15,16

Rachael 22 50 2 Não 15

Ruth 63 200 1 Não 152,23

Jefferson 59 170 1 Não 122

Norah 25 40 4 Sim 15,74

features target/classe
Similaridade

Features não numéricas devem ser transformadas para realizar o cálculo de


similaridade. É preciso transformar para que o vetor de features continue numérico:
David = [?, 37,50,2]
Cliente Emprego Idade Renda Cartões Resposta Distância
(alvo) euclidiana

David Professor 37 50 2 ?

John Professor 35 35 3 Sim

Rachael Programador 22 50 2 Não

Ruth Gerente de TI 63 200 1 Não

Jefferson Gerente de TI 59 170 1 Não

Norah Professor 25 40 4 Sim

features target/classe
Tipos de Variáveis

Os dados podem ter naturezas diferentes e necessitam ser formatados de forma


adequada para que os algoritmos “entendam”.

● Categóricas (string) Emprego Idade Renda


○ Nominal: Gênero, estado civil, tipos Professor 37 50
○ Ordinal: Escolaridade, dia do Mês… Professor 35 35

Programador 22 50
● Discretas (int)
Gerente de TI 63 200
○ Idade, qtd de filhos
Gerente de TI 59 170

● Contínuas (float) Professor 25 40


○ Valores dentro de um intervalo
Tipos de Variáveis

Label Encoder: Transforma categorias em inteiros, leva a variável categórica para o


domínios discreto

● Método Simples
Emprego EmpregoEnc
● Adicionar informação de ordem
Professor 1

Professor 1

Programador 2

Gerente de TI 3

Gerente de TI 3

Professor 1

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html
Tipos de Variáveis

OneHotEncoder: Transforma categorias em vetores binários, leva uma variável


categórica para diferentes variáveis binárias

● Resolve o problema da ordem


Emprego Professor Programador Gerente de TI
● Aumenta a quantidade de
Professor 1 0 0
features
Professor 1 0 0

Programador 0 1 0

Gerente de TI 0 0 1

Gerente de TI 0 0 1

Professor 1 0 0
Tipos de Variáveis

A codificação das features faz parte da etapa de data preparation. Tem o objetivo de
extrair mais padrões nos dados.

Emprego EmpregoEnc Emprego =Professor =Programador =Gerente de TI

Professor 1 Professor 1 0 0

Professor 1 Professor 1 0 0

Programador 2 Programador 0 1 0

Gerente de TI 3 Gerente de TI 0 0 1

Gerente de TI 3 Gerente de TI 0 0 1

Professor 1 Professor 1 0 0

LabelEncoding OneHotEncoder
Tipos de Variáveis

Após o processo de transformação das variáveis o vetor fica completamente numérico

David = [1, 0, 0, 37,50,2]


Cliente =Professor =Programador =Gerente de TI Idade Renda Cartões

David 1 0 0 37 50 2

John 1 0 0 35 35 3

Rachael 0 1 0 22 50 2

Ruth 0 0 1 63 200 1

Jefferson 0 0 1 59 170 1

Norah 1 0 0 25 40 4
KNN

KNN - K
Vizinhos mais
próximos
KNN

KNN é um dos modelos preditivos mais simples que existe (70'). Não possui
premissas matemáticas e parte da ideia de que “pontos próximos tem o mesmo
comportamento” ou “Diga-me com quem andas que eu direi quem és!”

Necessita apenas de:

● Uma noção de distância


● Um tamanho de vizinhança K
KNN

O treinamento do KNN é “decorar


a base de treino”

A inferência é “buscar” os K
indivíduos mais próximos e fazer
uma votação

Qual K usar?
KNN

O tamanho do K define a fronteira de decisão do modelo de classificação.


O que acontece se K=1 ou K=(total de registros)?
KNN

Na prática é testando diferentes


valores de K e métricas de
distância para definir a melhor
parametrização para o problema.

A etapa de fine-tuning busca


encontrar a melhor
parametrização do modelo.
KNN - Probabilidade

Em vez de classificar (sim ou não) o KNN também consegue estimar uma


probabilidade. Em muitos casos uma pontuação dá mais informação que apenas
sim e não.

● Qual a probabilidade do ponto ser da


classe B com k = 3?

● E com k=6?
KNN - Regressão

O KNN pode ser usado para regressão?

Uma vez que recuperamos os vizinhos


mais próximos, podemos usá-los para
qualquer tarefa exploratória.

● Podemos calcular a média,


mediana ou qualquer outra estatística
dos vizinhos e inferir no novo dado
KNN

Prós:

● Simples implementação
● Algoritmo não-paramétrico
● Método caixa-branca e fácil explicação de resultados

Contras:

● Treinamento rápido mas inferência lenta


● Sensível a outliers e normalização
● É fácil descrever a inferência, mas não o peso de cada variável no modelo
KNN

https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsRegressor.html
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html
Normalização

Diferentes algoritmos de ML podem ser influenciados negativamente por dados


não normalizados. De forma geral, os dados devem estar na mesma faixa de
valores, isso evita que uma dimensão se sobreponha em relação às outras.

Cliente =Professor =Programador =Gerente de TI Idade Renda Cartões

David 1 0 0 37 50 2

John 1 0 0 35 35 3

... .. .. .. .. .. ..

Qual dimensão está sobrepondo as outras?


Normalização

Com os dados normalizados a fronteira de decisão do algoritmo fica melhor


distribuída, o que reflete na performance do mesmo.
Normalização

Normalização por Máx-Min utiliza os valores máximos e mínimos para


normalizar linearmente os dados entre [0, 1]

● Muito sensível aos outliers


● Em alguns casos o máximo e o mínimo não são conhecido

Exemplo de features boas e ruins para usar com Normalização de Máx-Min?


Normalização

Normalização por Desvio Padrão (z-score) os dados são normalizados no


entorno da média e do desvio padrão, valores ficam em torno do zero.

● Pouco sensível a outliers


● Funciona bem na maioria dos casos
Normalização

O processo de normalização é uma etapa do pipeline de ML assim como Engenharia


de Features.

Cliente =Professor =Programador =Gerente de TI Idade Renda Cartões

David 1 0 0 37 50 2

John 1 0 0 35 35 3

... .. .. .. .. .. ..

Transformação
df = normalize(df)

Cliente =Professor =Programador =Gerente de TI IdadeNorm RendaNorm CartõesNorm

David 1 0 0 1 1,2 1

John 1 0 0 0,2 2,3 0.3

... .. .. .. .. .. ..
KNN

https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html
Comparação de Resultados

Comparação de uma regressão com KNN e Regressão Linear para diferentes


formas de normalização dos dados.
Kmeans

Aproveitando que
estamos falando de
similaridade...
K-means

O método k-means segue a mesma ideia do KNN, mas é usado para treinamento
não-supervisionado. Utiliza a distância dos indivíduos a os K centróides para criar
clusters.

Necessita apenas de:

● Uma noção de distância


● Quantidade de clusters K
K-means

K-means com 3 clusters.... Executa de forma iterativa até não haver mudanças entre
clusters.
K-means

Definir um valor de K que seja ideal não é trivial...


K-means

A escolha do K é semelhante ao KNN, mas utiliza métricas de avaliação diferentes


pois é não tem target/label/classe…

● Índice Dunn
● Índice Davies-Bouldin
● Índice Silhouette
● ..outros
Similaridade

Pipeline de ML
Pipeline de ML

Quando o modelo for utilizado em produção, esse é o dataset/input que será


receber?

=Professor =Programador =Gerente de IdadeNorm RendaNorm CartõesNorm


TI

1 0 0 1 1,2 1

1 0 0 0,2 2,3 0.3

.. .. .. .. .. ..

Resposta
(alvo)

Sim
Modelo f(X) = y
Não

...
Pipeline de ML

não…. o dado deve ser o mais próximo do original possível.

Cliente Emprego Idade Renda Cartões

David Professor 37 50 2

John Professor 35 35 3

... ... ... ... ...

Resposta
(alvo)

Sim
Modelo f(X) = y
Não

...
Pipeline de ML

A necessidade do pipeline em dados Raw fica mais evidente com texto. A


entrada do modelo/pipeline sempre é o Texto Raw

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed auctor scelerisque
quam, vitae aliquet arcu. Class aptent taciti sociosqu ad litora torquent per
conubia nostra, per inceptos himenaeos. Proin rutrum porttitor turpis vel
dignissim. Quisque facilisis quis ligula non eleifend. Nulla facilisi. Donec vita...

Resposta
(alvo)

Não
Modelo f(X) = y
Pipeline de ML

O “modelo de machine learning” não é o algoritmo (KNN, Regressão, MLP…), mas


o pipeline completo de Transformações + Algoritmo.

Pipeline

Treinamento

Features Y Transformação Transformação model.fit(...) Avaliação

Inferência
Features Transformação Transformação model.predict(...) Inferência
Pipeline de ML

Código com o pipeline de treino e inferência são muito semelhantes,


compartilha principalmente as transformações nos dados, ou seja, toda a etapa
de Data Preparation

Pipeline Treino Pipeline Inferência


Pipeline de ML

O Sklean tem uma estrutura para trabalhar direto com o pipeline de Data
Preparation + Model

Pipeline Treino Pipeline Inferência

https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html
Pipeline de ML

A estrutura de Pipeline é extremamente versátil e pode ser combinada para


criar transformações específicas por features ou grupo de features.

https://www.kaggle.com/gautham11/building-predictive-models-with-sklearn-pipelines
Pipeline de ML

O Spark também conta com


uma estrutura de Pipeline
semelhante ao do Sklearn.

https://spark.apache.org/docs/latest/ml-pipeline.html
Pipeline de ML

No fim, a nossa caixinha que chamados de


“Modelo” é a materialização desse
pipeline de dados que pode ser usado em
um ambiente diferente.

Pipeline f(X) = y
CRISP DM

O pipeline de um projeto de ML é
semelhante ao de qualquer projeto de
dados, está muito ligado ao problema de
negócio que fundamenta as escolhas de
preparação de dados, algoritmos e avaliação
da solução.
Similaridade

O que é um
modelo bom?
Avaliação

Em RecSys é muito comum utilizar as métricas de RMSE


para avaliar o modelo. Vamos pensar um pouco sobre ela e
sobre o problema….
Avaliação

Churn rate é a taxa de cancelamento, ou de abandono,


registrada em sua base de clientes… Geralmente resolvido
como um problema de classificação onde o usuário vai ou
não cancelar o serviço.

Acurácia seria uma boa métrica?


Avaliação

Churn rate sempre tem classes desbalanceadas, métricas


associadas a matriz de confusão mais interessantes como
UAC, f1-score.. etc.
Hands on

70