Aprendizado de máquina:
uma abordagem estatística
Título: Aprendizado de máquina: uma abordagem estatística, 1a edição.
Autores: Rafael Izbicki e Tiago Mendonça dos Santos.
Capa: Leonardo M Borges & Kaori Nagata
20-36124 CDD-519.5
Dados Internacionais de Catalogação na Publicação (CIP)
(Câmara Brasileira do Livro, SP, Brasil)
Izbicki, Rafael
Aprendizado de máquina : uma abordagem estatística
[livro eletrônico] / Rafael Izbicki, Tiago Mendonça
dos Santos. -- São Carlos, SP : Rafael Izbicki, 2020.
PDF
Bibliografia.
ISBN 978-65-00-02410-4
1. Aprendizado do computador 2. Estatística
3. Inteligência artificial 4. Probabilidades
I. Santos, Tiago Mendonça dos. II. Título.
Índices para catálogo sistemático:
1. Aprendizado de máquina : Estatística : Matemática
519.5
Cibele Maria Dias - Bibliotecária - CRB-8/9427
Rafael Izbicki
&
Tiago Mendonça dos Santos
Aprendizado de máquina:
uma abordagem estatística
Aos nossos avós
Ita Zajdens
Leon Izbicki
Rebecca Gassul Izbicki
Hely Mendonça Malheiro
Therezinha Giacomin Malheiro
Maria Anita dos Santos
Sumário
Prefácio xiii
I Regressão 1
1 Introdução 3
1.1 Notação e Suposições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Predição versus Inferência: Por que estimar r(x)? . . . . . . . . . . . . 5
1.3 As Duas Culturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 A Função de Risco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Seleção de Modelos: Super e Sub-Ajuste . . . . . . . . . . . . . . . . . . 12
1.5.1 Data Splitting e Validação Cruzada . . . . . . . . . . . . . . . . . 14
1.5.1.1 Penalização: uma alternativa . . . . . . . . . . . . . . . 21
1.5.2 Balanço entre Viés e Variância . . . . . . . . . . . . . . . . . . . . 22
1.6 Tuning Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2 Métodos Paramétricos 27
2.1 O Método dos Mínimos Quadrados . . . . . . . . . . . . . . . . . . . . 28
2.1.1 Mínimos Quadrados quando a Suposição de Linearidade Falha 29
2.1.2 Regressão Linear no R . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Métodos Paramétricos em Altas Dimensões 33
3.1 Busca pelo Melhor Subconjunto de Covariáveis . . . . . . . . . . . . . . 33
3.2 Regressão Stepwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Lasso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
vii
.
3.3.1 Garantias Teóricas . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4 Regressão Ridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5 Formulação Alternativa . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.6 Interpretação Bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.7 Regressão ridge e lasso no R . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.9 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4 Métodos Não Paramétricos 53
4.1 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.2 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.3 k Vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.4 Nadaraya-Watson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.5 Regressão Polinomial Local . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.6 Métodos baseados em RKHSs . . . . . . . . . . . . . . . . . . . . . . . . 62
4.6.1 A matemática do RKHS . . . . . . . . . . . . . . . . . . . . . . . 64
4.6.2 Solução para o problema de otimização . . . . . . . . . . . . . . 66
4.6.3 Exemplo 1: Kernel Ridge Regression . . . . . . . . . . . . . . . . 67
4.6.3.1 Smoothing Splines . . . . . . . . . . . . . . . . . . . . . 68
4.6.3.2 O Truque do Kernel . . . . . . . . . . . . . . . . . . . . 69
4.6.3.3 Implementação eficiente da kernel ridge regression . . 72
4.6.4 Exemplo 2: Support Vector Regression Machine . . . . . . . . . 73
4.7 Modelos Aditivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.8 Árvores de Regressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.9 Bagging e Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . 82
4.9.1 Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . 85
4.10 Boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
4.11 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.11.1 Estimação: Backpropagation . . . . . . . . . . . . . . . . . . . . . 95
4.11.2 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.12 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
4.13 Um Pouco de Teoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.13.1 k-vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . . . . 102
4.13.2 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
4.14 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
viii
Capítulo 0. Sumário
5 Métodos Não Paramétricos em Altas Dimensões 107
5.1 Taxas de convergência e a maldição da dimensionalidade . . . . . . . . 107
5.1.1 Esparsidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
5.1.2 Redundâcia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.2 k Vizinhos Mais Próximos e Regressão Linear Local . . . . . . . . . . . 110
5.3 Support Vector Regression . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4.1 Bases espectrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5.4.2 O estimador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
5.5 Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
5.6 SpAM - Modelos Aditivos Esparsos . . . . . . . . . . . . . . . . . . . . 115
5.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6 Outros Aspectos de Regressão 119
6.1 Interpretabilidade (ExplainableML) . . . . . . . . . . . . . . . . . . . . 119
6.1.1 LIME - Local Interpretable Model-agnostic Explanations . . . . . . . 120
6.1.2 PDP e ICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
6.2 Estimação de Densidades Condicionais . . . . . . . . . . . . . . . . . . 124
6.3 Inferência Conformal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
II Classificação 131
7 Introdução 133
7.1 Função de Risco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
7.2 Estimação do Risco e Seleção de Modelos . . . . . . . . . . . . . . . . . 136
7.3 Balanço entre Viés e Variância . . . . . . . . . . . . . . . . . . . . . . . . 137
7.4 Outras medidas de desempenho . . . . . . . . . . . . . . . . . . . . . . 138
8 Métodos de classificação 141
8.1 Classificadores Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
8.1.1 Métodos de regressão . . . . . . . . . . . . . . . . . . . . . . . . 142
8.1.2 Regressão logística . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.1.3 Bayes Ingênuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
8.1.4 Análise Discriminante . . . . . . . . . . . . . . . . . . . . . . . . 147
8.1.4.1 Análise Discriminante Linear . . . . . . . . . . . . . . 147
ix
.
8.1.4.2 Análise Discriminante Quadrática . . . . . . . . . . . . 149
8.2 Support Vector Machines (SVM) . . . . . . . . . . . . . . . . . . . . . . 151
8.3 Árvores de Classificação . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
8.4 Bagging e Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . 158
8.5 Boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
8.6 Método dos k Vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . 161
8.7 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
8.8 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9 Outros Aspectos de Classificação 169
9.1 Assimetria na Função de Perda, Conjuntos de Dados Desbalanceados
e Outros Cortes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.2 Classificação vs Estimação de Probabilidades . . . . . . . . . . . . . . . 172
9.3 Dataset Shift e Viés de Seleção . . . . . . . . . . . . . . . . . . . . . . . . 172
9.3.1 Covariate Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.3.2 Prior Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
9.4 Combinando Classificadores . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.5 Teoria do Aprendizado Estatístico . . . . . . . . . . . . . . . . . . . . . 179
9.5.1 Prova do teorema VC . . . . . . . . . . . . . . . . . . . . . . . . 184
9.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
III Aprendizado não supervisionado 187
10 Redução de Dimensionalidade e Mudança de Representação 189
10.1 Componentes Principais (PCA - Principal Component Analysis) . . . . . 190
10.1.1 Interpretação alternativa: escalonamento multidimensional . . 193
10.1.2 Aplicação: compressão de imagens . . . . . . . . . . . . . . . . . 194
10.2 Kernel PCA (KPCA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
10.3 Projeções Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
10.4 Autoencoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11 Análise de Agrupamento 209
11.1 K-Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
11.2 Agrupamento Espectral . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
11.3 Métodos Hierárquicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
x
Capítulo 0. Sumário
12 Regras de Associação 223
13 Sistemas de Recomendação 229
13.1 Filtro Colaborativo Baseado no Usuário . . . . . . . . . . . . . . . . . . 230
13.2 Filtro Colaborativo Baseado no Produto . . . . . . . . . . . . . . . . . . 231
13.3 FunkSVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
13.4 Seleção de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
IV Apêndice 235
A Apêndice 237
A.1 Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
A.2 Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
A.3 Matrizes esparsas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
xi
.
xii
Prefácio
Aprendizado de máquina (AM) nasceu na década de 60 como um campo da in-
teligência artificial que tinha o objetivo de aprender padrões com base em dados.
Originalmente, as aplicações de AM eram de cunho estritamente computacional.
Contudo, desde o final dos anos 90, essa área expandiu seus horizontes e começou
a se estabelecer como um campo por si mesma. Em particular, as aplicações de AM
começaram a ter muitas intersecções com as de estatística.
A comunidade de AM é bastante interdisciplinar e utiliza ideias desenvolvidas
em diversas áreas, sendo a estatística uma delas. Enquanto que até os anos 90 méto-
dos criados pela comunidade estatística rapidamente começavam a ser incorporados
em AM, mais recentemente o fortalecimento de AM fez com que a direção oposta co-
meçasse a ficar cada vez mais comum: métodos desenvolvidos por AM começaram
a ser usados em estatística.
O objetivo deste livro é introduzir ideias de AM sob uma ótica estatística, que-
brando barreiras entre essas duas áreas. Pretendemos, assim, contribuir para dimi-
nuir alguns preconceitos existentes, de modo que o melhor de cada campo possa ser
aproveitado.
Este livro. Este livro é fruto de diversos cursos que demos ao longo dos últimos
anos. Ele surgiu no formato de notas de aulas, que foram criadas em função da
necessidade que vimos em ter um material que fizesse a ponte entre estatística e
AM. Essas notas de aula foram feitas tanto para cursos de graduação quanto para
cursos de pós-graduação. Assim, há capítulos mais práticos e capítulos com mais
teoria matemática. Nosso objetivo é construir uma base para que o leitor consiga
entender os paradigmas mais importantes desta área. O propósito deste livro não é
fornecer todos os detalhes e variações que existem sobre os métodos estudados, mas
sim introduzir a essência de cada um deles.
xiii
.
Inicialmente, estudamos o problema de aprendizado supervisionado, que con-
siste em aprender a fazer predições a partir de um conjunto de dados em que os
rótulos (ou seja, os valores da variável resposta) são observados. Tratamos tanto do
problema de regressão (Parte I do livro) quanto do problema de classificação (Parte
II do livro). Em seguida, estudamos o problema de aprendizado não supervisionado
(Parte III), que consiste em aprender mais sobre a estrutura dos dados na ausência de
rótulos. As técnicas aqui estudadas englobam métodos de transformação de variá-
veis e redução de dimensionalidade, análise de agrupamento, análise de associação e
sistemas de recomendação. No Apêndice (Parte IV), fazemos uma breve introdução
sobre como manipular imagens e textos, além de como armazenar matrizes esparsas
eficientemente.
Recomendamos que a leitura do Capítulo 1 seja feita antes dos demais capítulos,
pois ele apresenta a nomenclatura e principais paradigmas abordados no restante
do livro. De forma geral, o entendimento da Parte II (métodos de classificação) é
bastante facilitado pela leitura da Parte I (métodos de regressão).
Requisitos. Assumimos que o leitor é familiarizado com fundamentos de proba-
bilidade e inferência estatística. Uma ótima introdução ao tema no nível desejado é
feita por DeGroot e Schervish (2012).
Códigos em R. Ao longo do livro mostramos códigos em R que podem ser utiliza-
dos para aplicar os métodos apresentados. De modo algum as funções aqui apresen-
tadas constituem uma lista exaustiva com a melhor maneira de fazer essas análises.
Isso seria impossível: a comunidade R é muito dinâmica, sendo criados novos paco-
tes todos os dias. As funções utilizadas servem de guia para iniciar o leitor em cada
método e permitir que ele reproduza os exemplos apresentados.
Teoria. Neste livro, incluímos alguns resultados teóricos sobre os problemas e
métodos investigados. A teoria é uma ferramenta poderosa para se investigar um
problema. Quando bem feita, ela é capaz de trazer insights diferentes sobre, por
exemplo, quando um método deve funcionar bem e até mesmo sobre como melhorá-
lo. Desta forma, a teoria não é um fim, mas sim uma forma diferente de se estudar
um problema. Esta perspectiva se adiciona a, por exemplo, aplicações e estudos de
simulação, para fornecer um olhar mais amplo sobre cada método. As seções de teo-
ria muitas vezes requerem uma matemática um pouco mais avançada para permitir
seu amplo entendimento. Contudo, o leitor que deseja ter apenas um contato inicial
xiv
Capítulo 0. Prefácio
com AM pode pular esses trechos sem grandes prejuízos para o entendimento do
restante do conteúdo apresentado.
Bancos de dados. Em http://www.rizbicki.ufscar.br/ame disponibilizamos ma-
terial suplementar que pode ser utilizado pelo leitor, incluindo os bancos de dados
usados nos exemplos deste livro. Atualizações do livro também estarão disponíveis
nesta página.
Agradecimentos. Muitos alunos, orientandos e colegas fizeram sugestões que
contribuíram para melhorar a qualidade deste trabalho Agradecemos profundamente
as sugestões de Afonso Fernandes Vaz, Afrânio M. C. Vieira, Ana Paula Jorge do
Espirito Santo, Danilo Tadeschi, Davi Keglevich Neiva, Deborah Bassi Stern, Gil-
son Shimizu, João Marcos Alves Matos, Lucas Leite Cavalaro, Lucas Pereira Lopes,
Luiz Gabriel Fernandes Cotrim, João Carlos Poloniato Ferreira, João Flávio Andrade
Silva, Juliana Maia, Julio M. Stern, Luciana Morita Ishihara, Luís Ernesto Salasar,
Marcela Musetti, Marcia Maria Barbosa da Silva, Marco Henrique de Almeida Ina-
cio, Maurício Najjar da Silveira, Michel Helcias Montoril, Paula Ianishi, Rafael Bassi
Stern, Sarah Izbicki, Taís Roberta Ribeiro, Victor Cândido Reis e Victor Vinicius Fer-
nandes. Um agradecimento especial vai para Leonardo M. Borges e Kaori Nagata,
que fizeram uma capa incrível e deram valiosas sugestões que deixaram o livro mais
bem formatado e agradável de ser lido, assim como Lea Veras, que deu todo apoio
necessário para conseguirmos concluir esse trabalho. Finalmente, agradecemos à
CAPES, CNPq, FAPESP, Insper e UFSCar por tornarem esse trabalho possível.
Erros. Ainda que esta versão do livro tenha sido bastante revisada, ela certa-
mente ainda tem diversos erros. Caso você encontre erros (sejam eles de português
ou de matemática) ou tenha outras sugestões, por favor envie um email para rafae-
lizbicki (em) gmail.com.
xv
.
xvi
Parte I
Regressão
1
Capítulo 1
Introdução
Your assumptions are your
windows on the world. Scrub
them off every once in a while, or
the light won’t come in.
Isaac Asimov
Métodos de regressão surgiram há mais de dois séculos com Legendre (1805) e
Gauss (1809), que exploraram o método dos mínimos quadrados com o objetivo de
prever órbitas ao redor do Sol. Hoje em dia, o problema de estimação de uma função
de regressão possui papel central em estatística.
Apesar de as primeiras técnicas para solucionar esse problema datarem de ao
menos 200 anos, os avanços computacionais recentes permitiram que novas meto-
dologias fossem exploradas. Em particular, com a capacidade cada vez maior de ar-
mazenamento de dados, métodos com menos suposições sobre o verdadeiro estado
da natureza ganham cada vez mais espaço. Com isso, vários desafios surgiram: por
exemplo, métodos tradicionais não são capazes de lidar de forma satisfatória com
bancos de dados em que há mais covariáveis que observações, uma situação muito
comum nos dias de hoje. Similarmente, são frequentes as aplicações em que cada
observação consiste em uma imagem ou um documento de texto, objetos complexos
que levam a análises que requerem metodologias mais elaboradas. Aqui apresenta-
mos diversos avanços recentes na área de regressão sob uma ótica preditivista, assim
como uma revisão de modelos tradicionais sob esta mesma perspectiva.
De modo geral, o objetivo de um modelo de regressão é determinar a relação
3
1.1. Notação e Suposições
entre uma variável aleatória Y ∈R e um vetor x = (x1,...,xd)∈Rd. Mais especifica-
mente, busca-se estimar a função de regressão
r(x) := E[Y|X = x]
como forma de descrever tal relação. Quando Y é uma variável quantitativa, temos
um problema de regressão (Parte I do livro). Para as situações em que Y é qualitativa
temos um problema de classificação (Parte II desse livro).
1.1 Notação e Suposições
Independence is happiness.
Susan B. Anthony
A variável Y frequentemente recebe o nome de variável resposta, variável depen-
dente ou rótulo (label em inglês). Já as observações contidas em x = (x1,...,xd) são,
em geral, chamadas de variáveis explicativas, variáveis independentes, característi-
cas, atributos (features em inglês), preditores ou covariáveis. O objetivo da Parte I
deste livro é descrever algumas técnicas para estimar (ou treinar, como dito na lite-
ratura de aprendizado de máquina) r(x).
Vamos assumir em todo o livro, a menos que seja dito o contrário, que a esti-
mação será feita com base em uma amostra de observações i.i.d. (independentes e
identicamente distribuídas) (X1,Y1),...,(Xn,Yn) ∼ (X,Y). A Seção 9.3 lida com algu-
mas situações em que essa suposição não é razoável. Denotamos por xi,j o valor da
j-ésima covariável na i-ésima amostra, ou seja, xi = (xi,1,...,xi,d), i = 1,...,n (veja a
notação utilizada na Tabela 1.1).
Tabela 1.1: Notação utilizada no livro para as variáveis envolvidas em um problema
de regressão.
Resposta Covariáveis
Y1 X1,1 ... X1,d (= X1)
.
.
.
.
.
.
...
.
.
.
Yn Xn,1 ... Xn,d (= Xn)
4
Capítulo 1. Introdução
Figura 1.1: PIB per capita e expectativa de vida de 211 países.
1.2 Predição versus Inferência: Por que estimar r(x)?
Either you run from it (the past) or
you learn from it!
Rafiki, The Lion King
A seguir veremos alguns exemplos reais nos quais a estimação de r(x) possui
papel central.
Exemplo 1.1. [Expectativa de vida e PIB per Capita] A Figura 1.1 mostra o PIB per
Capita e Expectativa de vida em 211 países em 20121. Uma pergunta de interesse
é como podemos usar esses dados para estabelecer uma relação entre essas duas
variáveis. Esta relação pode ser utilizada para estimar a expectativa de vida de países
cujo PIB per Capita é conhecido, mas a esperança não o é. Para tanto, pode-se estimar
E[Y|x], em que Y é a expectativa de vida em um dado país e x é seu PIB per Capita.
Uma estimativa de E[Y|x] também pode ser utilizada para testar a hipótese de que
não há relação entre essas duas variáveis.
1Dados obtidos em http://data.worldbank.org/
5
1.2. Predição versus Inferência: Por que estimar r(x)?
Exemplo 1.2. [Distância de uma galáxia até a Terra] Em cosmologia, uma variável
de extrema importância é o desvio para o vermelho (redshift, em inglês) de uma galá-
xia, que quantifica o quão longe este objeto encontra-se da Terra. A espectroscopia
permite que o desvio para o vermelho seja determinado com grande acurácia, con-
tudo ela é extremamente cara e demanda muito tempo para ser feita. Assim, um
grande interesse na atualidade é como estimar essa quantidade utilizando-se apenas
imagens das galáxias ao invés da espectroscopia (Dalmasso et al., 2020; Schmidt et
al., 2020) (veja a Figura 1.2 para um exemplo). Para tanto, pode-se usar uma amostra
(X1,Y1),...,(Xn,Yn), em que Xi é a imagem da i-ésima galáxia e Yi seu respectivo des-
vio para o vermelho obtido via espectroscopia, para estimar a função de regressão
r(x). A partir dessa função é possível predizer as respostas em imagens de novas
galáxias cujas distâncias até a Terra são desconhecidas. Veja o Apêndice A.1 para
uma breve exposição sobre como trabalhar com imagens.
Figura 1.2: Acima: representação gráfica do universo e sua expansão. Abaixo: ima-
gem de uma galáxia (crédito das imagens: ESA/Hubble).
6
Capítulo 1. Introdução
Exemplo 1.3. [Isomap face data] Neste conjunto de dados, proveniente de Tenen-
baum et al. (2000), o objetivo é estimar a direção para a qual uma pessoa está olhando
(a resposta y) com base em uma imagem desta pessoa (covariáveis x). Uma forma
de se fazer isso é estimando a função de regressão r(x) com base em uma amostra.
Uma vez ajustada, r(x) pode ser utilizada para predizer a direção em novas imagens
definidas por covariáveis x.
Figura 1.3: Isomap face data: cada observação consiste na imagem de um indivíduo
que compõe um objeto x juntamente com a direção para a qual ele está olhando (y).
Exemplo 1.4. [Predição do ano de lançamento de músicas] Os dados do YearPre-
dictionMSD2 contém informações de diversas covariáveis sobre certas músicas do
banco Million Song Dataset (por exemplo, informações sobre timbre, o "quão energé-
tica" é cada uma das músicas, o "quão dançáveis” elas são etc), assim como o ano de
lançamento de cada uma delas. Com esse banco de dados, é possível utilizar uma
estimativa de r(x) (em que x são as covariáveis medidas e Y é o ano de lançamento
de uma dada música) para (i) predizer o ano de lançamento de músicas com base
apenas nas covariáveis e (ii) entender quais covariáveis estão relacionadas ao ano de
lançamento e como se dá essa relação (por exemplo, nos anos 70 as músicas eram
mais "dançáveis”?).
Os objetivos desses exemplos, resumidamente, podem ser divididos em duas
classes:
2https://archive.ics.uci.edu/ml/datasets/YearPredictionMSD.
7
1.3. As Duas Culturas
• Objetivo inferencial: Quais preditores são importantes? Qual a relação entre
cada preditor e a variável resposta? Qual o efeito da mudança de valor de um
dos preditores na variável resposta?
• Objetivo preditivo: Como podemos criar uma função
g : Rd
−→ R
que tenha bom poder preditivo? Isto é, como criar g tal que, dadas novas ob-
servações i.i.d. (Xn+1,Yn+1),...,(Xn+m,Yn+m), tenhamos
g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m?
Enquanto em alguns dos problemas o objetivo é claramente inferencial ou predi-
tivo, em outros temos uma mistura de ambos. Por exemplo, no Exemplo 1.3 temos
um problema claramente preditivo: a relação entre cada pixel da imagem e a res-
posta em geral não é de interesse imediato. Já no Exemplo 1.4 temos um objetivo
misto: desejamos criar uma função para descobrir o ano de lançamento de músicas
com base em suas covariáveis e ao mesmo tempo também queremos entender como
o perfil de músicas mudou ao longo dos anos.
1.3 As Duas Culturas
We never look beyond our
assumptions and what’s worse,
we have given up trying to meet
others; we just meet ourselves.
Muriel Barbery
Breiman (2001a) argumenta que existem duas culturas no uso de modelos esta-
tísticos (em especial modelos de regressão). Grosso modo, a primeira cultura, cha-
mada de data modeling culture por Breiman, é a que domina a comunidade estatís-
tica. Em geral, nela se assume que o modelo utilizado para r(x) – por exemplo,
r(x) = β0 + ∑d
i=1 βixi – é correto. Isso ocorre pois o principal objetivo está na inter-
pretação dos parâmetros envolvidos no modelo (nesse caso, βi’s); em particular há
interesse em testes de hipóteses e intervalos de confiança para esses parâmetros. Sob
8
Capítulo 1. Introdução
essa abordagem, testar se as suposições do modelo (por exemplo, normalidade dos
erros, linearidade, homocedasticidade etc) são válidas é de fundamental importân-
cia. Ainda que predição muitas vezes faça parte dos objetivos, o foco em geral está
na inferência.
A segunda cultura, chamada de algorithmic modeling culture por Breiman, é a que
domina a comunidade de aprendizado de máquina (machine learning). Neste meio, o
principal objetivo é a predição de novas observações. Não se assume que o modelo
utilizado para os dados é correto; o modelo é utilizado apenas para criar bons algo-
ritmos para prever bem novas observações. Muitas vezes não há nenhum modelo
probabilístico explícito por trás dos algoritmos utilizados.
Observação 1.1. Mesmo que o objetivo primordial de uma problema de predição
seja obter um bom poder preditivo, a interpretabilidade do modelo final também
é importante por diversas razões. Na Seção 6.1 discutimos algumas dessas razões,
assim como formas de interpretar as predições dadas por modelos complexos.
O foco deste livro está na segunda abordagem. Buscaremos estimar r(x) sem
assumir que os modelos contenham a verdadeira função de regressão.
Apesar dessa divisão de culturas, Breiman foi um estatístico que fez um grande
trabalho para unir a área de estatística com aprendizado de máquina. Devido à
grande importância desse estatístico nessa tarefa, um prêmio concedido em sua ho-
menagem foi criado pela American Statistical Association. Essa união entre as áreas é
mutuamente benéfica e, portanto, esse livro visa unir as duas culturas.
1.4 A Função de Risco
O primeiro passo para construir boas funções de predição é criar um critério para
medir o desempenho de uma dada função de predição g : Rd −→ R. Em um contexto
de regressão, faremos isso através de seu risco quadrático, embora essa não seja a
única opção:
Rpred(g) = E
h
(Y − g(X))2
i
,
em que (X,Y) é uma nova observação que não foi usada para estimar g. Quanto
menor o risco, melhor é a função de predição g. Mais detalhes sobre essa esperança
serão apresentados na Observação 1.3.
9
1.4. A Função de Risco
Observação 1.2. A função L(g(X);Y) = (Y − g(X))2 é chamada de função de perda
quadrática. Outras funções de perda podem ser utilizadas, como por exemplo a fun-
ção de perda absoluta; L(g(X);Y) = |Y − g(X)|. Em geral, o risco é definido como a
esperança de uma função de perda.
Quando medimos a performance de um estimador com base em seu risco qua-
drático, criar uma boa função de predição g : Rd −→ R equivale a encontrar um bom
estimador para a função de regressão r(x). Assim, responder à pergunta do porquê
estimar a função de regressão é, nesse sentido, o melhor caminho para se criar uma
função para predizer novas observações Y com base em covariáveis observadas x.
Isso é mostrado no seguinte teorema:
Teorema 1. Suponha que definimos o risco de uma função de predição g : Rd −→ R via
perda quadrática: Rpred(g) = E

(Y − g(X))2

, em que (X,Y) é uma nova observação que
não foi usada para estimar g. Suponhamos também que medimos o risco de um estimador da
função de regressão via perda quadrática: Rreg(g) = E

(r(X) − g(X))2

. Então
Rpred(g) = Rreg(g) + E[V[Y|X]].
Demonstração.
E
h
(Y − g(X))2
i
= E
h
(Y − r(X) + r(X) − g(X))2
i
= E
h
(r(X) − g(X))2
i
+ E[(Y − r(X))2
] + 2E[(r(X) − g(X))(Y − r(X))]
= E
h
(r(X) − g(X))2
i
+ E[V[Y|X]],
em que o último passo segue do fato que
E[(r(X) − g(X))(Y − r(X))] = E[E[(r(X) − g(X))(Y − r(X))|X]] = 0
e
E[(Y − r(X))2
] = E[E[(Y − r(X))2
|X]] = E[V[Y|X]],
pois r(X) = E[Y|X].
10
Capítulo 1. Introdução
Assim, visto que o termo E[V[Y|X]]3 não depende de g(x), estimar bem a função
de regressão r(x) é fundamental para se criar uma boa função de predição sob a ótica
do risco quadrático, já que a melhor função de predição para Y é a função de regressão r(x):
argmin
g
Rpred(g) = argmin
g
Rreg(g) = r(x).
Observação 1.3. A função g no Teorema 1 pode ser entendida tanto como sendo
fixa (neste caso R(g) é chamado de risco condicional) quanto como sendo aleatória
(função dos dados). Neste último caso, a esperança é tomada com relação à obser-
vação (X,Y) e à amostra (X1,Y1),...,(Xn,Yn), e o risco é chamado de risco esperado.
Em outras palavras, o risco esperado é a esperança do risco condicional sob todas
as possíveis amostras usadas para criar g. Assim, ele pode ser entendido como uma
garantia sobre o processo de criação de g ao invés de uma garantia sobre a particular
função g criada para um dado problema. Por exemplo, se o risco esperado de uma
regressão linear vale C em um dado problema, isso implica que, em média, uma re-
gressão linear para dados que seguem a mesma distribuição desse conjunto e com
o mesmo tamanho amostral possui risco condicional C. Dependendo do contexto,
utilizaremos uma ou outra definição.
Daqui em diante, denotaremos por R o risco preditivo Rpred.
Em um contexto de predição, a definição de risco condicional (isto é, conside-
rando g fixo; veja a Observação 1.3) possui grande apelo frequentista. Digamos que
observamos um novo conjunto, (Xn+1,Yn+1),...,(Xn+m,Yn+m), i.i.d à amostra obser-
vada. Então, pela lei dos grandes números, sabemos que, se m é grande,
1
m
m
∑
i=1
(Yn+i − g(Xn+i))2
≈ R(g) := E
h
(Y − g(X))2
i
.
Em outras palavras, se R(g) possui valor baixo, então
g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m,
e, portanto, teremos boas predições em novas observações. Note que essa conclusão
3Para uma interpretação deste termo, veja a Seção 1.5.2.
11
1.5. Seleção de Modelos: Super e Sub-Ajuste
vale para qualquer função de perda L utilizada para definir o risco, uma vez que
1
m
m
∑
i=1
L(g(Xn+i);Yn+i)) ≈ R(g) := E[L(g(X);Y))].
O objetivo dos métodos de regressão sob a ótica preditivista é, portanto, fornecer,
em diversos contextos, métodos que apresentem bons estimadores de r(x), isto é,
estimadores com risco baixo.
1.5 Seleção de Modelos: Super e Sub-Ajuste
The best preparation for tomorrow
is doing your best today.
H. Jackson Brown Jr
Em problemas práticos, é comum ajustar vários modelos para a função de regres-
são r(x) e buscar qual deles possui maior poder preditivo, isto é, qual possui menor
risco. Isto é exemplificado a seguir.
Exemplo 1.5. [Expectativa de vida e PIB per Capita] Revisitamos aqui o Exemplo
1.1. A Figura 1.4 mostra o ajuste de três modelos distintos para a funçaõ de predição:
g(x) = β0 +
p
∑
i=1
βixi
, para p ∈ {1,4,50}.
Em outras palavras, ajustamos três regressões polinomiais: uma de 1o grau, uma
de 4o grau e uma de 50o grau. Os ajustes foram feitos (ou seja, βi foram estimados)
por meio do método dos mínimos quadrados (Capítulo 2). Enquanto o modelo de 1o
grau é simplista demais para os dados, o modelo com p = 50 (ou seja, do 50o grau)
é extremamente complexo e parece fornecer uma função g que não produzirá boas
predições em novas observações. O modelo com p = 4 parece ser o mais razoável
nesse caso. Dizemos que o modelo com p = 1 sofre de sub-ajuste, ou underfitting (não
é suficiente para explicar bem os dados), enquanto o modelo com p = 50 sofre de
super-ajuste, ou overfitting (ele se ajusta demais a esta amostra específica, mas possui
baixo poder de generalização). O objetivo desta seção é descrever um método para
escolher o modelo intermediário entre sub-ajuste e super-ajuste. Nesse exemplo,
queremos um método que escolha p = 4 automaticamente.
12
Capítulo 1. Introdução
Figura 1.4: Comparação dos modelos g(x) = β0 + ∑
p
i=1 βixi, para p ∈ {1,4,50} nos
dados de esperança de vida (Y) versus PIB per Capita (X).
Observação 1.4. Um modelo pode interpolar os dados e, ainda assim, não apresen-
tar super-ajuste (Belkin et al., 2019b). Em outras palavras, mesmo que ocorra inter-
polação, uma função de predição pode ter bom poder preditivo. Esse fenômeno é
frequentemente observado em redes neurais (Seção 4.11). Veja, por exemplo, Belkin
et al. (2019a) e Belkin et al. (2018) para uma discussão mais aprofundada.
O objetivo de um método de seleção de modelos é selecionar uma boa função
g. Nesse caso, utilizaremos o critério do risco quadrático para avaliar a qualidade
da função. Logo, queremos escolher uma função g dentro de uma classe de can-
didatos G que possua bom poder preditivo (baixo risco quadrático). Dessa forma,
queremos evitar modelos que sofram de sub ou super-ajuste. Uma vez que R(g) é
desconhecido, é necessário estimá-lo para avaliar a função g ∈ G. Na próxima seção
apresentaremos métodos para estimar esse risco.
13
1.5. Seleção de Modelos: Super e Sub-Ajuste
1.5.1 Data Splitting e Validação Cruzada
O risco observado (também chamado de erro quadrático médio no conjunto de
treinamento), definido por
EQM(g) :=
1
n
n
∑
i=1
(Yi − g(Xi))2
(1.1)
é um estimador muito otimista do real risco. Se usado para fazer seleção de modelos,
ele leva ao super-ajuste, um ajuste perfeito dos dados. Isto ocorre pois g foi escolhida
de modo a ajustar bem (X1,Y1),...,(Xn,Yn).
Uma maneira de solucionar este problema é dividir o conjunto de dados em duas
partes, treinamento e validação:
Treinamento (por exemplo, 70%)
z }| {
(X1,Y1),(X2,Y2),...,(Xs,Ys) ,
Validação (por exemplo, 30%)
z }| {
(Xs+1,Ys+1),...,(Xn,Yn).
Usamos o conjunto de treinamento exclusivamente para estimar g (por exemplo,
estimar os coeficientes da regressão linear) e o conjunto de validação apenas para
estimar R(g) via
R̂(g) =
1
n − s
n
∑
i=s+1
(Yi − g(Xi))2
:= b
R(g), (1.2)
isto é, avaliamos o erro quadrático médio no conjunto de validação.
Uma boa prática para escolher quais amostras serão utilizadas para compor o
conjunto de treinamento e quais serão utilizadas para compor o conjunto de va-
lidação é fazê-lo aleatoriamente. Dessa forma, utiliza-se um gerador de números
aleatórios para escolher quais amostras serão usadas para o treinamento e quais se-
rão usadas para a validação. Esse procedimento evita problemas quando o banco
de dados está previamente ordenado de acordo com alguma covariável (por exem-
plo, quem coletou o banco pode ter ordenado as observações em função de alguma
variável).
Como o conjunto de validação não foi usado para estimar os parâmetros de g, o
estimador da Equação 1.2 é consistente pela lei dos grandes números.
14
Capítulo 1. Introdução
Para uma função de perda L qualquer, o risco pode ser aproximado por
R(g) ≈
1
n − s
n
∑
i=s+1
L(g(Xi);Yi) := b
R(g).
O procedimento de dividir os dados em dois e utilizar uma parte para estimar o
risco é chamado de data splitting. Uma variação deste método é a validação cruzada,
que faz uso de toda a amostra. Por exemplo, no leave-one-out cross validation (LOOCV)
(Stone, 1974), o estimador usado é dado por
R̂(g) =
1
n
n
∑
i=1
(Yi − g−i(Xi))2
,
em que g−i é ajustado utilizando-se todas as observações exceto a i-ésima delas, ou
seja, utilizando-se
(X1,Y1),...,(Xi−1,Yi−1),(Xi+1,Yi+1),...,(Xn,Yn).
Alternativamente, pode-se usar o k-fold cross validation. Nessa abordagem divide-
se os dados aleatoriamente em k-folds (lotes) disjuntos com aproximadamente o mesmo
tamanho, como mostra a Figura 1.5 para um cenário com 20 observações separa-
das em 5 lotes. Sejam L1,..., Lk ⊂ {1,...,n} os índices associados a cada um dos
lotes. A ideia do k-fold cross validation é criar k estimadores da função de regres-
são, ĝ−1,...,ĝ−k, em que ĝ−j é criado usando todas as observações do banco menos
aquelas do lote Lj. O estimador do risco é dado por
R̂(g) =
1
n
k
∑
j=1
∑
i∈Lj
(Yi − g−j(Xi))2
.
Note que quando k = n, recuperamos o LOOCV. Para mais detalhes, veja Wasserman
(2006).
Observação 1.5. Segue, da lei dos grandes números, que a estimação do risco base-
ada na divisão treinamento versus validação fornece um estimador consistente para
o erro condicional. Por outro lado, o leave-one-out cross validation é aproximadamente
não-viesado para o erro esperado (o risco descrito na Observação 1.3). De fato, se R(g)
15
1.5. Seleção de Modelos: Super e Sub-Ajuste
é o erro esperado do método de construção de g, então
E

1
n + 1
n+1
∑
i=1
(Yi − g−i(Xi))2
#
=
1
n + 1
n+1
∑
i=1
E
h
(Yi − g−i(Xi))2
i
=
1
n + 1
n+1
∑
i=1
R(g) = R(g),
em que a segunda igualdade segue do fato que g−i tem a mesma distribuição de
g. Assim, o estimador leave-one-out cross validation, calculado em um conjunto com
n + 1 observações, é não viesado para o erro esperado do estimador obtido com n
amostras.
Figura 1.5: Esquema de validação cruzada para uma situação com 20 observações e
5 lotes.
Utilizando a validação cruzada para estimar R(g) para cada g ∈ G nos permite
escolher g com menor risco estimado.
Treino versus Validação versus Teste. Do mesmo modo que o EQM no conjunto
de treinamento é muito otimista pois cada g ∈ G é escolhida de modo a (aproximada-
16
Capítulo 1. Introdução
mente) minimizá-lo, o EQM no conjunto de validação avaliado na g com menor EQM
no conjunto de validação também é otimista, principalmente se muitos métodos de pre-
dição forem avaliados no conjunto de validação. Isso pode levar a um super-ajuste
ao conjunto de validação, isto é, pode levar à escolha de uma função g que tem bom
desempenho no conjunto de validação, mas não em novas observações. Uma forma
de contornar esse problema é dividir o conjunto original em três partes: treinamento,
validação e teste. Os conjuntos de treinamento e validação são usados como descrito
anteriormente. Já o conjunto de teste é usado para estimar o erro do melhor esti-
mador da regressão determinado com a utilização do conjunto de validação. Assim,
poderemos saber se o risco da melhor g encontrada de fato é pequeno.
Diversas variações dessa ideia podem ser usadas. Por exemplo, digamos que
queremos comparar uma regressão polinomial com um lasso (Seção 3.3). Um pro-
cedimento razoável é: (i) escolher o melhor grau do polinômio e o tuning parameter
λ do lasso usando data-splitting dentro do treinamento (isto é, dividindo o treina-
mento em duas partes: treinamento e validação) e (ii) comparar o desempenho da
melhor regressão polinomial com o melhor lasso (segundo o critério (i)) no conjunto
de teste. Assim, o teste será usado para comparar apenas dois modelos. Alternati-
vamente, podemos trocar (i) por uma validação cruzada dentro do treino. De forma
geral, idealmente usamos uma das divisões (a validação) para escolher os tuning pa-
rameters de cada um dos métodos e a outra (o teste) para comparar a melhor versão
de cada método. Veja a Seção 7.2 para mais detalhes no contexto de classificação.
Intervalos de confiança para o risco. Utilizando o conjunto de teste, podemos
também fazer um intervalo de confiança para o risco. Denote por (X̃1,Ỹ1),...,(X̃m,Ỹm)
os elementos do conjunto de teste (ou seja, não foram utilizados para treinamento ou
validação do modelo). Um estimador não viesado para o risco de g (que foi estimada
com base nos conjuntos de treinamento e validação) é dado por
b
R(g) =
1
m
m
∑
k=1
Ỹk − g(X̃k)
2
| {z }
Wk
.
Como b
R(g) é uma média de variáveis i.i.d., o Teorema do Limite Central implica que
b
R(g) ≈ Normal

R(g),
1
m
V[W1]

.
17
1.5. Seleção de Modelos: Super e Sub-Ajuste
Como W1,...,Wm são i.i.d.’s, podemos estimar V[W1] com
b
σ2 =
1
m
m
∑
k=1
Wk − W
2
,
em que W = 1
m ∑m
k=1 Wk. Assim, um intervalo de confiança (IC) aproximado de 95%
para R(g) é dado por
b
R(g) ± 2
r
1
m
b
σ2. (1.3)
A Equação 1.3 também nos dá um insight sobre como escolher o tamanho da di-
visão entre treino e validação. Podemos escolher o menor m tal que o tamanho do
intervalo de confiança para o risco seja tão pequeno quanto queremos. Essa ideia
é especialmente interessante se o tamanho amostra é grande. Neste caso, o tama-
nho do conjunto de validação pode ser bastante menor que o do conjunto de treino,
uma vez que estimar o risco é uma tarefa muito mais fácil que criar uma função de
predição.
Exemplo 1.6. [Expectativa de vida e PIB per Capita] Revisitamos os Exemplos 1.1 e
1.5. Aqui nosso objetivo é selecionar o melhor estimador dentro da classe
G =
(
g(x) : g(x) = β0 +
p
∑
i=1
βixi
, para p ∈ {1,2,...,50}
)
.
A Figura 1.6a mostra o erro quadrático médio no conjunto de treinamento para cada
g ∈ G. Observamos que, quanto maior o número de parâmetros, menor o erro qua-
drático médio no conjunto de treinamento. Por outro lado, a Figura 1.6b mostra o
risco estimado para cada g ∈ G via EQM no conjunto de validação; como os riscos
para p  11 são demasiadamente altos, mostramos apenas o comportamento para
p ≤ 11. Vemos que o menor erro no conjunto de treinamento pode não levar ao me-
nor erro no conjunto de validação. Isso acontece devido ao superajuste no conjunto
de treinamento. Os gráficos da Figura 1.7 mostram que, de fato, minimizar o erro no
conjunto de validação (gráfico da direita) leva a um melhor ajuste do que minimizar
o erro no conjunto de treinamento (gráfico da esquerda). Assim, o data splitting nos
leva à escolha de um modelo adequado para predizer novas observações.
18
Capítulo 1. Introdução
(a) (b)
Figura 1.6: Comparação dos modelos g(x) = β0 + ∑
p
i=1 βixi, para p ∈ {1,2,...,50}
nos dados de esperança de vida (Y) versus PIB per Capita (X). EQM do conjunto de
treinamento (esquerda) e EQM do conjunto de validação (direita). A primeira forma
de fazer a seleção de modelos leva ao superajuste.
Figura 1.7: Comparação dos modelos ajustados segundo melhor EQM do conjunto
de treinamento (esquerda) e segundo EQM do conjunto de validação (direita).
Exemplo 1.7. [A especificação do modelo estar correta não garante melhor poder
19
1.5. Seleção de Modelos: Super e Sub-Ajuste
preditivo.] Dentro da cultura do data modeling, é comum checar se as suposições fei-
tas por um modelo estão corretas. Contudo, a especificação do modelo estar correta
não garante melhor poder preditivo. Isto é, um modelo especificado incorretamente
em relação ao modelo que gerou os dados pode ter melhor desempenho. Nesta se-
ção isso é ilustrado via um exemplo simulado. Os dados são gerados de modo que
Y|x ∼ N(β|x,1), com β = (0,3,2,0.2,0.1,0.1) e x = (1,x,x2,...,x5). Portanto, a re-
gressão real é um polinômio de quinto grau. Ajustamos então um polinômio de
quinto grau e um polinômio de segundo grau.
A Figura 1.8 indica que, apesar de o modelo correto ser um polinômio de quinto
grau, um ajuste de segundo grau leva a melhores resultados. Isso ocorre pois o
modelo mais simples possui variância muito menor (ainda que ele seja viesado) e,
assim, evita o overfitting.
Figura 1.8: Neste exemplo, apesar de o modelo correto ser um polinômio de quinto
grau, um ajuste de segundo grau levou a um resultado melhor.
A Tabela 1.2 mostra os erros estimados ao replicar o experimento acima para
1000 conjuntos de treinamento diferentes. O erro esperado do modelo com 2 graus,
de fato, é menor do que o erro esperado do modelo especificado corretamente (isto
é, com 5 graus). Além disso, para a grande maioria dos conjuntos de treinamento, o
risco condicional do modelo mais simples é menor. Essa proporção observada foi de
20
Capítulo 1. Introdução
97,8%.
Tabela 1.2: Risco de cada um dos modelos ajustados.
2 graus 5 graus
Risco 1.7 22354.08
1.5.1.1 Penalização: uma alternativa
Life is sometimes like knockout
football; if you have no goal,
invite penalty!
Abhijit Kar Gupta
Uma forma alternativa de se estimar o risco de um certo modelo g é utilizando
uma medida de penalização ou complexidade.
Quanto mais parâmetros no modelo, mais o erro quadrático médio observado,
EQM(g) (Eq. 1.1), subestima R(g), isto é, maior a diferença entre EQM(g) e R(g).
A ideia por trás de métodos de penalização é criar uma medida de complexidade
para g, P(g), que é utilizada para corrigir essa diferença. Por exemplo, P(g) pode
ser o número de parâmetros que há no modelo. Podemos então compensar o quão
subestimado R(g) é adicionando estas duas quantidades:
R(g) ≈ EQM(g) + P(g).
Existem diversas funções de penalização, com diferentes motivações teóricas.
Dois exemplos populares são:
• P(g) = 2
npb
σ2 (conhecido como AIC);
• P(g) =
log(n)
npb
σ2 (conhecido como BIC).
Aqui, p é o número de parâmetros de g e b
σ2 é uma estimativa de V[Y|x].
21
1.5. Seleção de Modelos: Super e Sub-Ajuste
Figura 1.9: Comparação via AIC dos modelos g(x) = β0 + ∑
p
i=1 βixi, para p ∈
{1,2,...,50} nos dados de esperança de vida versus PIB per Capita.
Note que, se g tem muitos parâmetros, EQM(g) é em geral muito baixo (devido
ao super-ajuste), mas em compensação P(g) é alto. Analogamente, se g tem poucos
parâmetros, EQM(g) é em geral muito alto (devido ao sub-ajuste), mas em compen-
sação P(g) é baixo. Assim, espera-se que EQM(g) + P(g) seja uma boa estimativa
para R(g).
A Figura 1.9 ilustra o uso do AIC para seleção de modelos no Exemplo 1.6. Note
como o comportamento deste gráfico é similar ao da Figura 1.6b. Em particular, os
melhores valores encontrados para p em ambos são muito próximos.
1.5.2 Balanço entre Viés e Variância
Simplicity is an exact medium
between too little and too much.
Sir Joshua Reynolds
Um grande apelo para o uso do risco quadrático é sua grande interpretabilidade:
o risco quadrático (condicional no novo x observado) pode ser decomposto como
E
h
(Y − b
g(X))2
|X = x
i
= V[Y|X = x] + (r(x) − E[b
g(x)])2
+ V[b
g(x)].
22
Capítulo 1. Introdução
Note que estamos trabalhando com o erro esperado (veja a Observação 1.3), em que
a aleatoriedade está tanto em Y quanto na amostra de treinamento e, por essa razão,
estamos utilizando a notação b
g para enfatizar que g é função dos dados.
Assim, o risco pode ser decomposto em três termos:
• V[Y|X = x] é a variância intrínseca da variável resposta, que não depende da
função b
g escolhida e, assim, não pode ser reduzida;
• (r(x) − E[b
g(x)])2
é o quadrado do viés do estimador b
g e
• V[b
g(x)] é a variância do estimador b
g.
É importante observar que os valores dos dois últimos itens podem ser reduzidos
se escolhermos b
g adequado.
Grosso modo, modelos com muitos parâmetros possuem viés relativamente baixo,
mas variância alta, já que é necessário estimar todos eles. Já modelos com poucos pa-
râmetros possuem variância baixa, mas viés muito alto, já que são demasiado sim-
plistas para descrever o modelo gerador dos dados. Assim, com a finalidade de obter
um bom poder preditivo, deve-se escolher um número de parâmetros nem tão alto,
nem tão baixo. A Figura 1.10 mostra qualitativamente o balanço (também chamado
de tradeoff) entre viés e variância.
Figura 1.10: O balanço entre viés e variância.
23
1.7. Resumo
Este tradeoff é justamente o que ocorre no Exemplo 1.5: enquanto p = 50 induz
um modelo com viés relativamente baixo, mas variância alta (há muitos parâmetros
para serem estimados); p = 1 leva a um viés extremamente alto, mas variância muito
baixa. Ao se selecionar o melhor modelo utilizando, por exemplo, data splitting (veja
Figura 1.6b) estamos justamente buscando a melhor combinação viés-variância de
modo a obter um modelo com um risco baixo.
Note que, enquanto em inferência paramétrica tradicionalmente buscam-se es-
timadores não viesados para os parâmetros de interesse, em inferência preditiva é
comum abrir mão de se ter um estimador viesado para, em troca, conseguir-se uma
variância menor e, assim, um risco menor.
1.6 Tuning Parameters
A função do parâmetro p (grau do polinômio) no Exemplo 1.6 é controlar o ba-
lanço entre viés e variância. O valor ótimo de p depende de n e de r(x). O parâmetro
p é chamado de tuning parameter (isto é, um parâmetro de sintonização).
Vários dos métodos de regressão possuem um ou mais tuning parameters. Nesse
livro, como feito no Exemplo 1.6, sempre iremos escolhê-los via validação cruzada
ou data splitting, ainda que essas não sejam as únicas maneiras de fazer essa seleção
(veja por exemplo Wasserman 2006).
1.7 Resumo
Nesse capítulo vimos que há ao menos dois motivos para se fazer uma análise
de regressão: o motivo inferencial, no qual estamos interessados em tirar conclusões
sobre a população à qual os dados pertencem, e o motivo preditivista, no qual estamos
interessados em ter boas predições.
Vimos também que existem duas culturas em análise de dados: data modeling
culture e algorithmic modeling culture. Enquanto na primeira há uma preocupação
em se testar suposições dos modelos utilizados, na segunda o foco está em se obter
modelos com bom poder preditivo.
Mostramos também que nosso objetivo na Parte I deste livro é mostrar diver-
sos métodos que permitam estimar funções g(x) com risco R(g) = E

(Y − g(X))2

baixo. Vimos que encontrar g com risco baixo equivale a encontrar uma boa estima-
24
Capítulo 1. Introdução
tiva da função de regressão. Vimos também que o risco pode ser decomposto em viés
e variância. Modelos complexos possuem variância alta, mas viés baixo, enquanto
modelos simples possuem variância baixa, mas viés alto. Nosso objetivo é encontrar
a complexidade que equilibre este balanço, de modo a termos um risco baixo.
Finalmente, estudamos dois métodos para estimar o risco de uma dada função g:
a validação cruzada/data splitting e a penalização. Estes métodos podem ser utiliza-
dos para fazer seleção de modelos e, assim, equilibrar o balanço entre viés e variân-
cia.
25
1.7. Resumo
26
Capítulo 2
Métodos Paramétricos
Nature is pleased with simplicity.
And nature is no dummy.
Sir Isaac Newton
Métodos paramétricos assumem que a função de regressão pode ser parametri-
zada com um número finito de parâmetros. Neste capítulo iremos nos restringir
apenas a modelos de regressão linear. Assumimos que a maior parte do conteúdo
apresentado aqui é uma revisão de conceitos já conhecidos, mas sob uma perspectiva
possivelmente diferente.
A regressão linear utiliza uma forma linear para a função de predição, ou seja, a
função de predição usada pode ser escrita como
g(x) = β|
x = β0x0 + β1x1 + ... + βdxd, (2.1)
em que adotamos a convenção x0 ≡ 1, e onde β = (β0,...,βd). Note que xi não é
necessariamente a i-ésima variável original; podemos criar novas covariáveis que
são funções das originais (ex: x2
i ,xixj etc; veja também a Seção 4.1 e Exemplo 1.5).
27
2.1. O Método dos Mínimos Quadrados
2.1 O Método dos Mínimos Quadrados
Uma forma de estimar os coeficientes β da regressão linear é utilizando o método
dos mínimos quadrados, isto é,
b
β = argmin
β
n
∑
i=1
(Yi − β0 − β1xi,1 − ... − βdxi,d)2
. (2.2)
A solução para este problema é dada por
b
β = (b
β0, b
β1,..., b
βd) = (X|
X)−1
X|
Y, (2.3)
em que
X =




X1,0 ... X1,d
.
.
.
...
.
.
.
Xn,0 ... Xn,d




e Y = (Y1,...,Yn) (aqui usamos a convenção de que um vetor, quando utilizado
como matriz, é um vetor coluna).
Assim, a função de regressão é estimada por
g(x) = b
β|
x.
Boa parte da literatura estatística é voltada para a justificativa do método dos mí-
nimos quadrados sob um ponto de vista de estimadores de máxima verossimilhança,
assim como para testes de aderência e métodos para a construção de intervalos de
confiança para os parâmetros βi. Indicamos para o leitor interessado nestes aspectos
os livros Morettin e Singer (2019) e Neter et al. (1996).
Em geral, assumir que a verdadeira regressão é, de fato, linear é uma suposição
muito forte. Existe, contudo, uma literatura substancial que tenta justificar o método
dos mínimos quadrados para estimar os coeficientes mesmo quando a regressão real
r(x) não satisfaz essa suposição. Na seção que segue mostramos uma dessas ideias.
28
Capítulo 2. Métodos Paramétricos
2.1.1 Mínimos Quadrados quando a Suposição de Linearidade Fa-
lha
Being entirely honest with oneself
is a good exercise.
Sigmund Freud
A suposição de que a regressão real r(x) é linear muitas vezes não é válida. Con-
tudo, mesmo quando esta suposição falha, frequentemente existe um vetor β∗ tal
que gβ∗ (x) = β|
∗ x tem bom poder preditivo. Neste caso, o método dos mínimos qua-
drados tende a produzir estimadores com baixo risco. Isto ocorre pois b
β converge
para o melhor preditor linear,
β∗ = argmin
β
R(gβ) = argmin
β
E
h
(Y − β|
X)2
i
, (2.4)
em que (X,Y) é uma nova observação, mesmo quando a verdadeira regressão r(x)
não é linear. Além disso, o risco associado a b
β converge para o risco associado a β∗.1
Isto é mostrado no teorema a seguir.
Teorema 2. Seja β∗ o melhor preditor linear (Equação 2.4), e b
β o estimador de mínimos
quadrados (Equação 2.3). Assuma que Σ = E[XX|] está bem definida. Então
b
β
P
−
−−−
→
n−→∞
β∗ e R

gb
β

P
−
−−−
→
n−→∞
R gβ∗

Demonstração. Primeiramente, notamos que se minimizamos E

(Y − β|X)2

, obte-
mos que
β∗ = Σ−1
α,
em que α = (E[YX0],...,E[YXd]). Também notamos que podemos reescrever b
β
como
b
β = b
Σ−1
b
α,
em que b
Σ = n−1
∑n
i=1 XiX|
i e b
α = (b
α0,...,b
αd), com b
αj = n−1
∑n
i=1 YiXi,j. Pela lei fraca
dos grandes números, temos que
b
Σ
P
−
−−−
→
n−→∞
Σ
1β∗ é chamado de oráculo.
29
2.1. O Método dos Mínimos Quadrados
e
b
α
P
−
−−−
→
n−→∞
α,
de modo que, pelo Teorema de Mann-Wald,
b
β
P
−
−−−
→
n−→∞
β∗
e, assim, novamente pelo Teorema de Mann-Wald,
R(gb
β
)
P
−
−−−
→
n−→∞
R gβ∗

O teorema anterior mostra, portanto, que b
β converge para o melhor preditor li-
near, β∗. Pode-se também derivar a taxa desta convergência, isto é, o quão rápido
ela ocorre; veja por exemplo Györfi et al. (2006).
2.1.2 Regressão Linear no R
Seja dados é um data frame com o banco de dados, o estimador de mínimos qua-
drados considerando duas preditoras (explicativa_1 e explicativa_2) pode
ser calculado utilizando
ajuste - lm(resposta ~ explicativa_1 + explicativa_2,
data = dados)
O padrão dessa função considera a inclusão de um intercepto. Para ajustar a
regressão com todas as covariáveis no banco de dados, é possível utilizar o atalho
ajuste - lm(resposta ~ ., data = dados)
Uma vez que o modelo foi ajustado, é possível fazer previsões para um novo
banco de dados (novos_dados) com a função predict:
previsoes - predict(ajuste, newdata = novos_dados)
Note que novos_dados deve ser um dataframe com o mesmo formato (incluindo
nomes das variáveis) que dados.
30
Capítulo 2. Métodos Paramétricos
2.2 Resumo
Vimos neste capítulo que uma regressão linear assume que a função de regressão
pode ser escrita como uma expansão da forma g(x) = β|x = β0 + β1x1 + ... + βdxd.
O vetor x pode representar as covariáveis originais ou transformações dessas. Es-
tudamos o método dos mínimos quadrados, uma forma de se estimar o vetor β, e
mostramos que, mesmo quando a verdadeira regressão não é linear, esse estimador
converge para β∗, o melhor preditor linear de y com base em x.
Infelizmente, quando há muitas covariáveis, o método dos mínimos quadrados
não leva a bons resultados devido ao super-ajuste e à variância extremamente alta
(Seção 1.5). Quando d  n, o estimador não está bem definido, pois a matriz X|X
utilizada para estimar β (Eq. 2.3) não é invertível. No próximo capítulo mostramos
algumas abordagens para contornar esse problema.
31
2.2. Resumo
32
Capítulo 3
Métodos Paramétricos em Altas
Dimensões
O estimador de mínimos quadradados, quando há muitas covariáveis (isto é, d
é grande), possui baixo desempenho devido ao super-ajuste. Há muitos parâmetros
a serem estimados e, portanto, a função de regressão estimada possui baixo poder
preditivo. Em outras palavras, a variância do estimador resultante é alta pois muitos
parâmetros devem ser estimados1. Neste capítulo investigamos alguns métodos que
podem ser usados para contornar esse problema.
3.1 Busca pelo Melhor Subconjunto de Covariáveis
Uma solução para esse problema consiste em retirar algumas variáveis da re-
gressão de modo a diminuir a variância da função de predição estimada. Em outras
palavras, essa solução consiste em aumentar o viés do estimador da regressão real
r(x) e, em troca, esperar que isso resulte em uma diminuição substancial de sua va-
riância. Caso algumas covariáveis observadas não estão associadas (ou têm pouca
associação) à resposta Y, o aumento do viés será pequeno, de modo que o poder
preditivo irá aumentar.
Uma maneira de retirar algumas variáveis da regressão é buscar a estimativa
1Se d  n, o método de mínimos quadrados nem pode ser implementado, uma vez que X|X não é
invertível!
33
3.1. Busca pelo Melhor Subconjunto de Covariáveis
dada por
b
βL0
= arg min
β0∈R,β∈Rd
n
∑
k=1
yk − β0 −
d
∑
i=1
βixk,i
!2
+ λ
d
∑
i=1
I(βi , 0). (3.1)
A penalização ∑d
i=1 I(βi , 0) induz modelos com poucas covariáveis, em particu-
lar se λ é alto. Por exemplo, quando λ −→ ∞, a solução de 3.1 é b
βL0
≡ (ȳ,0), ou seja,
um vetor de zeros para os coeficientes angulares (isto é, a penalização alta descarta
todas as covariáveis do modelo). É importante notar que não há penalização para
β0.
No outro extremo, quando λ = 0, temos que b
βL0
é o estimador de mínimos qua-
drados (isto é, nenhuma variável é descartada sem penalização). Quando λ = 2
n b
σ2,
encontrar a solução da Equação 3.1 equivale a uma busca entre os 2d modelos na
classe
G = {g(x) = b
β0,
g(x) = b
β0 + b
β1x1,
g(x) = b
β0 + b
β2x2,
...
g(x) = b
β0 + b
βdxd,
g(x) = b
β0 + b
β1x1 + b
β2x2,
g(x) = b
β0 + b
β1x1 + b
β3x3,
...
g(x) = b
β0 + b
β1x1 + b
β2x2 + ... + b
βdxd},
em que se utiliza o critério AIC para determinar o melhor modelo. Em outras pa-
lavras, quando λ = 2
n
b
σ2, encontrar a solução da Equação 3.1 é equivalente a ajustar
cada um dos 2d modelos via mínimos quadrados e estimar o risco R(g) para cada
um deles via AIC (Seção 1.5.1.1). O modelo escolhido é aquele com menor risco
estimado.
De um ponto de vista teórico, estimar β com base na Equação 3.1 resolve o pro-
blema, isto é, conseguimos descartar várias das variáveis e, assim, obter um estima-
dor com variância (e erro preditivo) menor. Em contrapartida, há um aumento no
viés do estimador, já que nem todas as variáveis são utilizadas. Como explicado na
34
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Seção 1.5.2, quando o aumento no viés é pequeno se comparado à diminuição na va-
riância, o modelo resultante tem poder preditivo maior. Contudo, do ponto de vista
prático, resolver a Equação 3.1 é computacionalmente trabalhoso quando há muitas
covariáveis, uma vez que há 2d modelos para serem ajustados. A Figura 3.1 ilustra
como o número de modelos cresce à medida que d aumenta.
Figura 3.1: Número de subconjuntos de d covariáveis como função de d.
Uma vez que esse método é impráticavel em diversas situações, é interessante
utilizar alguma heurística que reduza o número de modelos que devem ser ajustados
e, ainda assim, apresentem um risco pequeno. Isto é, ao invés de resolver a Equação
3.1, busca-se por uma aproximação desta solução. Um desses métodos é descrito na
próxima seção.
3.2 Regressão Stepwise
Uma série de algoritmos que consistem em heurísticas que consideram um nú-
mero reduzido de modelos (em relação aos 2d do melhor subconjunto) é chamada
de stepwise regression (James et al., 2013). Um exemplo desta heurística é o forward
stepwise, um algoritmo sequencial no qual a cada passo apenas uma variável é adici-
35
3.2. Regressão Stepwise
onada:
1. Para j = 1,...,d, ajuste a regressão de Y na j-ésima variável Xj. Seja b
R(gj) o
risco estimado desta função (usando AIC ou validação cruzada). Defina
b
j = argmin
j
b
R(gj) e S = {b
j}.
2. Para cada j ∈ Sc, ajuste a regressão de Y = βjXj + ∑s∈S βsXs + e, e seja b
R(gj) o
risco estimado desta função (usando AIC ou validação cruzada). Defina
b
j = argmin
j∈Sc
b
R(gj) e atualize S ←− S ∪ b
j.
3. Repita o passo anterior até que todas as variáveis estejam em S ou até que não
seja possível mais ajustar a regressão
4. Selecione o modelo com menor risco estimado.
Note que, no forward stepwise, ao invés de buscarmos um entre 2d modelos, é ne-
cessário investigar somente 1 + d(d + 1)/2 modelos. A Figura 3.2 ilustra a diferença
na magnitude do números de modelos ajustados em cada método.
Figura 3.2: Número de modelos utilizando abordagem de melhor subconjunto e
forward stepwise como função do número d.
36
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Uma segunda maneira de encontrar um estimador linear da regressão com bom
risco quando há muitas covariáveis é o lasso. Descrevemos esse método a seguir.
3.3 Lasso
The penalty may be removed, the
crime is eternal.
Ovid
O lasso, desenvolvido por Tibshirani (1996), tem como finalidade encontrar um
estimador de uma regressão linear que possui risco menor que o de mínimos qua-
drados. O lasso possui duas grandes vantagens em relação à heurísticas stepwise: sua
solução é mais rápida e possui mais garantias teóricas.
Assim como no método baseado na Equação 3.1, o lasso consiste em encontrar
uma solução β que minimize a soma de seu erro quadrático médio com uma medida
de complexidade de β. Novamente, a ideia é reduzir a variância do estimador de
mínimos quadrados. Contudo, ao invés de medir a complexidade de um modelo
como uma função do número de parâmetros (isto é, ∑d
i=1 I(βi , 0), a norma L0), no
lasso essa complexidade é medida pela norma L1 desse vetor, ∑d
j=1 |βj|. Assim como
a norma L0, a norma L1 é menor para modelos com muitos coeficientes iguais a zero.
Contudo, ao contrário da norma L0, a norma L1 captura a ideia de que uma pequena
mudança nos valores de β não altera demasiadamente a complexidade do modelo
resultante (já que suas predições serão praticamente as mesmas). Isso fica evidente
na Tabela 3.1: as duas primeiras linhas mostram coeficentes que levam a modelos
preditivos parecidos, contudo, enquanto a norma L1 dos dois modelos é próxima, a
norma L0 é muito diferente. Analogamente, os modelos da linha dois e três levam a
predições muito diferentes (por exemplo, uma pequena alteração em xi resultará em
grande alteração na predição dada pelo segundo o modelo da terceira, mas não no
modelo da segunda linha), mas a norma L0 dois dois é a mesma.
Formalmente, no lasso, buscamos por
b
βL1,λ = argmin
β
n
∑
k=1
yk − β0 −
d
∑
j=1
βjxk,j
!2
+ λ
d
∑
j=1
|βj|, (3.2)
em que L1 indica o fato de que estamos medindo a esparsidade de um vetor β usando
37
3.3. Lasso
sua norma em L1, ||β||L1
= ∑d
j=1 |βj|.
Tabela 3.1: Diferentes medidas de esparsidade/penalização.
Penalidade
β ∑d
j=1 I(βj , 0) ∑d
j=1 |βj| ∑d
j=1 β2
j
(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 0 0 0.0
(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1) 10 1 0.1
(1, 1, 1,1, 1, 1, 1, 1, 1,1) 10 10 10.0
Note que cada valor do parâmetro λ (tuning parameter) leva a um conjunto de
coeficientes estimados b
βL1,λ diferentes. Assim como ocorre quando usamos a penali-
zação da Equação 3.1, quando λ = 0, minimizar a Eq. 3.2 é equivalente a minimizar
a Eq. 2.2, ou seja, o lasso torna-se idêntico ao estimador de mínimos quadrados, com
todos coeficientes diferentes de zero. Por outro lado, quando λ é grande,
n
∑
k=1
yk − β0 −
d
∑
j=1
βjxk,j
!2
+ λ
d
∑
j=1
|βj| ≈ λ
d
∑
j=1
|βj|,
e portanto o estimador dos coeficientes é tal que b
β1 = 0,..., b
βd = 0. Assim, para
λ grande, o estimador dado pelo lasso tem variância próxima a zero, mas um viés
muito alto. Desta maneira, adicionar a penalização λ∑d
j=1 |βj| também induz estima-
dores com variância menor que aqueles dados pelo método de mínimos quadrados.
A escolha de λ é em geral feita pela validação cruzada. Isto é, estimamos R(gλ)
para cada λ de interesse2 e, posteriormente, selecionamos λ que leva ao melhor mo-
delo selecionado, como mostra a Figura 3.3.
Além da penalização L1 capturar a complexidade de forma que muitas vezes é
mais razoável que a L0, o lasso também possui duas outras características positivas:
• É extremamente rápido calcular b
βL1,λ para todos os λ simultaneamente. Diver-
sos algoritmos foram desenvolvidos nos últimos anos para fazer esta tarefa,
sendo o LARS um dos primeiros desses algoritmos. Para mais detalhes, veja
Friedman et al. (2010). Em particular, por ser um problema convexo, resolver o
2A cada λ corresponde um b
βL1,λ, que por sua vez corresponde uma função de predição g(x).
38
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Figura 3.3: Processo de escolha de λ via validação cruzada. O risco para cada valor
de λ é estimado usando-se validação cruzada.
problema de otimização do lasso é muito mais rápido que buscar pelo melhor
subconjunto de covariáveis como na Equação 3.1.
• A solução induzida pela Equação 3.2 possui muitos zeros (isto é, o vetor b
βL1,λ
é esparso). Assim, o modelo resultante é de fácil interpretação. Note que o fato
de b
βL1,λ ser esparso não é trivial (ao contrário do que ocorre com a penalização
∑d
j=1 I(βj , 0)). Para mais detalhes sobre esse aspecto veja, por exemplo, Hastie
et al. 2001.
3.3.1 Garantias Teóricas
O lasso apresenta algumas garantias teóricas interessantes. Mesmo quando a
regressão não é, de fato linear, o estimador converge para o oráculo esparso. Mais
especificamente, temos o seguinte teorema:
Teorema 3. (Greenshtein, Ritov et al., 2004) Seja
βL
∗ = argmin
β
E[(Y − β|
X)2
] sujeito a ||β||1 ≤ L
o melhor preditor linear esparso com norma menor ou igual a L. Se (X1,Y1),...,(Xn,Yn) são
39
3.4. Regressão Ridge
i.i.d.’s e |Y|,|X1|,...,|Xn| ≤ B para algum B  0, então
b
βL = argmin
β
1
n
n
∑
i=1
(Yi − β|
Xi)2
sujeito a ||β||1 ≤ L
(veja na Equação 3.5 que este é justamente o estimador dado pelo lasso) é tal que, com proba-
bilidade ao menos 1 − δ,
R(gb
βL
) − R(gβL
∗
) ≤
v
u
u
t16(L + 1)4B2
n
log
√
2d
√
δ
!
.
Note que, quanto menor o valor de L no Teorema 3, mais próximo o risco do
estimador do lasso, b
βL, fica do risco do oráculo βL
∗ . Ou seja, mais fácil é se recuperar
o melhor β com norma menor que L. Por outro lado, quanto menor o valor de L, pior
é esse oráculo; aumentar L necessariamente melhora o oráculo, pois a minimização
do risco (teórico) é feita em um espaço maior .
3.4 Regressão Ridge
Uma alternativa ao lasso (que na realidade é anterior a ele) é a regressão ridge
(Hoerl e Kennard, 1970). A ideia é novamente buscar o modelo que minimize a
soma do erro quadrático médio de g com uma medida de sua complexidade. Na
regressão ridge isso é feito encontrando-se o estimador dado por
b
βL2,λ = argmin
β
n
∑
k=1
yk − β0 −
d
∑
j=1
βjxk,j
!2
+ λ
d
∑
j=1
β2
j , (3.3)
em que L2 indica o fato de que estamos medindo a complexidade de um vetor β
usando sua norma em L2, ||β||2
L2
= ∑d
j=1 β2
j . Veja novamente a Tabela 3.1 para uma
comparação entre as diferentes normas estudadas.
Ao contrário do lasso, a regressão ridge possui solução analítica, dada por
b
βL2,λ = (b
β0, b
β1,..., b
βd) = (X|
X + λI0)−1
X|
Y, (3.4)
em que I0 é uma matriz identidade (d + 1) × (d + 1) modificada de modo que
I0(1,1) = 0, ou seja, o elemento da primeira linha e primeira coluna é igual a zero.
40
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Compare essa solução com o estimador de mínimos quadrados (Equação 2.3).
Apesar de não introduzir soluções com zeros como o lasso, a regressão ridge também
diminui a variância dos estimadores da regressão pois encolhe (em inglês, shrinks)
os coeficientes β estimados pela regressão linear. Por exemplo, no caso em que as
covariáveis originais são ortogonais (isto é, X|X = I), temos b
βL2,λ = b
β/(1 + λ), em
que b
β é o estimador de mínimos quadrados. Assim,
V
h
b
βi,L2,λ
i
=
V
h
b
βi
i
(1 + λ)2
.
Evidentemente, como no lasso, apesar da variância da regressão ridge ser menor,
seu viés é maior. Assim, λ deve ser escolhido de modo a controlar o balanço viés-
variância. Novamente, isso pode ser feito via validação cruzada.
Na Seção 4.6.3, estudamos uma extensão não linear da regressão ridge, a kernel
ridge regression.
3.5 Formulação Alternativa
O lasso possui uma formulação alternativa. Pode-se mostrar que, para cada λ ≥
0, existe B ≥ 0 tal que a Equação 3.2 é equivalente a
argmin
β
n
∑
i=1
(yi − β0 − β1x1 − ... − βdxd)2
sujeito a
d
∑
j=1
|βj| ≤ B. (3.5)
Analogamente, as Equações 3.1 e 3.3 (melhor subconjunto e regressão ridge, res-
pectivamente) podem ser reexpressas como
argmin
β
n
∑
i=1
(yi − β0 − β1x1 − ... − βdxd)2
sujeito a
d
∑
j=1
I(βj , 0) ≤ B1
e
argmin
β
n
∑
i=1
(yi − β0 − β1x1 − ... − βdxd)2
sujeito a
d
∑
j=1
(βj)2
≤ B2,
para algum B1 e B2. Isso evidencia mais uma vez que, em todas as abordagens, a
penalização favorece coeficientes pequenos quando comparados à solução de mí-
nimos quadrados. Contudo, enquanto lasso e a penalização por AIC fazem seleção
41
3.6. Interpretação Bayesiana
de variáveis (zeram alguns coeficientes), o mesmo não ocorre com a regressão ridge.
3.6 Interpretação Bayesiana
A penalty is a cowardly way to
score.
Edson Arantes do Nascimento
(Pelé)
Tanto a regressão ridge quanto o lasso admitem uma interpretação sob o ponto de
vista Bayesiano: os estimadores de β, em ambos os procedimentos, podem ser escri-
tos como sendo a moda da distribuição a posteriori de β para uma dada distribuição
a priori e verossimilhança. Mais especificamente, se assumimos que
Yi|xi,β ∼ N(β|
xi;σ2
Id),
em que Id é a matriz identidade de ordem d, as variáveis Y1,...,Yn são independentes
e σ2 conhecido, então:
• Se β ∼ N(0,σ2
βId), então a moda da distribuição a posteriori de β, dado o con-
junto de dados (x1,y1),...,(xn,yn), é exatamente o estimador de β dado pela
regressão ridge (Eq. 3.3) com λ = σ2/σ2
β;
• Se β1,...,βd i.i.d. ∼ Laplace(0,τβ),3 a moda da distribuição a posteriori de β,
dado o conjunto de dados (x1,y1),...,(xn,yn), é exatamente o estimador de β
dado pelo lasso (Eq. 3.2) com λ = σ2τβ.
Note que, sob a abordagem Bayesiana, o tuning parameter λ é definido pela dis-
tribuição a priori. Quanto menor a dispersão da priori, maior o valor de λ e, con-
sequentemente, mais próximo de zero estarão as estimativas a posteriori. Assim,
a abordagem Bayesiana evita o overfitting, por mais que esse não seja necessaria-
mente seu objetivo primordial. O interessante é que isso ocorre justamente porque
a priori centrada em 0 reflete a crença de que os parâmetros relativos à maioria das
covariáveis, em geral, devem ser pequenos.Isso leva a uma interpretação filosófica
3Aqui, τβ é um parâmetro de precisão.
42
Capítulo 3. Métodos Paramétricos em Altas Dimensões
interessante: escolher λ por validação cruzada equivale a escolher a distribuição a
priori que leva a um maior poder preditivo. Em outras palavras, usamos a maqui-
naria Bayesiana apenas para motivar estimadores com uma performance (preditiva)
melhor que a dos mínimos quadrados.
Veja mais sobre a relação entre estimadores de Bayes e os estimadores descritos
neste capítulo em Bishop (2006) e Park e Casella (2008).
3.7 Regressão ridge e lasso no R
No R, ambos os métodos podem ser implementados via a biblioteca glmnet.
Se x é a matriz com as covariáveis e y é a matriz com os valores da variável resposta,
a validação cruzada para o lasso pode ser feita utilizando o seguinte comando:
ajuste - cv.glmnet(x, y, alpha = 1)
A regressão ridge pode ser ajustada utilizando essa mesma função, mas alterando
o argumento alpha = 0 para alpha = 1.
3.8 Exemplos
Exemplo 3.1. Geramos n = 500 observações i.i.d. segundo
Yk = 3Xk,1 − 2Xk,2 + Xk,3 − 3Xk,4 + Xk,5 +
20
∑
i=6
0Xk,i + ek,
com ek ∼ N(0,0.52) e Xk,i ∼ N(0,1), i = 1,...,20 independentes.
A Tabela 3.2 mostra os resultados encontrados. Pode-se observar que o método
dos mínimos quadrados com todas as variáveis foi rápido de ser ajustado, mas tem
poder preditivo muito baixo (o risco estimado é alto). Por outro lado, todos os mé-
todos de seleção de variáveis vistos nesse texto possuem poder preditivo considera-
velmente melhor para este exemplo.
A heurística do forward stepwise fornece os mesmos resultados que a da busca pelo
mínimo da Equação 3.1 (critério AIC), com a vantagem de levar um tempo substan-
cialmente menor. Por outro lado, o lasso forneceu um risco ainda menor em um
intervalo de tempo ainda mais curto; em particular as variáveis selecionadas foram
43
3.8. Exemplos
as que realmente estão associadas a Y. A regressão ridge foi substancialmente me-
lhor que o método de mínimos quadrados com todas as covariáveis, mas levemente
pior que os demais métodos. Contudo, o tempo de execução desse método foi menor
do que o tempo observado para forward stepwise.
Tabela 3.2: Resultados dos métodos de seleção de variáveis no exemplo da Seção 3.8.
Método Variáveis Selecionadas Tempo de ajuste Risco Estimadoa
Mín. Quadrados Todas 0.002 segundos 14.63 (0.02)
Melhor AIC* x1,...,x5,x10,x12,x13,x19,x20 1 hora e 20 minutos 0.30 (0.02)
Forward Step. x1,...,x5,x10,x12,x13,x19,x20 0.46 segundos 0.30 (0.02)
Ridge Todas 0.16 segundos 0.33 (0.03)
Lasso x1,...,x5 0.08 segundos 0.25 (0.02)
a Risco Estimado (Erro Padrão)
* Busca pelo melhor subconjunto
Exemplo 3.2 (Câncer de Próstata). Esses dados são provenientes de um estudo pu-
blicado em Stamey et al. (1989) e estudados por James et al. (2013). Nesse trabalho
os autores investigaram a associação entre o nível de antígeno especifico de próstata
(PSA) e algumas medidas clínicas. Foram observados dados de 97 homens que es-
tavam para fazer prostatectomia radical. O objetivo era prever o logaritmo da PSA
(lpsa) com base nas demais variáveis. A seguir são apresentadas as variáveis para
algumas observações do banco de dados.
Tabela 3.3: Banco de dados de Câncer de Próstata.
lcavol lweight age lbph svi lcp gleason pgg45 lpsa train
0.75 3.43 62 -1.386 0 -1.39 6 0 0.37 TRUE
0.46 3.76 49 1.423 0 -1.39 6 0 2.79 TRUE
-1.35 3.60 63 1.267 0 -1.39 6 0 1.27 TRUE
1.31 4.12 64 2.171 0 -1.39 7 5 2.09 FALSE
2.88 3.77 68 1.558 1 1.56 7 80 5.48 TRUE
0.69 3.54 58 1.537 0 -1.39 6 0 0.85 TRUE
44
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Utilizamos a separação dos dados em treinamento e validação definida no pró-
prio banco de dados (coluna train) para aplicação das técnicas de mínimos quadra-
dos, ridge e lasso.
set.seed(1)
dados - read.table(../dados/prostate.data)
# conjunto de treinamento
tr - dados$train
X_tr - dados[tr, 1:8] %% as.matrix()
y_tr - dados$lpsa[tr]
# conjunto de validação
X_val - dados[-tr, 1:8] %% as.matrix()
y_val - dados$lpsa[-tr]
A seguir iremos ajustar o modelo de mínimos quadrados, ridge e lasso.
# mínimos quadrados
ajuste_mq - glmnet(X_tr, y_tr, alpha = 0, lambda = 0)
predito_mq - predict(ajuste_mq, newx = X_val)
# regressão ridge
cv_ridge - cv.glmnet(X_tr, y_tr, alpha = 0)
ajuste_ridge - glmnet(X_tr, y_tr, alpha = 0)
predito_ridge - predict(ajuste_ridge,
s = cv_ridge$lambda.1se,
newx = X_val)
# regressão lasso
cv_lasso - cv.glmnet(X_tr, y_tr, alpha = 1)
ajuste_lasso - glmnet(X_tr, y_tr, alpha = 1)
predito_lasso - predict(ajuste_lasso,
s = cv_lasso$lambda.1se,
45
3.8. Exemplos
newx = X_val)
As Figuras 3.4 e 3.5 ilustram o comportamento dos coeficientes estimados de
acordo com λ para a regressão ridge e o lasso.
Figura 3.4: Coeficientes estimados via regressão ridge em função de λ. A reta vertical
indica o valor escolhido via validação cruzada.
Figura 3.5: Coeficientes estimados via regressão lasso em função de λ. A reta vertical
indica o valor escolhido via validação cruzada.
46
Capítulo 3. Métodos Paramétricos em Altas Dimensões
A Tabela 3.4 apresenta os coeficientes estimados com a utilização das três técni-
cas. Note a redução dos coeficientes obtidos por mínimos quadrados com estimação
dos métodos ridge e lasso. Ainda, note que excluímos algumas variáveis com a uti-
lização do lasso.
Tabela 3.4: Coeficientes estimados para os dados da próstata considerando mínimos
quadrados, ridge e lasso.
Coeficiente Mínimos Quadrados Ridge Lasso
Intercepto 0.428 0.096 0.164
lcavol 0.577 0.493 0.544
lweight 0.614 0.601 0.596
age -0.019 -0.015 -0.015
lbph 0.145 0.138 0.135
svi 0.737 0.679 0.669
lcp -0.206 -0.117 -0.145
gleason -0.029 0.017 -
pgg45 0.009 0.007 0.007
A Tabela 3.5 apresenta o desempenho preditivo dos modelos obtidos com os da-
dos de treinamento quando aplicados aos dados de validação dos 30 indivíduos.
Levando em conta o erro padrão dos estimadores (que são grandes por conta do ta-
manho pequeno do conjunto de validação), não é possível afirmar qual modelo teve
desempenho preditivo melhor. Contudo, o lasso possui a vantagem de não utilizar
algumas covariáveis.
Tabela 3.5: Desempenho preditivo (erro quadrático médico e seu erro padrão) em
relação ao conjunto de validação dos modelos de mínimos quadrados, ridge e lasso.
Modelo EQM Erro Padrão
Mínimos Quadrados 0.455 0.078
Ridge 0.516 0.079
Lasso 0.560 0.088
47
3.8. Exemplos
Exemplo 3.3 (Amazon Fine Food Reviews). Nesse exemplo, a partir dos textos das
resenhas, mostramos como fazer predições de notas dadas na Amazon. Para isso, se-
lecionaremos um subconjunto do banco de dados Amazon Fine Food Reviews. Esse
banco conta com aproximadamente meio milhão de resenhas. Para ilustração das
técnicas apresentadas anteriormente, separamos 20.000 observações. Dessas, 10.000
foram utilizadas para treinamento dos modelos e 10.000 para validação.
dados - fread(../dados/Reviews.csv, header = TRUE)
# seleciona 20.000 observações
set.seed(1)
selecao - sample(nrow(dados), 20000)
dados - dados[selecao,]
# cria a matriz de preditoras
corp - VCorpus(VectorSource(dados$Text))
dtm - DocumentTermMatrix(corp,
control = list(tolower = TRUE,
stemming = FALSE,
removeNumbers = TRUE,
removePunctuation = TRUE,
removeStripwhitespace = TRUE,
weighting = weightTf))
dtmMatrix - sparseMatrix(i = dtm$i, j = dtm$j, x = dtm$v,
dimnames = list(NULL, dtm$dimnames[[2]]),
dims = c(dtm$nrow, dtm$ncol))
dim(dtmMatrix)
## [1] 20000 36841
# indica observações de treinamento
48
Capítulo 3. Métodos Paramétricos em Altas Dimensões
tr - sample.int(length(selecao), 10000, replace = FALSE)
Assim, consideraremos nesse exemplo um total de 17.072 termos. É importante
notar que não é necessário converter a matriz de dados para o formato usual com
todos os elementos preenchidos. Ela pode ser utilizada de forma esparsa (veja a
Seção A.3 para mais detalhes) e, assim, economizar memória do computador. Com a
utilização do formato esparso, é possível trabalhar com o conjunto completo de meio
milhão de resenhas.
A seguir iremos ajustar o modelo de mínimos quadrados, ridge e lasso.
# mínimos quadrados
ajuste_mq - glmnet(dtmMatrix[tr,],
dados$Score[tr],
alpha = 0, lambda = 0)
predito_mq - predict(ajuste_mq, newx = dtmMatrix[-tr,])
# ridge
ridge - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], alpha = 0)
predito_ridge - predict(ridge,
s = ridge$lambda.min,
newx = dtmMatrix[-tr,])
# lasso
lasso - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], alpha = 1)
predito_lasso - predict(lasso,
s = lasso$lambda.min,
newx = dtmMatrix[-tr,])
Comparando os erros quadráticos médios (Tabela 3.6), notamos que o lasso apre-
sentou o melhor desempenho preditivo, seguida da regressão ridge. Já a regressão
com mínimos quadrados apresentou um desempenho bastante inferior à essas duas
técnicas. Além disso, o lasso seleciona apenas 558 variáveis nesse caso.
49
3.8. Exemplos
Tabela 3.6: Desempenho preditivo (erro quadrático médico e seu erro padrão) em
relação ao conjunto de validação dos modelos de mínimos quadrados, ridge e lasso.
Modelo EQM Erro Padrão
Mínimos Quadrados 7.675 0.234
Ridge 1.205 0.024
Lasso 1.136 0.022
As Figuras 3.6 e 3.7 mostram quais palavras apresentam maior importância para
a previsão. Consideramos os valores positivos e negativos dos coeficientes estima-
dos ordenados. Para esse exemplo, selecionamos os 20 maiores de cada sentido para
a regressão ridge e lasso.
Figura 3.6: Coeficientes com os 20 maiores valores da regressão ridge.
50
Capítulo 3. Métodos Paramétricos em Altas Dimensões
Figura 3.7: Coeficientes com os 20 maiores valores da regressão lasso.
3.9 Resumo
Neste capítulo vimos que, mesmo quando há muitas covariáveis em relação ao
tamanho amostral, muitas vezes é possível criar bons estimadores de r(x) com base
em uma regressão linear. A chave para isso é usar o fato de que, frequentemente,
muitas variáveis têm pouca influência na resposta. Assim, adicionando um termo
de penalização à soma de quadrados (Eq. 3.1), criamos estimadores dos coeficientes
β que encorajam esparsidade, isto é, muitos zeros na solução. Desta forma, criamos
estimadores com uma variância menor. A esperança é que, se o aumento no viés
por retirar essas variáveis não é muito grande, o risco também diminui e, assim,
conseguimos um estimador melhor para r(x) do que aquele obtido pelo método dos
mínimos quadrados (ver Figura 3.8).
Vimos três formas de se fazer a penalização:
• Penalidade L0: ∑d
i=1 I(βi , 0). Encontrar o mínimo da função objetivo con-
some um tempo computacional extremamente alto, pois deve-se buscar o me-
lhor entre os 2d subconjuntos de covariáveis. Assim, é necessário usar uma
51
3.9. Resumo
heurística como stepwise para aproximar este valor.
• Penalidade L1: ∑d
i=1 |βi|. Trata-se do lasso. Esta penalização é rápida de ser
calculada e induz esparsidade em β. Frequentemente ela leva a um estimador
com bom poder preditivo.
• Penalidade L2: ∑d
i=1 β2
i . Trata-se da regressão ridge. Esta penalização não induz
zeros em β, mas reduz a variância do estimador da regressão pois encolhe o
estimador de mínimos quadrados.
Métodos paramétricos muitas vezes impõem muitas limitações para r(x): por
exemplo, nem sempre o melhor estimador linear é um bom estimador para r(x). No
próximo capítulo iremos introduzir métodos não paramétricos para r(x), que são
modelos mais flexíveis que métodos paramétricos. Em linhas gerais, métodos não
paramétricos diminuem o viés e aumentam a variância de métodos paramétricos,
como indica a Figura 3.8.
Figura 3.8: Relação entre métodos não paramétricos, sem penalização e métodos
paramétricos com penalização.
52
Capítulo 4
Métodos Não Paramétricos
With four parameters I can fit an
elephant, and with five I can make
him wiggle his trunk.
John von Neumann
Para amostras pequenas, métodos paramétricos costumam levar a bons resulta-
dos: impondo-se um modelo com poucos parâmetros, é possível criar estimadores
com baixa variância para situações com tamanho amostral (n) pequeno. Contudo,
quando n é grande, muitas vezes é benéfico aumentar o número de parâmetros do
modelo, de modo que tenhamos um viés consideravelmente menor às custas de uma
variância um pouco maior. É exatamente por isso que métodos não paramétricos ga-
nham importância: informalmente, um modelo não paramétrico é um modelo que
tem infinitos parâmetros. Neste capítulo exploramos alguns destes modelos.
4.1 Séries Ortogonais
Métodos baseados em séries ortogonais são bastante antigos (Chentsov, 1962) e
baseiam-se em uma ideia bastante simples: expandir a função de regressão em uma
base ortogonal. Para facilitar a discussão, vamos assumir por hora que x ∈ [0,1] e a
densidade de X é uniform, isto é, f (x) = 1.
O ponto inicial é escolher (ψj(x))j∈N, uma base ortonormal1 para o conjunto de
1Isto é,
R 1
0 ψi(x)ψj(x) = I(i = j).
53
4.1. Séries Ortogonais
funções
L2
([0,1]) :=

f : [0,1] −→ R :
Z 1
0
f2
(x)dx  ∞

.
Um exemplo de (ψj(x))j∈N é a base de Fourier:
ψ0(x) = 1; ψ2j−1(x) =
√
2sin(2πjx), j ∈ N; ψ2j(x) =
√
2cos(2πjx), j ∈ N
Figura 4.1: Alguns elementos da base de Fourier. Os primeiros termos são mais
suaves que os termos de ordem mais alta. Qualquer função integrável em L2 pode
ser escrita como combinação linear dos elementos da base de Fourier.
A ideia central de métodos baseados em séries é que, se a função de regressão
r(x) pertence a L2([0,1]), então r(x) pode ser representada como
r(x) = ∑
j∈N
βjψj(x),
em que, devido à ortonormalidade da base (ψj(x))j∈N, temos que os coeficientes da
expansão admitem uma forma muito simples:
βj =
Z
r(x)ψj(x)dx =
Z
E[Y|x]ψj(x)f (x)dx =
Z
E[Yψj(x)|x]f (x)dx = E[Yψj(X)].
54
Capítulo 4. Métodos Não Paramétricos
Um estimador não viesado para os coeficientes da expansão βj é dado por
b
βj =
1
n
n
∑
i=1
Yiψj(Xi).
Assim, o estimador baseado em séries tem a seguinte forma:
g(x) =
J
∑
j=0
b
βjψj(x). (4.1)
O parâmetro J é um tuning parameter que controla o balanço viés-variância. Valo-
res altos de J levam a um viés baixo, mas variância alta.
Observação 4.1. Se r(x) pertence a L2([0,1]), sabemos que βj −→ 0 quando j −→ ∞,
o que justifica o truncamento da Equação 4.1.
Note que o número de parâmetros, (βj)j∈N, é infinito, por isso o método de séries
é considerado um método não paramétrico.
Se o número de preditoras for maior do que 1 (d  1), construir uma base

ψj(x)
	
j
é uma tarefa menos simples. Tipicamente, isso é feito usando-se d produtos tensori-
ais para cada uma das coordenadas de x. Por exemplo, se d = 2, a base dada por
produtos tensoriais é

ψi,j(x) = ψi(x1)ψj(x2) : i, j ∈ N
	
,
em que x = (x1,x2), e {ψi(x1)}i e

ψj(x2)
	
j
são bases para L2(R). Esta é uma base
para L2(R2) (Wasserman, 2006).
A abordagem de séries ortogonais é essencialmente a mesma que aquela da re-
gressão linear com um número variável de covariáveis, com a exceção de que o esti-
mador de cada coeficiente βi é mais rapidamente calculado devido à ortogonalidade
das funções de base.
Para deixar essa conexão mais clara, considere o exemplo a seguir. Pela expansão
de Taylor, sabemos que qualquer função analítica (Krantz e Parks, 2002) pode ser
expressa como
r(x) = ∑
i≥0
βixi
.
55
4.2. Splines
Essa é justamente a família de modelos usada no Exemplo 1.6. Assim, o modelo
ajustado naquele exemplo foi um modelo não paramétrico, embora os coeficientes
da expansão tenham sido ajustados via regressão linear. O que torna o modelo não
paramétrico é justamente o fato do número de coeficientes usados, J (que naquele
exemplo é denotado por p) ser um tuning parameter que pode assumir qualquer valor
em {0,1,...}. Assim, há um número infinito de parâmetros23.
Para outras abordagens de estimação com séries ortogonais, veja Beran (2000),
Efromovich (1999) e Wasserman (2006). Em particular, tais referências discutem o
uso de outras bases além da base de Fourier, como, por exemplo, wavelets. Veja
também a Seção 4.13 para um pouco de teoria sobre estimadores baseados em séries.
O método de séries pode ser implementado usando-se uma base polinomial via
função lm, descrita no Capítulo 2:
ajuste - lm(y ~ poly(as.matrix(covariaveis), degree = 5))
A função poly calcula automaticamente todos os polinômios (neste caso com
grau até 5) em Rd.
4.2 Splines
Vamos assumir novamente que d = 1. Assim como métodos baseados em séries
ortogonais, em splines aproximamos r(x) como uma combinação linear ∑I
i=1 βi fi(x).
Contudo, ao invés de usar uma base ortonormal, utiliza-se uma base para um espaço
de splines.
Para descrevermos o que é um spline, fixe t1  ...  tp. Chamamos tais pontos de
nós. Um spline de k-ésima ordem é uma função polinomial por partes de grau k que
é contínua e tem derivadas de ordem 1,...,k − 1 contínuas em seus nós. Como um
spline é bem mais suave que uma função que é polinomial por partes (mas sem as
restrições de continuidade), ele consegue aproximar de forma mais eficiente funções
contínuas4.
2Note que quando escolhemos J = J0, estamos estimando βj = 0, ∀j  J0.
3Essa base de polinômios não é ortonormal, mas ela pode ser convertida em uma base ortonormal
via o processo de ortogonalização de Gram-Schmidt. A base resultante é chamada de base de Hermite
(Efromovich, 1999).
4Por exemplo, se r é uma função duas vezes diferenciável em [0,1], então existe um spline cúbico f
com nós em t1  ...  tp tal que supx∈[0,1] |r(x) − f (x)| ≤ O

1
p
qR 1
0 r00(x)2dx

(De Boor et al., 1978).
56
Capítulo 4. Métodos Não Paramétricos
Há diversas formas de se definir uma base para tal espaço. Uma delas é através
das seguintes funções:
f1(x) = 1; f2(x) = x;...; fk+1(x) = xk
,
fk+1+j(x) = (x − tj)k
+, j = 1,..., p
Dessa forma, com essa base, I = k + 1 + p. Há, contudo, muitas outras formas de
definir uma base para este espaço. Existem também muitas variações de splines,
como natural splines ou smoothing splines (veja, por exemplo, Hastie et al. 2001 e a
Seção 4.6.3.1).
Fixados os nós, pode-se então utilizar o método de mínimos quadrados para es-
timar os valores dos coeficientes β1,...,βI. No R, splines podem ser usados via a
biblioteca splines:
fit - lm(y ~ bs(x, degree = 3), data = dados)
predito - predict(fit, newdata = list(x = x.grid), se = TRUE)
Este código ajusta B-splines. Utilizando-se ns, pode-se ajustar natural splines da
mesma maneira. Para smoothing splines, pode-se usar
fit - smooth.spline(x, y, df = 3)
4.3 k Vizinhos Mais Próximos
We’re neighbors and we’re going
to pull together.
Rick Perry
O método dos k vizinhos mais próximos (em inglês, k-nearest neighbours, KNN)
(Benedetti, 1977; Stone, 1977) é um dos mais populares na comunidade de aprendi-
zado de máquina. Ele tem como base estimar a função de regressão r(x) para uma
dada configuração das covariáveis x com base nas respostas Y dos k-vizinhos mais
próximos a x. Formalmente, definimos
g(x) =
1
k ∑
i∈Nx
yi, (4.2)
57
4.3. k Vizinhos Mais Próximos
em que Nx é o conjunto das k observações mais próximas de x, isto é,
Nx =
n
i∈{1,...,n} : d(xi,x) ≤ dk
x
o
e dk
x é a distância do k-ésimo vizinho mais próximo de x a x. Em palavras, a função
de regressão avaliada em x é estimada utilizando-se uma média local das respostas
dos k vizinhos mais próximos a x no espaço das covariáveis.
O tuning parameter k pode ser escolhido por validação cruzada. Um valor alto
de k leva a um modelo muito simples (uma constante quando k −→ ∞) e, assim um
viés alto, mas uma variância baixa. Por sua vez, um valor baixo para k leva a um
estimador com variância alta, mas viés baixo. Veja a Figura 4.2 para uma ilustração.
Figura 4.2: Influência da escolha de k no estimador dos k vizinhos mais próximos.
No R, o método dos vizinhos mais próximos pode ser implementando utilizando
o pacote FNN. A função knn.reg faz a predição para novas observações com co-
variáveis x_teste (uma observação por linha) utilizando um conjunto de treina-
mento com covariáveis x_treinamento, respostas y_treinamento e k vizinhos
da seguinte forma:
library(FNN)
ajuste - knn.reg(train = x_treinamento, test = x_teste,
y = y_treinamento, k = k)
58
Capítulo 4. Métodos Não Paramétricos
predito - ajuste$pred
4.4 Nadaraya-Watson
O método de Nadaraya-Watson, criado por Nadaraya (1964) e Watson (1964), é
uma variação do método dos k-vizinhos mais próximos bastante difundida na co-
munidade de estatística. Este método consiste em estimar a função de regressão em
um dado ponto x utilizando-se uma média ponderada das observações do conjunto
de treinamento:
g(x) =
n
∑
i=1
wi(x)yi,
em que wi(x) é um peso atribuído à i-ésima observação, e que mede o quão similar
xi é a x. Mais especificamente, wi(x) tem a forma
wi(x) =
K(x,xi)
∑n
j=1 K(x,xj)
,
em que K(x,xi) é um kernel de suavização usado para medir a similaridade entre as
observações. Algumas escolhas populares para K(x,xi) são:
• kernel uniforme: K(x,xi) = I(d(x,xi) ≤ h)
• kernel gaussiano: K(x,xi) = (
√
2πh2)−1 exp

− d2(x,xi)
2h2

• kernel triangular: K(x,xi) = (1 − d(x,xi)/h)I(d(x,xi) ≤ h)
• kernel de Epanechnikov: K(x,xi) = (1 − d2(x,xi)/h2)I(d(x,xi) ≤ h)
Enquanto o kernel uniforme atribui o mesmo peso para cada observação a uma
distância menor que h de x e peso zero para observações a uma distância maior que
h (que é um tuning parameter), os kernels triangulares e de Epanechnikov atribuem
pesos diferentes de acordo com a distância até x; observações mais próximas rece-
bem peso maior. O kernel gaussiano, por sua vez, atribui peso positivo para todas
as observações do conjunto de treinamento (novamente, observações mais próxi-
mas recebem peso maior). Outros exemplos de kernels podem ser encontrados em
https://bit.ly/32OSvUl.
59
4.4. Nadaraya-Watson
Note que um valor alto do tuning parameter h leva um estimador da função de
regressão com variância baixa e viés alto, já que o mesmo peso é atribuído para cada
amostra xi neste caso. Por sua vez, h baixo leva a uma estimador com variância alta,
mas viés baixo. Veja a Figura 4.3 para um exemplo com o kernel uniforme.
Figura 4.3: Influência da escolha de h no estimador de Nadaraya-Watson. Aqui o
kernel utilizado foi o kernel uniforme.
Na prática, muitas vezes é observado que a escolha do kernel não influencia
muito os resultados, enquanto a escolha dos tuning parameters associados a ele sim.
Veja um exemplo de comparação de dois kernels na Figura 4.4.
Pode-se verificar que o estimador de Nadaraya Watson em um dado x fixo é
justamente o ponto β0 que minimiza
n
∑
i=1
wi(x)(Yi − β0)2
,
isto é,
g(x) := b
β0 = argmin
β0
n
∑
i=1
wi(x)(Yi − β0)2
, (4.3)
Assim, esse estimador pode ser entendido como um estimador de mínimos quadra-
dos ponderado; no qual consideramos uma função de regressão que contém somente
o intercepto, g(x) = b
β0. Note que x está fixo; para cada x temos um valor de b
β0
diferente, isto é, uma outra regressão linear. Esta motivação para o estimador de
60
Capítulo 4. Métodos Não Paramétricos
Nadaraya-Watson leva a uma extensão deste método conhecida como regressão po-
linomial local, que descrevemos na Seção 4.5.
Figura 4.4: Influência da escolha do kernel no estimador de Nadaraya-Watson.
Uma forma de se ajustar o estimador de Nadaraya-Watson é utilizando o pacote
locfit. Pode-se mudar o kernel utilizado via o argumento kern.
ajuste - locfit(y ~ x_1 + x_2, alpha = c(0, 0.3),
deg = 0, data = dados)
predito - predict(ajuste, newdata = novos_dados)
4.5 Regressão Polinomial Local
A regressão polinomial local (Cleveland, 1979; Fan, 1993; Fan e Gijbels, 1996;
Stone, 1977) é uma extensão do estimador de Nadaraya-Watson. Suponha, por sim-
plicidade, que há apenas d = 1 covariável. A ideia central é que, ao invés de buscar
um estimador baseado no método de mínimos quadrados ponderados com apenas
61
4.6. Métodos baseados em RKHSs
um intercepto como na Equação 4.3, utilizamos um polinômio de grau p:
g(x) := b
β0 +
p
∑
j=1
b
βjxj
,
em que b
β0,..., b
βp são dados por
arg min
β0,...,βp
n
∑
i=1
wi(x) Yi − β0 −
p
∑
j=1
βjx
j
i
!2
.
Aqui, novamente, wi(x) = K(x,xi)
∑n
j=1 K(x,xj)
. Note que, para cada x de interesse, as estimati-
vas dos coeficientes β0,...,βp são diferentes, ou seja esse estimador consiste em usar
o método de mínimos quadrados localmente. A solução para tal problema é dada por
(b
β0 ... b
βp) = (B|
ΩB)−1
B|
Ωy,
em que B é uma matriz n × (p + 1) cuja i-ésima linha é dada por (1, xi, ..., x
p
i ) e Ω
é uma matriz diagonal n × n cujo i-ésimo elemento da diagonal é wi(x).
Uma vantagem de se utilizar polinômios ao invés de apenas um intercepto é que
isso induz estimadores com vieses menores (em particular, o viés em regiões próxi-
mas ao limite do domínio dos dados; veja, por exemplo, Wasserman 2006). Por outro
lado, a variância de tais estimadores é maior, de modo que é importante selecionar
o grau do polinômio a ser utilizado adequadamente. Para regressão polinomial lo-
cal com mais de uma covariável (ou seja, d  1) remetemos o leitor a Fan e Gijbels
(1996).
No R, polinômios locais também podem ser ajustados no R usando o pacote
locfit, como o estimador de Nadaraya-Watson (Seção 4.4). Para isso, basta modi-
ficar o valor do argumento deg, que representa o grau do polinômio a ser utilizado.
Note que 0 corresponde ao estimador de Nadaraya-Watson.
4.6 Métodos baseados em RKHSs
Métodos de estimação da função de regressão com base em RKHSs (Reproducing
Kernel Hilbert Spaces, Aronszajn 1950) (Hastie et al., 2001; Kimeldorf e Wahba, 1970;
Nosedal-Sanchez et al., 2012) são uma família de métodos bastante geral. A ideia
62
Capítulo 4. Métodos Não Paramétricos
central envolve a definição de uma função objetivo para quantificar a qualidade de
uma função de predição e, posteriormente, busca-se a função com melhor ajuste em
um espaço de funções H. Assim, busca-se pela solução de
argmin
g∈H
n
∑
k=1
L(g(xk),yk) + P(g),
em que L é uma função de perda arbitrária, P é uma medida de complexidade de g
e H é um espaço de funções. Para um espaço H arbitrário, a solução para esse pro-
blema é difícil, uma vez que se trata de um problema de otimização sobre um espaço
de funções. RKHSs permitem descrever uma grande família de espaços H (chama-
das de Reproducing Kernel Hilbert Spaces) de modo que a solução do problema de
otimização seja relativamente simples de ser implementada.
A fim de motivar esta família, consideraremos uma pequena modificação do pro-
blema de minimização proposto na regressão ridge (Seção 3.4) dada por:
b
β = argmin
β
n
∑
k=1
(yk − β0 − β1xk,1 − ... − βdxk,d)2
+ λ
d
∑
i=0
β2
i , (4.4)
em que β0 também é penalizado para simplificar a notação do que será exposto.
Denotando a i-ésima variável de x por φi(x) (considerando a convenção de que
φ0(x) ≡ x0 ≡ 1), esse problema pode ser reformulado como
b
r(x) = argmin
g∈H
n
∑
k=1
(yk − g(xk))2
+ λ||g||2
H, (4.5)
em que
H :=
(
g ∈ L2
(X ) : existem (ci)d
i=0 com
d
∑
i=0
c2
i  ∞ tais que g(x) =
d
∑
i=0
ciφi(x)
)
(4.6)
e
||g||2
H :=
d
∑
i=0
c2
i .
Enquanto que a Equação 4.4 consistem em um problema de otimização sobre
vetores de Rd+1, a Equação 4.5 consistem em um problema de otimização sobre fun-
ções. Note que enquanto o termo ∑n
k=1 (yk − g(xk))2
mede a bondade de ajuste de g,
63
4.6. Métodos baseados em RKHSs
o termo ||g||2
H mede a suavidade de g: se ||g||2
H é baixo, temos g suave, caso contrário
g oscila muito. Em outras palavras, ||g||2
H alto implica que uma mudança pequena
em x acarreta em mudança grande em g(x).
Métodos de regressão com base em penalização em RKHS são uma generalização
da função objetivo da Equação 4.5. Primeiramente, eles permite que a bondade do
ajuste possa ser medida com outras funções além do erro quadrático. Em segundo
lugar, ao invés de usarem apenas este espaço específico H (funções lineares), méto-
dos baseados em RKHS consideram espaços mais gerais H em que a Equação 4.5
ainda pode ser resolvida facilmente. Isso permite criar uma classe mais ampla de
estimadores com a possibilidade de bom desempenho em uma grande variedade de
situações. Esses espaços são justamente os Reproducing Kernel Hilbert Spaces.
Mais especificamente, buscaremos resolver o problema
argmin
g∈H
n
∑
k=1
L(g(xk),yk) + λ||g||2
H,
em que H é um RKHS e L é uma função adequada para o problema em questão.
Veremos que a norma ||g||H reflete a suavidade das funções em H e que cada espaço
contém uma noção de suavidade diferente. Assim, dado um novo problema, um
usuário pode desenhar sua função de perda L e escolher um espaço que julgar ade-
quado para criar a sua função de predição g. Veremos que smoothing splines, support
vector regression e kernel ridge regression são casos particulares dessa abordagem com
escolhas particulares de L e/ou H.
4.6.1 A matemática do RKHS
Seja X o espaço das covariáveis (features), que pode ser mais geral que Rd que
consideramos até aqui. Nesta seção veremos que um RKHS H é essencialmente um
subespaço de L2(X ) que contém funções suaves. Em particular, a norma ||g||2
H é
uma medida de suavidade da função g. Uma quantidade fundamental na definição
de um RKHS é um Kernel de Mercer:5
Definição 1. Seja K(xa,xb) uma função cujo domínio é X × X 6. Dizemos que K é um
Kernel de Mercer se ele sastisfaz às seguintes condições:
5Um Kernel de Mercer não é um kernel suavizador como aquele usado no estimador de Nadaraya-
Watson.
6Para métodos de penalização em RKHS, o espaço amostral X pode ser um espaço qualquer, isto é,
não precisa ser necessariamente Rd.
64
Capítulo 4. Métodos Não Paramétricos
• Simétrico: K(xa,xb) = K(xb,xa) para todo xa,xb ∈ X
• Positivo Semi-Definido: a matriz

K xi,xj
n
i,j=1
é positiva semi-definida para todo
n ∈ N e para todo x1,...,xn ∈ X .
Exemplo 4.1. Alguns kernels de Mercer comuns são:
• kernel polinomial: K(xi,xl) = (1 + hxi,xli)d
• kernel gaussiano: K(xi,xl) = exp
n
−d2(xi,xl)
2h2
o
Veja mais exemplos em Scholkopf e Smola (2002).
No contexto de regressão, K(xa,xb) representa uma maneira de se medir a simi-
laridade entre dois vetores de covariáveis xa e xb.
A seguinte decomposição de um kernel é essencial para a construção de RKHSs:
Teorema 4. [Teorema de Mercer] Todo Kernel de Mercer K pode ser decomposto como
K(xa,xb) = ∑
i≥0
γiφi(xa)φi(xb),
em que ∑i≥0 γ2
i  ∞ e φ0,φ1,... é um conjunto de funções.
Um exemplo trivial de aplicação do Teorema de Mercer é dado no início da Seção
4.6: o kernel implícito na regressão ridge: K(x,y) = hxa,xbi = ∑d
i=0 xa,ixb,i, o produto
interno das covariáveis. Nesse caso, γi = 1 e φi(x) = xi, i = 1,...,d.
Dado um kernel K, seu RKHS associado é definido da seguinte maneira:
Definição 2. Seja K um kernel, e sejam φi e γi, i ≥ 0, como no Teorema 4. Considere o
espaço de funções
HK =
(
g ∈ L2
(X ) : existem (ci)i≥0 com ∑
i≥1
c2
i
γi
 ∞ tais que g(x) = ∑
i≥1
ciφi(x)
)
Dizemos que HK é o Reproducing Kernel Hilbert Space (RKHS) associado ao kernel K,
em que a norma de uma função g(x) = ∑i≥0 ciφi(x) é definida por ||g||2
HK
:= ∑i≥0 c2
i /γi.
65
4.6. Métodos baseados em RKHSs
A norma ||g||HK
captura a suavidade de uma função g. Isso ocorre pois (i) a con-
dição ∑i≥0 γ2
i  ∞ do Teorema de Mercer implica que γi −→ 0 e (ii) tipicamente as
funções φi’s ficam menos suaves à medida que i −→ ∞. Assim, ||g||2
HK
:= ∑i≥0 c2
i /γi
é pequeno quando ci é extremamente pequeno para i grande. De fato, para c2
i /γi ser
baixo quando i é grande, ci deve ser extremamente pequeno, pois γi ≈ 0.
Embora a decomposição do Teorema 4 em geral não seja única, cada kernel K
define um único RKHS, de modo que o espaço da Definição 2 de fato está bem defi-
nido:
Teorema 5. A um kernel K corresponde um único RKHS HK.
4.6.2 Solução para o problema de otimização
O problema de estimação de uma função de regressão via RKHSs consiste em
encontrar a solução para uma generalização da Equação 4.5. Mais especificamente,
buscamos encontrar
arg min
g∈HK
n
∑
k=1
L(g(xk),yk) + λ||g||2
HK
, (4.7)
em que HK é um RKHS arbitrário e L(g(xk),yk) é uma função de perda arbitrária,
ambos definidos pelo usuário do método. O termo λ é um tuning parameter que
determina o balanço entre viés e variância, como no lasso. Note que λ grande leva a
funções mais suaves (pois ||g||2
HK
é menor), enquanto λ pequeno leva a funções que
se ajustam melhor ao conjunto de treinamento.
O seguinte teorema, frequentemente atribuído a Kimeldorf e Wahba (1971), é de
fundamental importância para resolução do problema de minimização da Equação
4.7:
Teorema 6. [Teorema da Representação] Seja K um kernel de Mercer correspondente ao
RKHS HK. Considere um conjunto de treinamento (x1,y1),...,(xn,yn) e uma função de
perda arbitrária L. Então a solução de
arg min
g∈HK
n
∑
k=1
L(g(xk),yk) + λ||g||2
HK
(4.8)
existe, é única e tem a forma
g(x) =
n
∑
k=1
αkK(xk,x).
66
Capítulo 4. Métodos Não Paramétricos
Este resultado converte o problema de busca pelo mínimo na classe HK em um
problema de otimização de um número finito de coeficientes α1,...,αn. Esse novo
problema de otimização pode ser resolvido usando técnicas usuais de cálculo ou
cálculo numérico.
O Teorema de Mercer (Teorema 4) também ajuda a simplificar o problema de mi-
nimizar a função objetivo, pois mostra que a fórmula para a norma de g do Teorema
6 pode ser simplificada:
n
∑
k=1
αkK(xk,x) =
n
∑
k=1
αk ∑
i≥0
γiφi(xk)φi(x) = ∑
i≥0
γi
n
∑
k=1
αkφi(xk)
!
φi(x).
Assim, para g(x) = ∑n
k=1 αkK(xk,x), temos
||g||2
HK
= ∑
i≥0
(γi (∑n
k=1 αkφi(xk)))2
γi
= ∑
i≥0
γi ∑
1≤j,k≤n
αjαkφi(xj)φi(xk)
!
= ∑
1≤j,k≤n
αjαk ∑
i≥0
γiφi(xj)φi(xk)
!
= ∑
1≤j,k≤n
αjαkK(xj,xk). (4.9)
Essa decomposição facilita o cálculo da solução apresentada pelo Teorema 6: a solu-
ção para o problema de otimização sobre funções da Equação 4.8 é dada pela solução
do seguinte problema de otimização sobre vetores:
arg min
α1,...,αn
n
∑
k=1
L
n
∑
i=1
αiK(xi,x),(xk,yk)
!
+ λ ∑
1≤j,k≤n
αjαkK(xj,xk).
Na sequência, apresentamos alguns exemplos do cálculo desta solução em pro-
blemas particulares.
4.6.3 Exemplo 1: Kernel Ridge Regression
Quando a função de perda da Equação 4.8 é a perda quadrática, L(g(xk),yi) =
(yi − g(xi))2, o estimador obtido minimizando-se a Equação 4.7 é chamado de ker-
nel ridge regression. Isso ocorre pois, se HK é o espaço descrito na Equação 4.6 (isto
é, K(xi,xj) = hxi,xji), o problema da Equação 4.7 equivale ao problema da regres-
são ridge. Assim, para esta função de perda, o resultado é uma generalização da
regressão ridge, já que outros kernel’s podem ser usados.
67
4.6. Métodos baseados em RKHSs
Para esta função de perda, o Teorema da Representação e a Equação 4.9 mostram
que a solução de
arg min
g∈HK
n
∑
j=1
(yj − g(xj))2
+ λ||g||2
HK
é dada por b
g(x) = ∑n
k=1 b
αkK(xk,x), em que b
αk’s são obtidos via
arg min
α1,...,αn
n
∑
j=1
yj −
n
∑
k=1
αkK(xk,xj)
!2
+ λ ∑
1≤j,k≤n
αjαkK(xj,xk).
Matricialmente, este problema pode ser reescrito como
argmin
α
(y − Kα)|
(y − Kα) + λα|
Kα, (4.10)
em que α = (α1,...,αn)|, y = (y1,...,yn)| e
K =






K(x1,x1) K(x1,x2) ··· K(x1,xn)
K(x2,x1) K(x2,x2) ··· K(x2,xn)
.
.
.
.
.
.
...
.
.
.
K(xn,x1) K(xn,x2) ··· K(xn,xn)






(4.11)
(a matriz K é chamada de matriz de Gram). A solução para a Equação 4.10 é dada
por
b
α = (K + λI)−1
y, (4.12)
de modo que o estimador dado pela kernel ridge regression é
b
g(x) = b
α|
k = y|
(K + λI)−1
k, (4.13)
com k = (K(x1,x),...,K(xn,x)).
4.6.3.1 Smoothing Splines
Quando x ∈ [0,1], um caso particular da kernel ridge regression é o de smoothing
splines, em que se busca pela função g que minimiza
68
Capítulo 4. Métodos Não Paramétricos
n
∑
k=1
(yk − g(xk))2
+ λ
Z 1
0
||g00
(x)||2
dx. (4.14)
O termo
R 1
0 ||g00(x)||2dx também é uma forma de se medir o quão suave g é (veja
mais sobre isso na Seção 4.13); essa quantidade corresponde à norma de um RKHS
específico, veja Nosedal-Sanchez et al. (2012), Pearce e Wand (2006) e Wahba (1990).7
Pode-se mostrar que a solução para esse problema corresponde a uma expansão
de g(x) em uma base formada por splines naturais cúbicos com nós no conjunto de
treinamento (Wahba, 1990). Contudo, ao contrário da metodologia apresentada na
Seção 4.2, aqui os coeficientes da expansão são penalizados de modo a se obter so-
luções mais suaves. É justamente por isso que esse método é chamado de smoothing
splines.
4.6.3.2 O Truque do Kernel
O estimador do kernel ridge regression também pode ser motivado sem a evoca-
ção direta de Reproducing Kernel Hilbert Spaces. Para tanto, começamos reescrevendo
o estimador dado pela regressão ridge. Vamos assumir que a variável resposta foi
redefinida segundo
Yi ← Yi − Ȳ,
de modo que não colocaremos um intercepto no modelo. Neste caso, a regressão
ridge busca por
b
β = argmin
β
n
∑
i=1
yi −
d
∑
j=1
βjxi,j
!2
+ λ
d
∑
j=1
β2
j ,
e tem como solução
b
β = (b
β0, b
β1,..., b
βd) = (X|
X + λI)−1
X|
Y.
Com um pouco de álgebra, pode-se mostrar que b
β pode ser escrito como X|(XX| +
7Tecnicamente, neste contexto é necessário uma versão um pouco mais geral do Teorema da Repre-
sentação, veja Nosedal-Sanchez et al. (2012) e Wahba (1990).
69
4.6. Métodos baseados em RKHSs
λI)−1Y, de modo que o estimador da regressão é dado por
g(x) = Y|
(XX|
+ λI)−1
Xx = Y|
(K + λI)−1
k
em que
k = (hx1,xi,...,hxn,xi)|
e
K =






hx1,x1i hx1,x2i ··· hx1,xni
hx2,x1i hx2,x2i ··· hx2,xni
.
.
.
.
.
.
...
.
.
.
hxn,x1i hxn,x2i ··· hxn,xni






.
Assim, para calcular g(x), é suficiente sabermos os produtos internos entre todos
os pares de observação, isto é, hxi,xli = ∑d
k=1 xi,kxl,k. O truque do kernel se utiliza
desse fato para construir estimadores não lineares. Mais especificamente, suponha
que estejamos interessados em uma transformação das covariáveis originais, da mesma
maneira que discutido na Seção 2.1. Por exemplo, suponhamos que temos duas co-
variáveis, (x1,x2), e que queremos estimar uma regressão que não é linear no espaço
original, mas sim que tenha a forma
g(x) = β0 + β1x1 + β2x2
1 + β3x2 + β4x2
2 + β5x1x2. (4.15)
Para isso, podemos usar o estimador da regressão ridge com novas covariáveis
w = (1,
√
2x1,x2
1,
√
2x2,x2
2,
√
2x1x2).
Como mostrado anteriormente, para calcular este estimador, somente é necessário
que saibamos os produtos internos das observações em relação às novas covariáveis,
isto é,
hwi,wli = 1 + 2xi,1xl,1 + x2
i,1x2
l,1 + 2xi,2xl,2 + x2
i,2x2
l,2 + 2xi,1xi,2xl,1xl,2. (4.16)
Mais precisamente, o estimador é dado por
b
r(x) = Y|
(K + λI)−1
k (4.17)
70
Capítulo 4. Métodos Não Paramétricos
em que k = (K(x1,x),...,K(xn,x)),
K =






K(x1,x1) K(x1,x2) ··· K(x1,xn)
K(x2,x1) K(x2,x2) ··· K(x2,xn)
.
.
.
.
.
.
...
.
.
.
K(xn,x1) K(xn,x2) ··· K(xn,xn)






e K(xi,xj) = hwi,wji.
Note que podemos calcular w com x, por isso utilizamos a notação K(xi,xj) para
representar o produto interno no espaço transformado. O motivo de usarmos a letra
K ficará claro na sequência.
O truque, chamado de truque do kernel, consiste em notar que, para algumas trans-
formações w(x), é possível calcular o produto interno hwi,wli facilmente, em par-
ticular não é necessário calcular as novas covariáveis em cada amostra. Isso ocorre
na transformação utilizada no exemplo: o produto interno da Equação 4.16 pode ser
desenvolvido como
K(xi,xl) = hwi,wli = (1 + xi,1xl,1 + xi,2xl,2)2
= (1 + hxi,xli)2
.
Assim, para calcular hwi,wli, precisamos apenas saber calcular hxi,xli, isto é, não
é necessário que se calcule em nenhum momento wi. Ou seja, é possível calcular um
estimador do tipo da Equação 4.15 sem nunca calcular x2
1,x1x2 etc! Para os casos em
que d é grande, isso representa uma grande economia de memória e tempo compu-
tacional. Por exemplo, se d = 106 e estamos interessados em todos os produtos dois a
dois entre as covariáveis, a abordagem ingênua necessitaria de um armazenamento
de uma matriz com (1012)/2 colunas, enquanto a Equação 4.17 necessita apenas de
uma matriz n × n além da matriz X original.
Na prática, para se usar o truque do kernel, começamos especificando direta-
mente um kernel K(xi,xj) que corresponde a um produto interno em um espaço
transformado. Qualquer kernel de Mercer pode ser utilizado, pois o Teorema de
Mercer (Teorema 4) garante que tais kernels correspondem a um produto interno no
espaço (potencialmente infinito) dado por (
√
γ1
φ1(x),
√
γ2
φ2(x),...). Uma vez que
o kernel está escolhido, podemos calcular o estimador da regressão ridge para este
kernel.
Note que esse truque permite que trabalhemos com a regressão ridge em espaços
com infinitas covariáveis, o que não seria possível com a formulação original da re-
71
4.6. Métodos baseados em RKHSs
gressão ridge. Isto ocorre justamente porque nunca é necessário calcular essas novas
covariáveis, mas apenas produtos internos neste espaço. Este é o caso, por exemplo,
do kernel gaussiano: a transformação correspondente a ele é de fato infinita.
Veja que o estimador da Equação 4.17 – ainda que seja motivado por conside-
rações bastante diferentes – é o mesmo que o estimador discutido anteriormente
(Equação 4.13).
Observação 4.2. Note que o kernel linear K(xi,xj) = hxi,xji corresponde à regressão
ridge nas covariáveis originais. Nesse caso, usar a Equação 4.17 ao invés de 3.4 para
resolver o problema não é uma vantagem: se n  d, ela leva a um tempo computacio-
nal maior para implementação, uma vez que é necessário inverter uma matriz n × n
ao invés de uma matriz d × d como na formulação original. A grande vantagem
dessa abordagem é permitir transformações não lineares possivelmente infinitas.
Finalmente, note que o truque do kernel pode ser utilizado em qualquer método
que dependa das covariáveis originais através do cálculo produtos internos. Ou
seja, sempre que um método de estimação da regressão puder ser calculado sem o
conhecimento de x1,...,xn, mas apenas com o conhecimento dos produtos internos
entre esses pares, o truque do kernel pode ser utilizado.
4.6.3.3 Implementação eficiente da kernel ridge regression
Para implementar a kernel ridge regression é necessário calcular
(K + λI)−1
na Equação 4.12. Uma implementação ingênua deste método é computacionalmente
lenta, pois é necessário calcular a inversa de K + λI para cada λ de interesse. Uma
maneira de torná-la mais rápida é usar a decomposição SVD da matriz K:
K = UDU|
,
em que D é diagonal e UU| = I. Note que essa decomposição não depende de λ.
Além disso,
(K + λI)−1
= (UDU|
+ λI)−1
= (U(D + λI)U|
)−1
= (U−1
)|
(D + λI)−1
U−1
.
72
Capítulo 4. Métodos Não Paramétricos
Logo, para calcular (K + λI)−1, uma vez que a decomposição foi feita, é neces-
sário apenas inverter uma matriz diagonal, o que é extramamente rápido. Assim,
(K + λI)−1, utilizando-se essa decomposição, pode ser calculado para diversos λ’s
eficientemente.
4.6.4 Exemplo 2: Support Vector Regression Machine
Para criar estimadores da função de regressão, Support Vector Regression Ma-
chines (Drucker et al., 1997) utilizam uma função de perda diferente da quadrática.
Mais especificamente, seja e  0 um número fixo e K um kernel de Mercer. A fun-
ção de predição g dada pela support vector regression (SVR) é aquela função que
minimiza
arg min
g∈HK
n
∑
k=1
L(g(xk),yk) + λ||g||2
HK
, (4.18)
em que L(g(xk),yk) = (|yk − g(xk)| − e)+. Segundo essa função de perda, a distância
entre a predição g(xk) e a observação yk ser menor que e é suficiente para que não
haja nenhum custo no erro. Por outro lado, se a distância é maior que e, a perda é
dada por |yk − g(xk)| − e. Por esse motivo, essa perda é chamada de e-insensível.
Pode-se utilizar o Teorema da Representação (Teorema 6) para simplificar o pro-
blema dado pela Equação 4.18 de forma a torná-lo um problema finito-dimensional.
Contudo, ao contrário do que ocorre com a kernel ridge regression (Seção 4.6.3), a
solução para tal problema não é analítica, e ,portanto, requer o uso de métodos nu-
méricos de otimização.
Para ajustar a support vector regression machines no R, pode-se utilizar o pacote
e1071.
ajuste - svm(x = x_treinamento,
y = t_treinamento,
type = eps-regression, kernel =radial,
gamma = gamma)
predito - predict(ajuste, newdata = novos_dados)
O valor de e pode ser definido pelo usuário do método e é, em geral, escolhido
via validação cruzada.
73
4.7. Modelos Aditivos
4.7 Modelos Aditivos
Um problema de diversos dos métodos não paramétricos é sua dificuldade de in-
terpretabilidade quando comparado com métodos paramétricos. Modelos aditivos
(additive models, Hastie e Tibshirani 1986) são uma forma de encontrar um balanço en-
tre interpretabilidade e flexibilidade. Eles consistem em uma generalização de uma
regressão linear de modo a permitir uma relação não linear entre cada covariável xj
e a resposta y. A ideia básica é trocar o termo βjxj na equação da regressão linear
(Eq. 2.1) por gj(xj), em que gj(xj) são funções univariadas suaves que são estimadas
com base nos dados. Assim, um modelo aditivo pode ser escrito como
g(x) = α +
d
∑
j=1
gj(xj).
Note que este modelo não é identificável, já que podemos adicionar qualquer cons-
tante α e retirar a mesma constante de qualquer gj, obtendo assim a mesma solução.
Uma forma de evitar isso é restringir que nossos estimadores sejam tais que b
α = Y, e
forçar ∑n
i=1 b
gj(Xi,j) = 0. Este modelo é chamado de aditivo pois supõe-se que a fun-
ção de regressão pode ser decomposta em termos de uma soma de funções. Assim,
esse método impõe uma estrutura mais restritiva do que a observada, por exem-
plo, no estimador de Nadaraya-Watson. Sua grande vantagem é que ele leva a uma
regressão estimada que é mais fácil de ser interpretada.
Modelos aditivos, em geral, são ajustados utilizando-se o algoritmo backfitting:
1. Inicialize b
α = Y, e crie estimativas iniciais b
g1,..., b
gd.
2. Faça, até obter convergência:
Para j = 1,...,d
(a) Calcule e
Yi = Yi − b
α − ∑k,j b
gk(xi,k)
(b) Estime a regressão de (e
Yi)i em (xj,i)i, b
gj. Aqui pode-se utilizar qualquer
método de regressão univariada; paramétrico ou não paramétrico.
(c) Defina b
gj(x) = b
gj(x) − 1
n ∑n
i=1 b
gj(xi,j)
A seguir mostramos um exemplo das vantagens deste método.
74
Capítulo 4. Métodos Não Paramétricos
Exemplo 4.2. Neste exemplo ajustamos um modelo aditivo para dados do Programa
das Nações Unidas para o Desenvolvimento sobre o IDH de municípios do Brasil em
1991, 2000 e 2010.8 Cada amostra aqui representa dados sobre um município em um
dado ano. A variável resposta utilizada é o IDH de cada município, enquanto as
variáveis explicativas são:
• O percentual da população de 11 a 13 anos de idade frequentando os anos
finais do fundamental ou que já concluiu o fundamental no município,
• A renda per capita média do município,
• O ano em que os dados foram coletados.
Ainda que a última variável mencionada seja categorizada, é possível utilizar
método aditivos para esse caso. Para as variáveis contínuas, optou-se por utilizar
smoothing splines com 4 graus de liberdade.
A Figura 4.5 ilustra as três funções estimadas rj(xj), juntamente com erros pa-
drão sobre elas. Com ela, é possível identificar não linearidades nas relações entre
as variáveis explicativas e a variável resposta e ter uma visão global de como cada
covariável está associada à resposta.
Para implementar modelos aditivos, pode-se usar o pacote gam.
library(gam)
ajuste - gam(resposta ~ s(explicativa_1, 4) +
s(explicativa_2, 4),
data = dados)
A função s() é parte do pacote gam e é aplicada para indicar que a utilização
de smoothing splines com 4 graus de liberdade. Predições podem ser feitas com a
função predict.
8http://www.atlasbrasil.org.br/.
75
4.7. Modelos Aditivos
Figura 4.5: Ajuste dado pelo modelo aditivo para os dados de IDH municipais no
Brasil
76
Capítulo 4. Métodos Não Paramétricos
4.8 Árvores de Regressão
Árvores de regressão consistem em uma metodologia não paramétrica que leva
a resultados extremamente interpretáveis. Uma árvore é construída por particiona-
mentos recursivos no espaço das covariáveis. Cada particionamento recebe o nome
de nó e cada resultado final recebe o nome de folha; veja a Figura 4.6.
A utilização da árvore para prever uma nova observação é feita do seguinte
modo: começando pelo topo, verificamos se a condição descrita no topo (primeiro
nó) é satisfeita. Caso seja, seguimos a esquerda. Caso contrário, seguimos a direita.
Assim prosseguimos até atingir uma folha. No caso ilustrativo da Figura 4.6, se a
condição 1 for satisfeita, a predição é dada por F1. Caso não seja satisfeita, segui-
mos a direita e assim, encontramos outra condição. Caso a mesma seja satisfeita, a
observação é prevista como F2 e, caso contrário, é prevista como F3.
Figura 4.6: Exemplo de estrutura de uma árvore de regressão.
A Figura 4.7 ilustra um exemplo concreto de uma árvore de regressão, construída
com o objetivo de prever o salário de um indivíduo dadas covariáveis como idade e
anos de estudo. Note como é fácil usar este objeto para entender a relação entre as
77
4.8. Árvores de Regressão
variáveis explicativas e a variável resposta, ao contrário do que ocorre com a maior
parte dos métodos não paramétricos.
Idade  18 anos
R$500,00 Anos de estudo  12
R$1.500,00 R$3.000,00
Figura 4.7: Exemplo de árvore da regressão do salário de um indivíduo dadas as
covariáveis idade e anos de estudo.
Formalmente, uma árvore cria uma partição do espaço das covariáveis em re-
giões distintas e disjuntas: R1,...,Rj. A predição para a resposta Y de uma observa-
ção com covariáveis x que estão em Rk é dada por
g(x) =
1
|{i : xi ∈ Rk}| ∑
i:xi∈Rk
yi. (4.19)
Isto é, para prever o valor da resposta de x, observamos a região a qual a obser-
vação x pertence e, então, calculamos a média dos valores da variável resposta das
amostras do conjunto de treinamento pertencentes àquela mesma região.
A criação da estrutura de uma árvore de regressão é feita através de duas grandes
etapas: (i) a criação de uma árvore completa e complexa e (ii) a poda dessa árvore,
com a finalidade de evitar o super ajuste.
No passo (i), busca-se criar uma árvore que leve a partições puras, isto é, parti-
ções nas quais os valores de Y nas observações do conjunto de treinamento em cada
uma das folhas sejam homogêneos. Para tanto, avalia-se o quão razoável uma dada
árvore T é através de seu erro quadrático médio,
P(T) = ∑
R
∑
i:xi∈R
(yi − b
yR)2
n
,
em que b
yR é o valor predito para a resposta de uma observação pertencente à região
R. Encontrar T que minimize P(T) é computacionalmente inviável. Assim, utiliza-
se uma heurística para encontrar uma árvore com erro quadrático médio baixo que
78
Capítulo 4. Métodos Não Paramétricos
consiste na criação de divisões binárias recursivas, como mostrado na Figura 4.8. Ini-
cialmente, o algoritmo particiona o espaço de covariáveis em duas regiões distintas
(Figura 4.8 (a)). Para escolher essa partição, busca-se, dentre todas as covariáveis xi
e cortes t1, aquela combinação que leva a uma partição (R1,R2) com predições de
menor erro quadrático:
n
∑
i:xi∈R1
(yi − b
yR1
)2
+
n
∑
i:xi∈R2
(yi − b
yR2
)2
, (4.20)
em que b
yRk
é a predição fornecida para a região Rk (veja Eq. 4.19). Assim, define-se
R1 = {x : xi  t1} e R2 = {x : xi ≥ t1},
em que xi é a variavel escolhida e t1 é o corte definido.
Uma vez estabelecidas tais regiões, o nó inicial da árvore é então fixado. No
próximo passo busca-se particionar R1 ou R2 em regiões menores (Figura 4.8 (b)).
Para escolher a nova divisão, a mesma estratégia é utilizada: busca-se, dentre todas
as covariáveis xi e cortes t2, aquela combinação que leva a uma partição com menor
erro quadrático. Note que agora também é necessário escolher qual região deve ser
particionada: R1 ou R2. Assuma que R1 foi a região escolhida, juntamente com a
covariável xj e o corte t2. Chamemos a partição de R1 de {R1,1,R1,2}, como mostra a
Figura 4.8 (b). Assim,
R1,1 = {x : xi  t1,xj  t2}, R1,2 = {x : xi  t1,xj ≥ t2} e R2 = {x : xi ≥ t1}.
O procedimento continua recursivamente (veja Figuras 4.8 (c) e (d)), até que che-
guemos a uma árvore com poucas observações em cada uma das folhas (por exem-
plo, o processo é interrompido quando todas as folhas têm menos de cinco observa-
ções).
A árvore criada utilizando-se esse processo produz bons resultados para o con-
junto de treinamento, mas é muito provável que ocorra o super-ajuste. Isso gera
uma performance preditiva ruim em novas observações. Assim, prossegue-se para
o passo (ii), que é chamado de poda. O objetivo dessa etapa é tornar a árvore de re-
gressão menor e menos complexa, de modo a diminuir a variância desse estimador.
Nessa etapa do processo cada nó é retirado, um por vez, e observa-se como o erro
de predição varia no conjunto de validação. Com base nisso, decide-se quais nós
79
4.8. Árvores de Regressão
permanecerão na árvore.
Condição (i)
R1 R2
(a)
Condição (i)
Condição (ii)
R1,1 R1,2
R2
(b)
Condição (i)
Condição (ii)
R1,1 R1,2
Condição (iii)
R2,1 R2,2
(c)
Condição (i)
Condição (ii)
Condição (iv)
R1,1,1 R1,1,2
R1,2
Condição (iii)
R2,1 R2,2
(d)
Figura 4.8: Processo de crescimento de uma árvore de regressão.
Para ajustar uma árvore no R, pode-se utilizar o pacote rpart. O pacote rpart.plot
é utilizado para produzir visualizações das árvores de regressão definidas.
80
Capítulo 4. Métodos Não Paramétricos
library(rpart); library(rpart.plot); data(mtcars)
fit - rpart(mpg ~ ., method = anova, data = mtcars)
melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]),
CP]
pfit - rpart::prune(fit, cp = melhor_cp)
rpart.plot(pfit, type = 4, extra = 1)
A Figura 4.9 ilustra a árvore gerada pelo código acima no R. O tamanho de cada
ramo na árvore gerada pode ser definido proporcionalmente à diminuição do erro
quadrático médio que ocorreu quando a respectiva partição foi criada. Assim, ra-
mos grandes indicam uma importância maior da covariável na predição da variável
resposta.
Figura 4.9: Árvore de regressão já podada.
Além de serem facilmente interpretáveis, árvores têm a vantagem de lidar tri-
vialmente com covariáveis discretas. Por exemplo, se X1 representa a cor de uma
81
4.9. Bagging e Florestas Aleatórias
flor, pode-se utilizar critérios de divisão como X1 ∈ {verde,vermelho} nos nós da
árvore gerada. É importante ressaltar que isso não acontece quando se cria variáveis
dummies para variáveis qualitativas. Além disso, a maneira como árvores são cons-
truídas faz com que covariáveis irrelevantes sejam descartadas. Assim, a seleção de
variáveis é feita automaticamente. Finalmente, note que a estrutra de uma árvore
naturalmente lida com interações entre variáveis. Assim, ao contrário de modelos
lineares, não é necessário incluir termos de interação adicionais.
Na próxima seção serão apresentados métodos para combinar diversas árvores
para melhorar o desempenho preditivo desse modelo.
4.9 Bagging e Florestas Aleatórias
A forest of these trees is a spectacle
too much for one man to see.
David Douglas
Uma característica interessante das árvores de regressão é que são extremamente
interpretáveis. No entanto, costumam apresentar baixo poder preditivo quando
comparadas aos demais estimadores. Bagging e florestas aleatórias (Breiman, 2001b)
são métodos que contornam essa limitação combinando diversas árvores para fazer
uma predição para um mesmo problema.
Para motivar esta abordagem, imagine que, em um contexto de regressão, temos
duas funções de predição para Y, g1(x) e g2(x). Os riscos dessas (condicionais em x,
mas não na amostra de treinamento) são dados, respectivamente, por
E
h
(Y − g1(x))2
|x
i
e E
h
(Y − g2(x))2
|x
i
.
Considere agora o estimador combinado g(x) = (g1(x) + g2(x))/2. Pelo resul-
tado da Seção 1.5.2, temos que
E
h
(Y − g(x))2
|x
i
=
= V[Y|x] +
1
4
(V[g1(x) + g2(x)|x]) +

E[Y|x] −
E[g1(x)|x] + E[g2(x)|x]
2
2
.
Assim, se g1(x) e g2(x) são não correlacionados (Cor(g1(x),g2(x)|x) = 0), não
82
Capítulo 4. Métodos Não Paramétricos
viesados (E[g1(x)|x] = E[g2(x)|x] = r(x)) e têm mesma variância (V[g1(x)|x] =
V[g2(x)|x]),
E
h
(Y − g(x))2
|x
i
= V[Y|x] +
1
2
V[gi(x)|x] ≤ E
h
(Y − gi(x))2
|x
i
(4.21)
com i = 1,2. Assim, é melhor se utilizar o estimador combinado g(x) do que usar
g1(x) ou g2(x) separadamente. Embora se considere apenas dois estimadores da fun-
ção de regressão nesse exemplo, a conclusão permanece válida quando se combina
um número B qualquer de estimadores.
Os métodos de bagging e florestas aleatórias se valem dessa ideia para melhorar
as predições dadas por árvores. Ambas as abordagens consistem em criar B árvores
distintas e combinar seus resultados para melhorar o poder preditivo em relação a
uma árvore individual. Para criar as B árvores distintas, o bagging utiliza B amostras
bootstrap da amostra original9. Para cada uma dessas amostras, cria-se uma árvore
utilizando as técnicas descritas na Seção 4.8. Note, contudo, que assumimos na de-
rivação da Equação 4.21 que os estimadores são não viesados. Assim, para criar ár-
vores próximas de não-viesadas, não podamos as árvores criadas, isto é, utilizamos
apenas o passo (i) descrito naquela seção.
Seja gb(x) a função de predição obtida segundo a b-ésima árvore. A função de
predição dada pelo bagging é dada por
g(x) =
1
B
B
∑
b=1
gb(x).
Apesar do método bagging retornar preditores que não são tão fáceis de se in-
terpretar quanto árvores, ele permite a criação de uma medida de importância para
cada covariável. Essa medida de importância é baseada na redução da soma de qua-
drados dos resíduos (RSS - residual sum of squares) de cada divisão. Para ilustrar o
cálculo dessa quantidade, considere a situação da Figura 4.10, na qual dividimos o
nó pai em dois grupos: esq (esquerda) e dir (direita).
A redução no RSS pela variável utilizada é dada por
9Uma amostra bootstrap é uma amostra aleatória com reposição de mesmo tamanho da amostra
original.
83
4.9. Bagging e Florestas Aleatórias
RSSpai − RSSesq − RSSdir =
∑
i∈pai

yi − ypai
2
− ∑
i∈esq

yi − yesq
2
− ∑
i∈dir
(yi − ydir)2
.
pai
esq dir
Figura 4.10: Divisão de uma árvore usada para a ilustração do cálculo do RSS.
Para calcular a medida de importância de uma variável, primeiramente calcula-
se o total da redução da soma de quadrados dos resíduos (RSS - residual sum of squa-
res) para todas as divisões que foram feitas com base nessa variável. Repete-se esse
processo para todas as árvores e calcula-se a média dessa redução. Essa redução
média é então utilizada como medida de importância para cada variável.
A Figura 4.11 ilustra a importância de cada covariável segundo dois critérios para
o conjunto CO2 do R (veja exemplo na seção 4.9.1). Essa figura foi obtida com auxílio
da função varImpPlot do pacote randomForest do R.
Figura 4.11: Importância da cada covariável do conjunto de dados CO2 na predição
da variável uptake segundo o bagging.
84
Capítulo 4. Métodos Não Paramétricos
4.9.1 Florestas Aleatórias
And into the forest I go, to lose my
mind and find my soul.
John Muir
Na Equação 4.21, além da suposição de que os estimadores são não viesados,
assumimos que são não correlacionados. Em geral, mesmo utilizando amostras bo-
otstrap para construir cada uma das árvores, as árvores construídas tendem a dar
predições parecidas. Assim, as funções gb(x) resultantes, em geral, apresentam alta
correlação. Florestas tentam diminuir esta correlação modificando o mecanismo de
criação das árvores para que essas se tornem diferentes umas das outras. Mais es-
pecificamente, ao invés de escolher qual das d covariáveis será utilizada em cada
um dos nós da árvore, em cada passo só é permitido que seja escolhida uma den-
tre as m  d covariáveis. Estas m covariáveis são escolhidas aleatoriamente dentre
as covariáveis originais e, a cada nó criado, um novo subconjunto de covariáveis é
sorteado.
O valor de m pode ser escolhido via validação cruzada. Resultados empíricos
sugerem, de forma geral, que m ≈ d/3 leva a uma boa performance. Note que,
quando m = d, o método de florestas aleatórias se reduz ao bagging.
Esse método poder ser ajustado com o pacote randomForest da seguinte forma:
library(randomForest)
data(CO2)
ajuste - randomForest(uptake ~ ., mtry = round(ncol(CO2)/3),
importance = TRUE, data = CO2)
varImpPlot(ajuste) # gráfico de importância
Esse método também pode ser utilizado com o pacote ranger, que é um pacote
que apresenta uma boa performance computacional quando há um grande número
de observações.
A Figura 4.12 ilustra o comportamento do risco preditivo em função de B, o nú-
mero de árvores utilizadas, no conjunto de dados do CO2. A curva é bastante estável.
85
4.9. Bagging e Florestas Aleatórias
Em particular, não ocorre superajuste quando B cresce. Assim, de forma geral, fazer
uma validação cruzada para escolher B não traz grandes ganhos (em contraste com o
que ocorre com tuning parameters de outros métodos). Essa robustez do desempenho
de florestas aleatórias à escolha de B é uma grande vantagem deste método.
Figura 4.12: Comportamento do risco preditivo em função de B, o número de árvores
utilizadas, no exemplo do CO2.
Florestas possuem um poder preditivo em geral muito maior que o de árvores.
Para ilustrar essa diferença, aplicaremos ambos os métodos para o conjunto de dados
simulados da Figura 4.13.
Figura 4.13: Dados simulados da regressão em vermelho.
86
Capítulo 4. Métodos Não Paramétricos
A árvore e a floresta ajustadas para esses dados encontram-se na Figura 4.14.
Note como o ajuste obtido com floresta aleatória é mais suave que o ajuste obtido
com a árvore de regressão. Em particular, ele se aproxima melhor da regressão real.
Também é interessante notar que as árvores utilizadas para construir a floresta (em
azul) têm características muito distintas daquela usada individualmente. Isso ocorre
pois essa última é podada.
Figura 4.14: Exemplo de ajustes de árvore de regressão e floresta aleatória.
A Figura 4.15 ilustra árvores e florestas ajustadas a diferentes conjuntos de dados
87
4.9. Bagging e Florestas Aleatórias
vindos da mesma população que aqueles da Figura 4.13. Fica claro que árvores de
regressão possuem uma variabilidade muito maior que florestas aleatórias. Isso é
uma das razões que leva esse método a apresentadar um desempenho inferior em
relação à floresta aleatória.
Figura 4.15: Ajustes de árvore de regressão e florestas aleatórias para diferentes con-
juntos de dados vindo da mesma função de regressão.
88
Capítulo 4. Métodos Não Paramétricos
4.10 Boosting
Assim como florestas aleatórias e o bagging, o boosting também consiste na agre-
gação de diferentes estimadores da função de regressão. Contudo, esta combinação
é feita de outra forma. Existem diversas variações e implementações de boosting.
Abordaremos aqui a forma mais usual.
No boosting, o estimador g(x) é construído incrementalmente. Inicialmente, atri-
buímos o valor de g(x) ≡ 0. Este estimador possui alto viés, mas baixa variância (a
saber, zero). A cada passo, atualizaremos o valor de g de modo a diminuir o viés
e aumentar a variância da nova função. Isto é feito adicionando-se a g uma função
que prevê os resíduos ri = Yi − g(xi). Uma forma de se fazer isso é com a utiliza-
ção de uma árvore de regressão. É importante que essa árvore tenha profundidade
pequena de modo a evitar o super-ajuste. Além disso, ao invés de simplesmente
adicionar essa função por completo, adicionamos ela multiplicada por λ (chamado
de learning rate), um fator entre 0 e 1 que tem por finalidade evitar o super-ajuste.
Formalmente, essa versão de boosting consiste no seguinte algoritmo:
1. Definimos g(x) ≡ 0 e ri = yi ∀i = 1,...,n.
2. Para b = 1,...,B:
(a) Ajustamos uma árvore com p folhas para (x1,r1),...,(xn,rn). Seja gb(x)
sua respectiva função de predição.
(b) Atualizamos g e os resíduos: g(x) ← g(x) + λgb(x) e ri ← Yi − g(x).
3. Retornamos o modelo final g(x)
Assim, os tuning parameters do boosting são B, p e λ. Tipicamente λ é pequeno
(por exemplo, 0,01), B ≈ 1000 e p é da ordem de 2 ou 4.
Para ilustrar o impacto dos hiperparâmetros desse algoritmo, considere nova-
mente os dados apresentados na Figura 4.13. A Figura 4.16 mostra as regressões es-
timadas com um boosting composto por 100 árvores com apenas uma divisão cada
(o que é chamado de stump). Cada painel ilustra o ajuste para um taxa de aprendiza-
gem λ em {0.001,0.01,0.1,0.2,0.5,1}. Note que λ grande leva a superajuste, enquanto
que λ pequeno leva a subajuste.
89
4.10. Boosting
Figura 4.16: Aplicação de diversos valores de λ para boosting.
O boosting não necessariamente é feito com árvores, mas em geral são utilizados
estimadores fracos (como, por exemplo, uma regressão com poucos parâmetros).
No R, o boosting pode ser implementando com o pacote bst. A Figura 4.17 ilustra
como o risco estimado varia conforme o valor de B (número de iterações) utilizado.
Em geral, B é escolhido via early stopping, isto é, pára-se de adicionar iterações que o
risco estimado do método em um conjunto de validação começa a aumentar.
library(bst)
ajuste - cv.bst(x = x_treinamento,
y = y_treinamento,
learner = tree,
control.tree = list(maxdepth = 3),
ctrl = bst_control(mstop = 10000, nu = 0.02),
K = 2, se = FALSE)
90
Capítulo 4. Métodos Não Paramétricos
predito - predict(ajuste, x_teste)
Figura 4.17: Diminuição do risco estimado por validação cruzada para a função de
regressão segundo o número de iterações do algoritmo boosting.
Existem diferentes implementações e variações de boosting. Uma particular que
vem ganhando bastante popularidade por seu ótimo desempenho é o XGBoost (Chen
e Guestrin, 2016), que no R é implementando pelo pacote xgboost; veja o Exemplo
4.4 para mais detalhes.
4.11 Redes Neurais Artificiais
A man should look for what is,
and not for what he thinks should
be.
Albert Einstein
Redes neurais artificiais são um conceito bastante antigo em inteligência artifi-
cial (McCulloch e Pitts, 1943; Rosenblatt, 1958). Matematicamente, no contexto de
regressão, trata-se de um estimador não linear de r(x) que pode ser representado
graficamente por uma estrutura como a da Figura 4.18.
91
4.11. Redes Neurais Artificiais
x1
x2
x3
x1
1
x1
2
x1
3
x1
4
x1
5
x2
1
gβ(x)
Camada
Oculta
Camada
de
entrada
Camada
de saída
Figura 4.18: Exemplo de rede neural com uma camada oculta.
Os nós do lado esquerdo da figura representam as entradas da rede, isto é, cada
uma das covariáveis do banco de dados (neste caso, há três delas). Os nós da se-
gunda camada são os chamados de nós da camada oculta da rede. Cada flecha repre-
senta um peso (parâmetro) β. Cada nó nessa camada representa uma transformação
dos nós das variáveis da camada anterior.
Para o caso dessa rede, se x = (x1,x2,x3) é o vetor de entrada, então um dado
neurônio j da camada oculta é calculado como
x1
j := f β0
0,j +
3
∑
i=1
β0
i,jx0
i
!
em que x0
i = xi para i = 1,2,3,
em que f é uma função definida pelo usuário, chamada de função de ativação. O índice
superescrito nessa equação denota a camada da rede. Calculados os valores de x1
j
para todo neurônio j da camada oculta, pode-se então calcular a saída do modelo.
Para esse exemplo, essa saída é dada por
x2
1 := f β1
0,j +
5
∑
i=1
β1
i,1x1
i
!
=: gβ(x).
Esse procedimento é representado com mais detalhes na Figura 4.19.
92
Capítulo 4. Métodos Não Paramétricos
xl
2
βl
2,1 Σ f
Função de
ativação
xl+1
1
Saída
xl
1
βl
1,1
xl
3
βl
3,1
Pesos
Intercepto
βl
0,1
Entradas (camada l)
Figura 4.19: Exemplo do processamento que ocorre dentro de um neurônio situado
na camada l + 1. A saída xl+1
1 é dada por f (βl
0,j + ∑3
i=1 βl
i,1xl
i).
Algumas escolhas comuns para a função de ativação são:
• identidade: f (z) = z
• logística: f (z) = 1
1+e−z
• tangente hiperbólica: f (z) = ez−e−z
ez+e−z
• ReLu(rectified linear): f (z) = max{0,z}
• Leaky ReLu: f (z) =



0.01z se z  0
z se z ≥ 0
De forma geral, uma rede neural pode ter várias camadas ocultas e um número
diferente de neurônios em cada camada. Essas são escolhas feitas pelo usuário. A
Figura 4.20 apresenta o esquema de uma rede neural com quatro camadas ocultas
com seis neurônios cada.
93
4.11. Redes Neurais Artificiais
x1
x2
x3
Camada
Oculta 1
Camada
Oculta 2
Camada
Oculta 3
Camada
Oculta 4
y1
Camada
de
entrada
Camada
de saída
Figura 4.20: Exemplo de uma rede neural feed forward.
A propagação das covariáveis de entrada na rede neural é feita sequencialmente
nessas camadas. Considere uma rede com H camadas ocultas, cada uma com dh
neurônios (h = 1,..., H), seja βl
i,j o peso atribuído à conexão entre a entrada i na
camada l e a saída j na camada l + 1, l = 0,..., H. Aqui h = 0 denota a camada de
entrada, e H + 1 a camada de saída. O estimador de uma rede neural artificial para
a função de regressão tem a forma
g(x) = xH+1
1 = f βH
0,1 +
dH
∑
i=1
βH
i,1xH
i
!
(4.22)
em que, para todo l = 1,..., H e j = 1,...,dl+1,
xl+1
j = f βl
0,j +
dl
∑
i=1
βl
i,jxl
i
!
.
É interessante notar que, se f (z) = z e não há nenhuma camada oculta, uma rede
neural representa uma regressão linear usual.
Uma outra forma de se representar uma rede neural se dá via notação matricial.
Para l = 0,..., H, seja
Hl =




βl
0,1 βl
1,1 ... βl
dl,1
.
.
.
.
.
.
...
.
.
.
βl
0,dl+1
βl
1,dl+1
... βl
dl,dl+1



.
Nesse caso, d0 = d é o número de neurônios na camada de entrada e dH+1 é o
94
Capítulo 4. Métodos Não Paramétricos
número de neurônios na camada de saída. O estimador da Equação 4.22 pode ser
escrito como a seguinte composição de funções:
g(x) = f HH ... ˜
f H1
˜
f (H0x̃)

...

,
em que x̃ = (1,x) e ˜
f (y) = (1, f (y)).
A estrutura de redes neurais aqui apresentada pode ser bastante generalizada.
Por exemplo, cada função f aplicada em cada camada pode ser diferente. Além
disso, a saída da rede não precisa ser um único número real. Redes neurais também
permitem estruturas mais complexas como retroalimentação (saídas de neurônios
que voltam para entradas de camadas anteriores) e outros. Para uma análise mais
aprofundada, veja Goodfellow et al. (2016).
4.11.1 Estimação: Backpropagation
Para estimar os coeficientes βl
i,j na Equação 4.22, deve-se especificar uma função
objetivo a ser minimizada. No caso de regressão linear, utiliza-se, em geral, o erro
quadrático médio,
EQM(gβ) =
1
n
n
∑
k=1
(gβ(xk) − yk)2
,
em que a notação gβ é usada para enfatizar a dependência de g em seus parâmetros
β. Pode-se também introduzir uma penalização a esse objetivo.
O vetor β que minimiza o EQM(gβ) não possui solução analítica. Contudo,
pode-se utilizar métodos numéricos para aproximá-lo. Um método que tem se des-
tacado no contexto de redes neurais é o backpropagation, que nada mais é do que um
método de gradiente descendente executado em uma ordem específica: primeiro
atualizam-se os coeficientes da última camada, depois se atualizam os coeficientes
da camada anterior a essa e assim por diante (por isso o nome backpropagation). Mais
especificamente, cada passo do backpropagation consiste em fazer, para l = H,...,0,
a seguinte atualização:
βl
i,j ← βl
i,j − η
∂EQM(gβ)
∂βl
i,j
, comj = 1,...,dl+1 e i = 0,...,dl.
O truque é que
∂EQM(gβ)
∂βl
i,j
depende apenas dos valores dos coeficientes das cama-
95
4.11. Redes Neurais Artificiais
das posteriores (isto é, βl0
i,j para l0 ≥ l) e é simples de ser calculado. Por exemplo,
para uma função de ativação f (z) = z na camada de saída e j  0,
∂EQM(gβ)
∂βH
j,1
=
∂
∂βH
j,1

1
n
n
∑
k=1
(βH
0,1 +
dH
∑
i=1
βH
i,1xH
k,i − yk)2
#
=
=
2
n
n
∑
k=1
(βH
0,1 +
dH
∑
i=1
βH
i,1xH
k,i − yk)xj,1.
Para mais detalhes sobre o backpropagation veja, por exemplo, Rojas (2013).
4.11.2 Deep Learning
Na última década, redes neurais ressurgiram como uma área ativa dentro da co-
munidade de aprendizado de máquina. Um dos principais fatores que promoveram
esse ressurgimento foi o desenvovimento tecnológico computacional, que tornou o
processo em paralelo (em particular em GPUs) barato e acessível. O método do
backpropagation foi adaptado para se aproveitar dessa tecnologia através do gradi-
ente descendente estocástico. Diversas variações e melhorias, tanto no processo de
estimação de uma rede quanto na definição de sua arquitetura, vêm sendo desenvol-
vidas nos últimos anos. Para uma revisão abrangente dessa área, veja Goodfellow
et al. (2016).
O pacote keras, utilizando diversas ferramentas desenvolvidas para deep lear-
ning, implementa redes neurais no R. A seguir apresentamos um exemplo.
Exemplo 4.3 (Bike sharing). Neste exemplo consideramos o conjunto de dados bike
sharing (http://archive.ics.uci.edu/ml/datasets/bike+sharing+dataset). Nesse con-
junto são indicadas as quantidades de bicicletas que foram emprestadas em algu-
mas centrais a cada hora. A Figura 4.21 mostra como o risco estimado no conjunto
de treinamento e de validação variam conforme o número de iterações do gradiente
descendente estocástico cresce.
library(rsample)
library(keras)
dados - read_csv(../dados/hour.csv)
96
Capítulo 4. Métodos Não Paramétricos
dados - dados %%
select(-instant,
-dteday, -yr, -mnth, -casual, -registered) %%
mutate_at(vars(season, holiday, weekday, workingday),
as.character)
dados - data.frame(model.matrix(cnt ~ . -1, dados),
cnt = dados$cnt) %%
mutate_at(vars(season1:windspeed), scale)
set.seed(400)
split - initial_split(dados, prop = 0.8)
treinamento - training(split)
teste - testing(split)
x_treino - select(treinamento, -cnt) %% as.matrix()
y_treino - treinamento$cnt
x_teste - select(teste, -cnt) %% as.matrix()
y_teste - teste$cnt
# especificação do modelo (uma rede feedforward com
# duas camadas ocultas com 8 neuronios cada)
modelo - keras_model_sequential() %%
layer_dense(units = 8, activation = relu,
input_shape = ncol(x_treino)) %%
layer_dense(units = 8, activation = relu) %%
layer_dense(units = 1)
# especificação da função objetivo e como ela será minimizada
modelo %% compile(
loss = mse,
97
4.11. Redes Neurais Artificiais
optimizer = optimizer_rmsprop(),
metrics = list(mean_absolute_error)
)
historico - modelo %% fit(
x_treino,
y_treino,
epochs = 1200,
validation_split = 0.2,
verbose = FALSE
)
A seguir, apresentamos os riscos estimados nos conjuntos de treinamento e vali-
dação de acordo com o número de iterações.
plot(historico, metrics = loss) +
theme_bw() + theme(legend.position = top)
Figura 4.21: Risco estimado no conjunto de treinamento e no conjunto de validação.
98
Capítulo 4. Métodos Não Paramétricos
# valor predito no conjunto de teste
predito - modelo %%
predict(x_teste)
4.12 Exemplo
Exemplo 4.4 (Amazon Fine Food Reviews). Nesse exemplo retomamos o problema
de fazer predições de notas dadas em resenhas da Amazon com base no conteúdo
(texto) da resenha (Exemplo 3.3). Dessa vez ajustaremos alguns métodos não para-
métricos.
Como alguns dos pacotes do R não permitem tabalhar com matrizes esparsas,
converteremos o objeto dtmMatrix em uma matriz não esparsa:
dtmMatrix_non_sparse - as.matrix(dtmMatrix)
A seguir, apresentamos os código para os métodos não paramétricos considera-
dos.
# KNN
k_grid - round(seq(1, 100, length.out = 20))
error - vector(numeric, length(k_grid))
for (i in seq_along(k_grid)) {
fit - FNN::knn.reg(train = dtmMatrix_non_sparse[tr,],
y = dados$Score[tr],
k = k_grid[i])
error[i] - mean((fit$pred - dados$Score[tr])^2)
}
pred_knn - FNN::knn.reg(train = dtmMatrix_non_sparse[tr,],
99
4.12. Exemplo
y = dados$Score[tr],
test = dtmMatrix_non_sparse[-tr,],
k = k_grid[which.min(error)])$pred
# XGBoost
xgb_model - xgb.train(data = xgb.DMatrix(
dtmMatrix[tr,],
label = dados$Score[tr]),
nrounds = 50)
pred_xgboost - predict(xgb_model, dtmMatrix[-tr,])
# Tree
fit - rpart(dados$Score[tr] ~ dtmMatrix_non_sparse[tr,],
method = anova)
melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]),
CP]
pfit - rpart::prune(fit, cp = melhor_cp)
pred_arvore - predict(pfit,
as.data.frame(dtmMatrix_non_sparse[-tr,]))
Comparando os erros quadráticos médios (Tabela 4.1), notamos que o XGBoost
apresentou o melhor desempenho preditivo, comparável ao do lasso e da regressão
ridge (Tabela 3.6). Note que o XGBoost possui diversos tuning parameters que podem
ser ajustados para levar a um desempenho melhor. Em particular, recomendamos
usar early stopping no treinamento. Como esperado, a performance preditiva da ár-
vore foi inferior à dos demais métodos. O KNN também apresentou um desempe-
nho ruim. O motivo disso é que, nesse exemplo, várias covariáveis são irrelevantes
(ou seja, não estão associadas à nota dada pelo usuário) e o KNN não faz seleção de
variáveis. Assim, todas elas têm o mesmo papel no classificador, enquanto todos os
outros métodos fazem algum tipo de seleção. Voltaremos a esse assunto sob uma
perspectiva teórica no Capítulo 5.
100
Capítulo 4. Métodos Não Paramétricos
Uma vantagem das implementações do XGBoost e do Lasso no R é que elas per-
mitem trabalhar com matrizes esparsas e são computacionalmente rápidas. Isso per-
mite que apliquemos uma versão desses métodos em um conjunto de treinamento
maior (n = 400,000). Fazendo isso, o XGBoost consegue obter um erro menor que
o dos demais métodos (Tabela 4.2). Note que o ganho do XGBoost, ao se aumentar
o tamanho do conjunto de treinamento, é muito maior que o do lasso. De fato, en-
quanto para um n pequeno ambos têm um desempenho parecido, para n grande o
XGBoost é substancialmente maior. Isso ocorre porque o lasso é um método paramé-
trico. Assim, com um n não tão grande já se extrai o máximo que ele pode oferecer
(ou seja, ele já está próximo ao oráculo linear). Por outro lado, um método não para-
métrico como o XGBoost é muito mais flexível e, portanto, se beneficía mais de uma
amostra maior.
Tabela 4.1: Desempenho preditivo (erro quadrático médio e seu erro padrão) em
relação ao conjunto de validação dos modelos KNN, XGBoost e árvores.
Modelo EQM EP
KNN 1.541 0.029
XGBoost 1.117 0.021
Árvore 1.911 0.031
Tabela 4.2: Desempenho preditivo (erro quadrático médio e seu erro padrão) em
relação ao conjunto de validação dos modelos XGBoost e Lasso para um conjunto de
treinamento maior.
Modelo EQM EP
XGBoost Large 0.783 0.015
Lasso Large 0.948 0.018
101
4.13. Um Pouco de Teoria
4.13 Um Pouco de Teoria
Experience without theory is
blind, but theory without
experience is mere intellectual
play.
Immanuel Kant
Uma maneira de estudar o desempenho de um método é avaliando sua (taxa de)
convergência. Em particular, pode-se verificar sob quais circunstâncias um dado es-
timador converge. Com a finalidade de ilustrar como isso pode ser feito no contexto
não paramétrico, investigaremos dois métodos: os k-vizinhos mais próximos (Seção
4.13.1) e séries ortogonais (Seção 4.13.2).
Para estudar a taxa de convergência de um estimador não-paramétrico, é neces-
sário assumir que a função de regressão r(x) real é suave; caso contrário ela pode ser
extremamente difícil de ser estimada. Existem várias medidas de suavidade (Tsy-
bakov, 2008); utilizaremos aqui duas noções, uma para cada uma das análises que
seguem.
4.13.1 k-vizinhos Mais Próximos
Para analisar o método KNN, utilizarmos o conceito de funções Lipschitz para
capturar a suavidade da função de regressão. Mais especificamente, iremos assumir
que a regressão real r é L-Lipschitz, isto é, assumiremos que existe L tal que, para
todo x,x0 ∈ Rd,
|r(x) − r(x0
)| ≤ L||x − x0
||2.
Iniciamos com o seguinte resultado, que decorre do Lema 6.4 e do Teorema 6.2 de
Györfi et al. (2006).
Lema 1. Se X é limitado e d ≥ 3, então
E

 1
k ∑
i∈Nx
||Xi − X||2
!2

 ≤ C

k
n
2/d
.
Essencialmente, o Lema 1 indica como a distância média entre as k observações
mais próximas a X é limitada pelo tamanho amostral.
102
Capítulo 4. Métodos Não Paramétricos
Teorema 7. Seja b
rk(X) o estimador da Equação 4.2. Sob as suposições do Lema 1 e se
supx E[Y|x] := σ2  ∞ e r é L-Lipschitz, então
E[(b
rk(X) − r(X))2
] ≤ K

k
n
2/d
+
σ2
k
,
em que K não depende de k nem n. Assim, se tomamos k  n
2
2+d , obtemos
E[(b
rk(X) − r(X))2
] ≤ K0
n− 2
2+d
Demonstração. Seja x̃ = (x1,...,xn,x). Pela decomposição viés-variância (Seção 1.5.2),
temos que
E[(b
rk(x) − r(x))2
x̃] = (E[b
rk(x)|x̃] − r(x))2
+ E[(b
rk(x) − E[(b
rk(x)|x̃])2
|x̃]
= E

1
k ∑
i∈Nx
Yi|x̃
#
− r(x)
!2
+ V[b
rk(x)|x̃]
≤
1
k ∑
i∈Nx
r(xi) − r(x)
!2
+
σ2
k
≤
L
k ∑
i∈Nx
||xi − x||2
!2
+
σ2
k
,
em que a última desigualdade decorre do fato de r ser L-Lipschitz.
Assim, pela lei da esperança total e Lema 1, segue que
E[(b
rk(X) − r(X))2
] = E[E[(b
rk(X) − r(X))2
|X̃]]
≤ E

 L
k ∑
i∈NX
||Xi − X||2
!2

 +
σ2
k
≤ C0

k
n
2/d
+
σ2
k
.
Note que o Teorema 7 indica que, quando k é grande, o termo associado ao viés
do estimador dado pelo KNN (isto é, C0 (k/n)2/d
) é alto, enquanto o termo associado
à sua variância (isto é, σ2/k) é baixo. Para se ter um bom equilíbrio entre esses ter-
mos, deve-se tomar k  n
2
2+d . Discutiremos essa taxa de convergência mais a fundo
na Seção 5.1; em particular argumentaremos que o limitante superior mostrado no
Teorema 7 não pode ser melhorado, isto é, não se pode encontrar um limitante supe-
103
4.13. Um Pouco de Teoria
rior menor que o encontrado.
4.13.2 Séries Ortogonais
Nessa subseção iremos derivar taxas de convergência para o método de séries
ortogonais. Nos restringiremos ao caso em que X ∈ [0,1] e tem densidade uniforme
neste intervalo. Novamente, para estudar a convergência do estimador, iremos tam-
bém supor que a função de regressão r(x) real é suave. No entanto, utilizaremos o
conceito de derivadas para definir suavidade, uma vez que essas medem mudanças
bruscas de r(x) como função de x. Diremos que r(x) é suave se r(x) ∈ L2([0,1]) e
Z 1
0
(Dm
r(x))2
dx ≤ K1.
Quanto maior m, mais suave r é. Este conceito de suavidade está ligado a espaços de
Sobolev, veja Wasserman (2006).
Um resultado fundamental mostra que, se r(x) é suave, usar apenas os primei-
ros termos da expansão ∑j∈N βjψj(x) é suficiente para aproximar r(x) bem. Isso é
formalmente descrito no lema a seguir.
Lema 2. Se r(x) ∈ L2([0,1]) é tal que
R 1
0 (Dmr(x))2dx ≤ K1, então
Z 1
0
J
∑
j=0
βjψj(x) − r(x)
!2
dx = ∑
j≥J+1
β2
j ≤
K1
J2m
,
em que βj’s são os coeficientes de expansão de r(x) na base de Fourier (ψj)j≥0.
Note que, quanto maior m (a suavidade de r), menor o erro em se utilizar J ter-
mos para aproximar r(x). É exatamente por isso que o método de séries ortogonais
funciona bem: quando r é suave, um truncamento do tipo usado na Equação 4.1 leva
a um viés baixo.
O resultado a seguir combina o viés obtido no Lemma 2 com a variância do esti-
mador de modo a obter a taxa de convergência do método de séries ortogonais.
Teorema 8. Seja b
rJ(x) o estimador da Equação 4.1 com base na série de Fourier. Se r ∈
L2([0,1]) é tal que
R 1
0 (Dmr(x))2dx ≤ K1 e V[Y]  ∞, então o risco desse estimador satisfaz
E[(b
rJ(X) − r(X))2
] ≤ K1
1
J2m
+ K2
J
n
,
104
Capítulo 4. Métodos Não Paramétricos
em que K2 não depende de J nem n. Assim, se tomarmos J = Cn
1
2m+1 , teremos
E[(b
rJ(X) − r(X))2
] ≤ Kn− 2m
2m+1 .
Demonstração. Pela decomposição viés-variância (Seção 1.5.2) e pela lei da esperança
total, temos que
E[(b
rJ(X) − r(X))2
] = E
n
E
h
r(X) − E[b
rJ(X)|X]
2
|X
io
+ E

V[b
rJ(X)|X]
	
(4.23)
Notando que E[b
βj] = βj, temos que E[b
rJ(x)] = ∑
J
j=0 βjψj(x) e, assim, o termo de
viés pode ser escrito como
E
n
E
h
r(X) − E[b
rJ(X)|X]
2
|X
io
=
Z 1
0
∑
jJ
βjψj(x)
!2
dx ≤ K1
1
J2m
, (4.24)
em que a última desigualdade segue do Lema 2.
Para desenvolver o termo da variância, note que, para todo x ∈ R,
V

J
∑
j=0
b
βjψj(x)
#
= E


J
∑
j=0
b
βjψj(x) −
J
∑
j=0
βjψj(x)
!2

 = E


J
∑
j=0
(b
βj − βj)ψj(x)
!2


= ∑
i,jJ
E
h
(b
βi − βi)(b
βj − βj)
i
ψi(x)ψj(x)
Assim, utilizando novamente a ortogonalidade da base, o termo de variância
pode ser decomposto como
E

E

V[b
rJ(X)]|X
	
=
Z 1
0
∑
i,jJ
E
h
(b
βi − βi)(b
βj − βj)
i
ψi(x)ψj(x)dx
=
J
∑
j=0
E[(b
βj − βj)2
] =
J
∑
j=0
V[b
βj] =
J
∑
j=0
1
n
V[Yψj(X)] ≤ K2
J
n
,
(4.25)
em que K2 é uma constante que não depende de j e J e a última desigualdade segue
do fato que |ψj(X)| 
√
2 e V[Y] é finita.
105
4.14. Resumo
Assim, combinando as Equações 4.24 e 4.25 via Eq. 4.23, temos que
E[(b
rJ(X) − r(X))2
] ≤ K1
1
J2m
+ K2
J
n
.
O teorema anterior mostra que n− 2m
2m+1 é um limitante superior para a taxa de
convergência do estimador baseado em séries ortogonais quando assumimos que
r(x) possui m derivadas integráveis e x ∈ R. Pode-se mostrar que esse limitante
não pode ser melhorado (veja a Seção 5.1). Além disso, quando x ∈ Rd, essa taxa é
dada por n− 2m
2m+d .10 Essa taxa é ótima sob estas suposições, isso é, nenhum estimador
pode ter taxas melhores que essa. Mais precisamente, n− 2m
2m+d é a taxa minimax dentro
dessa classe (Tsybakov, 2008). Discutiremos isso mais a fundo na Seção 5.1.
4.14 Resumo
Neste capítulo estudamos algumas classes de métodos não paramétricos que têm
motivações muito distintas. Vimos que a vantagem de tais métodos é sua flexibili-
dade quando comparada com estimadores paramétricos: não é necessário assumir
uma forma paramétrica para r(x) para garantir a consistência de um estimador não
paramétrico b
r(x); necessita-se apenas que r(x) seja suave (o que pode ser medido de
diferentes maneiras). Essa flexibilidade, contudo, vem às custas de amostras maiores
para se obter taxas de convergências razoáveis: enquanto métodos paramétricos ti-
picamente possuem taxas de convergência n−1 quando suas suposições são válidas,
a taxa usual de métodos não paramétricos é n− α
α+d (em que α é a suavidade de r),
que é muito mais lenta. Esse problema é ainda mais notório quando o número de
covariáveis d é grande, assunto que será abordado no próximo capítulo.
10Para isso, assumimos, por exemplo, que todas as derivadas parciais de ordem m de r são L-Lipschitz
(Györfi et al., 2006).
106
Capítulo 5
Métodos Não Paramétricos em
Altas Dimensões
Como vimos no capítulo anterior, métodos não paramétricos, apesar de mais fle-
xíveis, exigem tamanhos de amostras maiores quando comparados com métodos
paramétricos. Isso ocorre pois métodos não paramétricos possuem taxas de conver-
gência lentas. Neste capítulo verificaremos como tais métodos se comportam em
altas dimensões. Veremos, em particular, que só poderemos fazer estimação não pa-
ramétrica de forma satisfatória se fizermos suposições que simplificam o problema.
Duas suposições usuais que frequentemente valem na prática são esparsidade e re-
dundância nas covariáveis.
5.1 Taxas de convergência e a maldição da dimensiona-
lidade
A maldição da dimensionalidade (Bellman, 1966) é um problema enfrentado na uti-
lização de estimadores em altas dimensões. Essencialmente, o problema é que, sem
restrições adicionais, conforme a dimensão do espaço das covariáveis cresce, mais
difícil fica estimar a função de regressão. Além disso, essa dificuldade cresce expo-
nencialmente.
Mais precisamente: considere que temos d covariáveis e um tamanho amostral
n. Argumentamos no Capítulo 4 que o risco de um estimador não-paramétrico b
r∗
107
5.1. Taxas de convergência e a maldição da dimensionalidade
frequentemente satisfaz
E
h
(b
r∗
(X) − r(X))2
i
≤
K
nα/(α+d)
para todo r ∈ S, em que K é uma constante e S é um conjunto de regressões suaves
(por exemplo, com derivadas parciais de segunda ordem L-Lipschitz; o parâmetro α
está ligado à noção de suavidade usada). Assim, vale que
sup
r∈S
E
h
(b
r∗
(X) − r(X))2
i
≤
K
nα/(α+d)
. (5.1)
Pode-se também mostrar que
inf
b
r
sup
r∈S
E
h
(b
r(X) − r(X))2
i
=
K
n4/(4+d)
,
isto é, K
nα/(α+d) é a taxa minimax para esse problema. Esse resultado, juntamente com
a Equação 5.1, implica que
1. supr∈S E

(b
r(X) − r(X))2

= K
nα/(α+d) (isto é, a desigualdade na Equação 5.1 é na
realidade uma igualdade)
2. Se um estimador b
r∗ satisfaz a Equação 5.1 ele é ótimo em um sentido minimax,
isto é, o risco mais alto que ele atinge para funções na classe S é o menor (pior)
risco que poderia ser obtido por qualquer estimador. Em outras palavras,
sup
r∈S
E
h
(b
r∗
(X) − r(X))2
i
≤ sup
r∈S
E
h
(b
r(X) − r(X))2
i
para qualquer estimador b
r.
Segue da Equação 5.1 que, para conseguir obter um risco de no máximo δ, preci-
samos de uma amostra de tamanho ao menos
n ≈

K
δ
(α+d)/α
.
Esse crescimento exponencial indica que, mesmo em dimensões moderadas, esti-
mar satisfatoriamente uma função de regressão requer uma amostra grande. Veja na
Figura 5.1 como o risco varia como função do tamanho amostral n para diferentes
dimensões d e para α = 4.
108
Capítulo 5. Métodos Não Paramétricos em Altas Dimensões
Suponha que desejamos estimar a função de regressão em um dado ponto x. In-
tuitivamente, a maldição da dimensionalidade ocorre pois, quando d é grande, a
probabilidade que exista algum elemento na amostra com covariáveis Xi é extrema-
mente baixa mesmo para tamanhos de amostra moderados. Em outras palavras, a
vizinhança de x com alta probabilidade é vazia. Logo, há pouca informação sobre r(x).
Veja mais detalhes em Wasserman (2006).
Figura 5.1: A maldição da dimensionalidade: quanto maior o número de covariáveis
d, mais difícil é estimar r. Aqui tomamos α = 4.
Assim, estimar uma função de regressão em problemas com dimensionalidade
alta é um problema notoriamente difícil. O fenômeno da maldição da dimensionali-
dade indica que, sem suposições extras, é impossível resolver esse problema satisfa-
toriamente para tamanho de amostras realistas.
Nas próximas seções exxploraremos duas dessas suposições: (i) esparsidade e (ii)
redundância entre as covariáveis.
5.1.1 Esparsidade
A suposição de esparsidade diz que a função de regressão r(x) depende apenas
de alguns xi’s. Isto é,
r(x) = r((xi)i∈S),
109
5.2. k Vizinhos Mais Próximos e Regressão Linear Local
em que S ⊂ {1,...,d}. Assim, apesar de haver muitas covariáveis, poucas delas são
relevantes para o problema. Sob essa hipótese, estimar r(x) torna-se mais fácil. Esse
é o caso, por exemplo, no exemplo da Amazon (4.4). Naquele caso, espera-se que
várias palavras não estejam associadas à nota dada ao produto. É por esse motivo
que é possível criar funções de predições razoáveis mesmo havendo uma dimensão
grande no espaço das covariáveis.
5.1.2 Redundâcia
A suposição de redundância diz, intuitivamente, que as covariáveis x são alta-
mente redundantes. Um exemplo trivial é o de que x1 = ... = xd, isto é, todas as
covariáveis são iguais. Como um exemplo mais realista, considere que x1 é a altura
de um indivíduo, x2 é seu peso e x3 é seu índice de massa corpórea. Com quais-
quer duas dentre essas três variáveis, conseguimos recuperar a terceira, de modo
que essas variáveis podem ser reduzidas para apenas duas.
Outro caso em que redundância costuma ser uma suposição adequada é o de
imagens. Neste contexto, cada covariável xi é o pixel de uma figura (veja Seção A.1
para uma explicação do que são pixels). Espera-se, em geral, que pixels adjacentes
tenham valores próximos, de modo que há, assim, muita redundância nas covariá-
veis associadas a uma imagem.
Existem diversas formas de formalizar a noção de redundância; uma muito usada
é a de que X pertence a uma subvariedade de Rd com dimensão intrínseca baixa
(Aswani et al., 2011). Novamente, sob essa hipótese, estimar r(x) torna-se mais fácil.
A seguir veremos alguns métodos não paramétricos que são adequados para pro-
blemas com alta dimensionalidade.
5.2 k Vizinhos Mais Próximos e Regressão Linear Local
Tanto o estimador dos k vizinhos mais próximos (Seção 4.3) quanto a regressão
linear local (Seção 4.5 para o caso p = 1) se adaptam automaticamente à dimensi-
onalidade intrínseca das observações quando estas percentem a uma subvariedade
de Rd. Veja, por exemplo, Kpotufe (2011) e Bickel e Li (2007). Assim, quando se uti-
liza um desses estimadores, nenhuma adaptação é necessária para evitar a maldição
da dimensionalidade quando xi’s são altamente redundantes. Mais precisamente,
a taxa de convergência de ambos os estimadores é K
n4/(4+u) , em que u é a dimensão
110
Capítulo 5. Métodos Não Paramétricos em Altas Dimensões
intrínseca da subvariedade a qual X pertence. Essa taxa é muito mais rápida que a
vista anteriormente, K
n4/(4+d) , especialmente se u  d.
5.3 Support Vector Regression
Support Vector Regression (Seção 4.6.4) com o kernel Gaussiano também têm
bom desempenho sob a hipótese de redundância. Veja, por exemplo, Steinwart e
Christmann (2008).
5.4 Séries Ortogonais
A abordagem de séries ortogonais apresentada na Seção 4.1 também pode ser
adaptada para o cenário de dimensionalidade alta. A seguir apresentaremos a abor-
dagem de séries espectrais.
5.4.1 Bases espectrais
Nesta seção estudamos uma extensão do método de séries ortogonais apresen-
tado na Seção 4.1 que é mais adequada para dados com dimensionalidade alta. O
estimador também consiste em uma expansão em termos de uma base ortogonal.
Contudo, ao contrário do que foi estudado na Seção 4.1, aqui a base utilizada é cons-
truída com base nos dados. Em outras palavras, ao invés de utilizar, por exemplo,
uma base de Fourier, utilizaremos uma base

ψj
	
j∈N
construída com base na amos-
tra x1,...,xn.
Para construir uma base espectral, começamos definindo um kernel de Mercer
K(x,y) (veja Seção 4.6.1). Seja P(x) a distribuição do vetor de covariáveis X e Consi-
dere o seguinte operador (Shi et al., 2009):
K : L2
(X ,P) −→ L2
(X ,P) (5.2)
K(g)(x) =
Z
X
K(x,y)g(y)dP(y).
O operador K tem uma quantidade enumerável de autofunções

ψj
	
j∈N
com res-
pectivos autovalores λ1 ≥ λ2 ≥ ... ≥ 0 (Minh et al., 2006).
As autofunções

ψj
	
j∈N
constituem uma base espectral. Elas formam uma base
ortonormal de L2(X ,P) (Minh, 2010).
111
5.4. Séries Ortogonais
Há duas principais razões pelas quais bases espectrais são candidatas ideais para
aproximar funções suaves de x em altas dimensões:
1. As autofunções

ψj
	
j∈N
são adaptadas à dimensão intrínseca dos dados. Mais es-
pecificamente, quando o domínio X é uma subvariedade de Rd, a base se com-
porta como uma base de Fourier adaptada à geometria intrínseca do dados, em
que os primeiros termos são mais suaves que os termos de ordem mais alta1.
Como um exemplo, na Figura 5.2 mostramos as autofunções do operador da
Equação 5.2 quando o domínio dos dados é uma subvariedade (uma espiral)
de R2. Compare esta figura com a Figura 4.1; a base se comporta como uma
base de Fourier na direção da espiral. Segue que se r(x) é suave em relação a
esse domínio, então só precisamos de algumas poucas funções para aproximá-
la bem. Esta adaptação leva a taxas de convergência que dependem apenas da
dimensão intrínseca dos dados, ao invés da potencialmente maior dimensão
ambiente.
2. Ao contrário das bases ortogonais tradicionais, as autofunções são ortogonais
em relação a P(x), a distribuição marginal dos dados, e não em relação à medida
de Lebesgue (Bengio et al., 2004). Isto é,
Z
X
ψi(x)ψj(x)dP(x) = δi,j.
Isso leva a estimadores dos coeficientes de expansão que são mais rapidamente
calculados. Além disso, não há necessidade de usar produtos tensoriais em
altas dimensões, que são extremamente ineficientes para serem calculados.
Como P(x) é desconhecido, é necessário estimar

ψj
	
j
. Isso pode ser feito pri-
meiramente calculando-se a matriz de Gram
G =






K(x1,x1) K(x1,x2) ··· K(x1,xn)
K(x2,x1) K(x2,x2) ··· K(x2,xn)
.
.
.
.
.
.
...
.
.
.
K(xn,x1) K(xn,x2) ··· K(xn,xn)






(5.3)
Seja
e
ψj := e
ψj(x1),..., e
ψj(xn)

.
1Isso ocorre porque a distância euclidiana é localmente a mesma que a distância geodésica; veja, por
exemplo, Shi et al. 2009 para uma derivação.
112
Capítulo 5. Métodos Não Paramétricos em Altas Dimensões
o j-ésimo autovetor da matrix 5.3 e b
λj seu respectivo autovalor, em que ordenamos
os autovetores segundo ordem decrescente de autovalores e os normalizamos de
maneira que ∑n
k=1
e
ψ2
j (xk) = 1. Um estimador consistente de ψj é
b
ψj(x) =
√
n
b
λj
n
∑
k=1
e
ψj(xk)K(x,xk). (5.4)
Este estimador é a extensão de Nyström do autovetor e
ψj para valores fora da amostra
x (Bengio et al., 2004; Drineas e Mahoney, 2005).
ψ1
x
y
ψ2
x
y
ψ3
x
y
ψ4
x
y
Figura 5.2: Curvas de nível das primeiras quatro autofunções do operador do ker-
nel Gaussiano quando o domínio das covariáveis x = (x1,x2) é em uma espiral. As
autofunções formam uma base de Fourier adaptada à geometria dos dados e são
apropriadas para aproximar funções suaves de x nesse domínio. Compare esta fi-
gura com a Figura 4.1.
113
5.4. Séries Ortogonais
5.4.2 O estimador
Seja K um kernel fixo e {ψj}j∈N a base ortonormal relacionada ao operador da
Equação (5.2). A expansão da função de regressão r nessa base é dada por
r(x) = ∑
j≥1
βjψj(x),
em que
βj =
Z
X
ψj(x)r(x)dP(x) =
Z
X
ψj(x)E[Y|x]dP(x) = E[Yψj(X)].
Note que a ortogonalidade da base espectral com relação a P(x) é a chave para que
βj seja simplesmente E[Yψj(X)]. Assim, o estimador baseado em séries espectrais
(Lee e Izbicki, 2016) é dado por
g(x) =
J
∑
j=1
b
βj b
ψj(x), (5.5)
em que b
ψj’s são estimados como descrito anteriormente e
b
βj =
1
n
n
∑
k=1
yk
b
ψj(xk).
O corte J pode ser escolhido por validação cruzada.
Lee e Izbicki (2016) provam que a taxa de covergência desse estimador depende
apenas da dimensão intrínseca do espaço das covariáveis. Assim, esse estimador é
um bom candidato quando há muita redundância nas covariáveis.
Exemplo 5.1 (Isomap face data). Trabalhamos aqui com os dados descritos no Exem-
plo 1.3, que tem por objetivo estimar a direção horizontal para a qual um indivíduo
está olhando com base em sua imagem. Cada imagem aqui é representada por uma
matriz 64 × 64, i.e., há d = 4096 covariáveis. Temos n = 698 observações. Note que,
como n  d, não é possível implementar o método dos mínimos quadrados para
esses dados. A Tabela 5.1 mostra os resultados dos ajustes desses modelos. Nesse
problema, os métodos paramétricos utilizados levam a bons resultados, mas as pre-
dições obtidas pelos métodos não paramétricos tem melhor qualidade. Em parti-
cular, o método baseado em séries espectrais foi o que teve melhor desempenho.
114
Capítulo 5. Métodos Não Paramétricos em Altas Dimensões
Isso é explicado pelo fato de que, nesse exemplo, esperamos que haja uma grande
redundância nas covariáveis.
Tabela 5.1: Riscos estimados e erros-padrão de alguns estimadores para o isomap
face data.
Método Séries Espectrais KNN NW Lasso Ridge
Risco Estimado 2.70 (0.70) 10.09 (1.50) 11.91 (1.91) 27.69 (6.43) 56.76 (13.48)
5.5 Florestas Aleatórias
A taxa de convergência de um estimador da regressão via floresta aleatória de-
pende apenas (sob várias suposições) do número de covariáveis relevantes para pre-
dizer Y (Biau, 2012). Intuitivamente, isso ocorre pois, ao escolher qual variável será
utilizada na divisão de cada árvore, apenas variáveis que diminuem o EQM são se-
lecionadas. Assim, raramente uma variável irrelevante é utilizada.
5.6 SpAM - Modelos Aditivos Esparsos
Os modelos aditivos apresentados na Seção 4.7 são uma tentativa de diminuir a
influência da maldição da dimensionalidade, uma vez que eles assumem que r(x)
pode ser decomposta em uma soma linear de funções suaves de cada uma das co-
variáveis. Modelos aditivos esparsos (SpAM - Sparse Additive Models; Ravikumar
et al. 2009) vão um passo além: eles combinam modelos aditivos com o lasso (Se-
ção 3.3) de modo a se obter um estimador não paramétrico que vença a maldição da
dimensionalidade em alguns problemas.
Mais especificamente, em um modelo aditivo esparso, busca-se um representação
da função de regressão da forma
g(x) =
d
∑
j=1
βjgj(xj),
115
5.7. Resumo
em que impõe-se que ∑d
j=1 |βj| ≤ L. Isso é, como em modelos aditivos, o SpAM
assume que r(x) pode ser decomposta em uma soma linear de funções suaves de
cada uma das covariáveis, gj(xj), mas, ao mesmo tempo, requer que algumas dessas
funções sejam iguais a zero. Modelos aditivos esparsos são ajustados utilizando-
se uma combinação do backfitting (Seção 4.7) com um método de solução do lasso.
Assim como no lasso, o valor de L pode ser escolhido via validação cruzada. Veja
detalhes técnicos em Ravikumar et al. (2009).
No R, o método SpAM pode ser implementado com o pacote SAM. O ajuste e
predições podem ser feitos via
library(SAM)
ajuste - samQL(X = x_treinamento, y = y_treinamento)
predito - predict(ajuste, x_teste)
Exemplo 5.2 (Wine Quality). Aqui exemplificamos modelos aditivos esparsos para
o problema de predizer a qualidade de um vinho (medida através de uma nota dada
por um expert) segundo suas característica (pH, quantidade de álcool entre outras;
veja mais detalhes em https://archive.ics.uci.edu/ml/datasets/Wine+Quality). As
funções suaves gj utilizadas foram splines com 3 funções de base. A Figura 5.3 mos-
tra os resultados de tal ajuste. Assim como o caso de modelos aditivos, pode-se
observar que o SpAM leva a ajustes com fácil interpretação.
5.7 Resumo
Nesse capítulo vimos que é necessário fazer suposições adicionais para que seja
possível estimar bem uma função de regressão utilizando métodos não paramétricos
quando há muitas covariáveis. As duas suposições investigadas foram irrelevâncias
de algumas covariáveise redundância das covariáveis. Vimos que vários dos mé-
todos estudados no Capítulo 4 automaticamente se adaptam a essas situações, no
sentido de que as taxas de convergência desses modelos são muito mais rápidas se
essas suposições são válidas.
116
Capítulo 5. Métodos Não Paramétricos em Altas Dimensões
Figura 5.3: Ajuste do modelo esparso aditivo para os dados de vinho (Exemplo 5.2).
117
5.7. Resumo
118
Capítulo 6
Outros Aspectos de Regressão
6.1 Interpretabilidade (ExplainableML)
I didn’t like having to explain to
them, so I just shut up, smoked a
cigarette, and looked at the sea.
Albert Camus
Ainda que o foco da maioria dos métodos de aprendizado supervisionado seja
criar bons algoritmos de predição, métodos que permitem maior interpretabilidade
costumam ser mais utilizados. Isso porque trazem mais segurança para os usuários
desses modelos. Além disso, métodos interpretáveis podem trazer insights adicio-
nais sobre o problema abordado. Por exemplo, ao saber quais variáveis são impor-
tantes para se obter um bom poder preditivo em um dado problema, pode-se ter
uma melhor ideia sobre o desempenho preditivo da função obtida para novos dados
com características distintas (ou seja, dados que não são identicamente distribuídos
aos dados observados no conjunto de treinamento). Também é possível diagnosticar
mais facilmente viéses de seleção que poderiam passar desapercebidos.
Vimos que árvores de predição, modelos aditivos e modelos lineares esparsos são
relativamente fáceis de serem interpretados enquanto que support vector regression e
métodos baseados no truque do kernel tipicamente são mais difíceis. Existem algu-
mas formas de tentar interpretar modelos de predição que são tidos como caixas
pretas. A seguir introduziremos três formas de fazer isso: LIME, PDP e ICE. Outros
119
6.1. Interpretabilidade (ExplainableML)
métodos de interpretação de modelos de predição podem ser encontrados em Botari
et al. (2019), Coscrato et al. (2019), Lundberg e Lee (2017), Molnar (2019) e Ribeiro
et al. (2018).
Via de regra, o objetivo de ExplainableML é responder à pergunta Por que esse
algoritmo fornece a predição g(x) para esse dado x?, e não Por que esperamos que
esse x tenha valor predito g(x)?. Essa última é uma pergunta inferencial. É jus-
tamente confrontando a resposta do LIME com nossa opinião sobre a segunda per-
gunta que ganharemos ou perderemos confiança no modelo utilizado. Finalmente,
notamos que alguns dos métodos descritos aqui também podem ser utilizados para
a responder à segunda pergunta caso se assuma que o modelo ajustado é razoável.
6.1.1 LIME - Local Interpretable Model-agnostic Explanations
A ideia chave do LIME (Ribeiro et al., 2016) é tentar responder à seguinte per-
gunta: por que o algoritmo me forneceu a predição g(x∗) para a nova amostra x∗? A
resposta para essa pergunta é dada na forma de uma lista de quais variáveis foram
importantes para explicar essa observação. Para tanto, o LIME aproxima a solução
g(x∗) localmente (isto é, em uma vizinhança de x∗) via uma regressão linear ajustada
por lasso. Isso é feito pois, mesmo se g é não linear, uma aproximação linear pode ser
razoável localmente. Para fazer essa aproximação, o procedimento do LIME consiste
nos seguintes passos:
• Gerar as covariáveis de novas observações x∗
1,...,x∗
B perturbando x∗ (por exem-
plo, adicionando ruído em cada dimensão de x∗)
• Ajustar o lasso para o conjunto (x∗
1,g(x∗
1)),...,(x∗
B,g(x∗
B)). O ajuste pode ser
feito dando pesos para cada observação de acordo com a similaridade: wi =
K(x∗
i ,x∗). O valor da penalização λ do lasso é escolhido de forma que se tenha
m covariáveis escolhidas (m é escolhido pelo usuário e em geral é um número
pequeno para facilitar a interpretação).
Retorna-se então quais foram as m variáveis escolhidas e a magnitude dos coefi-
cientes associados.
Exemplo 6.1 (Câncer de Próstata). Neste exemplo utilizaremos o pacote |lime| para
interpretar as predições dadas pelo XGBoost para o banco de dados de câncer de
próstata (Exemplo 3.2). A Figura 6.1 ilustra as explicações dadas pelo LIME para 4
observações.
120
Capítulo 6. Outros Aspectos de Regressão
library(xgboost)
xgb_model - xgb.train(data = xgb.DMatrix(xtr, label = ytr),
nrounds = 50)
explainer - lime(data.frame(xtr), model = xgb_model)
explanation - lime::explain(
data.frame(xval[sample(nrow(xval),4),]),
explainer,
n_features = 3)
plot_features(explanation, ncol = 2)
Figura 6.1: Exemplo de interpretação dado pelo LIME para o banco de dados do
Câncer de Próstata.
121
6.1. Interpretabilidade (ExplainableML)
6.1.2 PDP e ICE
Os gráficos de dependência parcial (do inglês, PDP - partial dependence plot; Fried-
man 2001) são uma ferramenta valiosa para visualizar como uma função de predição
g depende das covariáveis. A curva do PDP para a i-ésima variável é dada por
hi(x) =
1
n
n
∑
j=1
g(xj,1,...,xj,i−1,x,xj,i+1,...,xj,d),
que é uma estimativa de E[g(X1,...,Xi−1,x,Xi+1,...,Xd)]. Essa curva mede a in-
fluência média da i-ésima variável no modelo preditivo g. Se hi(x) varia muito como
função de x, então g é muito alterada por mudanças nessa covariável, o que indica
que xi é uma variável importante para esse modelo preditivo. O formato da curva
também elucida como se dá essa relação.
Idealmente, as observações utilizadas para calcular hi(x) não devem ter sido uti-
lizadas no treinamento do modelo, uma vez que o comportamento de g pode ser
muito diferente em novas observações, especialmente se o método faz algum tipo de
interpolação.
Caso g seja dado por um modelo adivo (Seção 4.7), as curvas do PDP recupe-
ram as funções de regressão individuais b
ri. Assim, a visualização dada pelo PDP é
exatamente a mesma daquela apresentada na Figura 4.5. Em particular, se g é uma
regressão linear, recupera-se uma reta.
Para os casos em que há uma forte interação entre as covariáveis, a influência
média de uma covariável pode não ser um bom resumo de seu papel no modelo
preditivo. Nessas situações, uma alternativa é a utilização do gráfico de esperança
condicional individual (do inglês, ICE - individual conditional expectation; Goldstein
et al. 2015). Esse gráfico consiste em traçar as curvas
hi,j(x) := g(xj,1,...,xj,i−1,x,xj,i+1,...,xj,d)
para todas as observações j de interesse. Observa-se, assim, a influência da i-ésima
variável para cada observação individulmente. Note que a curva do PDP é dada
pela média das curvas ICE.
Exemplo 6.2 (Câncer de Próstata). Neste exemplo utilizaremos PDP e ICE para inter-
pretar as predições dadas pelo XGBoost para o banco de dados de câncer de próstata
(Exemplo 3.2). O ajuste do modelo preditivo foi feito no Exemplo 6.1.
122
Capítulo 6. Outros Aspectos de Regressão
As curva em vermelho no painel da esquerda da Figura 6.2 mostra o PDP para
a variável lcavol. Ela indica que, à medida que lcavol aumenta, as predições do
modelo para a variável resposta também aumentam. Por outro lado, o painel da di-
reita mostra que a variável age não é muito importante para esse modelo preditivo,
pois ela se aproxima de uma reta horizontal.
Em ambos os casos, a interação entre as covariáveis do banco de dados e a va-
riável apresentada parece baixa. O comportamento das curvas em preto é muito
parecido com os das curvas em vermelho.
library(pdp)
predict.fun - function(object, newdata){
newData_x = xgb.DMatrix(data.matrix(newdata), missing = NA)
results - predict(object, newData_x)
return(results)
}
pdp::partial(xgb_model,
train = as.data.frame(xval),
pred.var = lcavol,
pred.fun = predict.fun,
ice = TRUE) %%
plotPartial(smooth = TRUE, alpha = 0.4,
pdp.lwd = 4, pdp.col = #D81B60)
pdp::partial(xgb_model,
train = as.data.frame(xval),
pred.var = age,
pred.fun = predict.fun,
ice = TRUE) %%
plotPartial(smooth = TRUE,alpha = 0.4,
pdp.lwd = 4, pdp.col = #D81B60)
123
6.2. Estimação de Densidades Condicionais
Figura 6.2: Interpretações para duas covariáveis dadas pelo ICE (curvas pretas) e
PDP (curvas vermelhas).
6.2 Estimação de Densidades Condicionais
Nem sempre a função de regressão é suficiente para resumir a incerteza sobre
Y quando se conhece x. Uma alternativa é estimar não só a esperança condicional
E[Y|x], mas sim toda a densidade condicional f (y|x). Alguns métodos não para-
métricos de estimação dessa quantidade em problemas com baixa dimensionalidade
podem ser encontrados em Fan et al. (1996), Hall et al. (2004), Hyndman et al. (1996),
Rosenblatt (1969) e Sugiyama et al. (2010). Para métodos que funcionam em alta di-
mensionalidade, veja Dalmasso et al. (2020) e Izbicki e Lee (2016). Aqui descrevemos
o FlexCode (Izbicki e Lee, 2017).
A ideia chave do FlexCode é que, se
R
f2(y|x)dy  ∞, então f admite a represen-
tação
f (y|x) = ∑
i≥0
βi(x)φi(y),
em que (φi)i≥0 é uma base ortonormal como a base de Fourier. Se f é suave, ela pode
124
Capítulo 6. Outros Aspectos de Regressão
então ser bem aproximada pelos primeiros termos da série:
f (y|x) ≈
I
∑
i=0
βi(x)φi(y).
Assim, o problema de estimar a densidade condicional pode ser reformulado como
o problema de estimar os coeficientes β1(x),...,βI(x).
Ao projetar f em φi, notamos que
βi(x) = E[φi(Y)|x].
Assim, podemos estimar βi fazendo uma regressão de φi(Y) em x. O método de
regressão ideal depende da estrutura do problema resolvido. Por exemplo, se espe-
ramos uma relação esparsa entre Y e x, podemos utilizar métodos que fazem seleção
de variáveis (no sentido de não usar todas as variáveis de forma igual), como o XG-
Boost ou florestas aleatórias. Por outro lado, se esperamos que X pertença a uma
subvariedade com dimensão intríseca baixa, podemos utilizar o método dos k vizi-
nhos mais próximos.
A Figure 6.3 mostra um exemplo de densidades estimadas pelo FlexCode. Sejam
(β̂i(x))I
i=0 estimativas desses coeficientes. A densidade estimada é dada por:
ˆ
f (y|x) =
I
∑
i=0
β̂i(x)φi(y).
# instalação: devtools::install_github(rizbicki/FlexCode)
library(FlexCoDE)
set.seed(123)
# Divisão em treinamento/validação/teste
split_train_test - initial_split(dados, prob = 0.95)
teste - testing(split_train_test)
treinamento - training(split_train_test)
split_train_validation - initial_split(treinamento,
prob = 0.7)
treinamento - training(split_train_validation)
125
6.2. Estimação de Densidades Condicionais
validacao - testing(split_train_validation)
# Fit FlexCode with RandomForest to estimate the coefficients
fit - fitFlexCoDE(select(treinamento, -y),
select(treinamento, y),
select(validacao, -y),
select(validacao, y),
regressionFunction =
regressionFunction.Forest)
p - plot(fit,
select(teste, -y),
select(teste, y) %% pull())
Figura 6.3: Densidade estimadas pelo FlexCode.
126
Capítulo 6. Outros Aspectos de Regressão
6.3 Inferência Conformal
To be beyond any existing
classification has always pleased
me.
Boyd Rice
Estimar a distribuição completa de Y condicional em x não é uma tarefa simples.
Uma solução intermediária para fornecer predições para Y que vão além de estima-
tivas pontuais consiste em criar uma região de predição com valores plausíveis de
Y para uma amostra com covariáveis x. Uma forma particular de se criar essas ban-
das, de modo a conseguir garantias de cobertura com poucas suposições, é através
da inferência conformal (conformal inference) (Vovk et al., 2005; Vovk et al., 2009), que
utiliza apenas a suposição de que os dados são i.i.d.’s. Mais espeficamente, com esse
método é possível construir bandas C tais que P(Yn+1 ∈ C(Xn+1)) = 1 − α, em que
α ∈ (0,1) é um valor especificado previamente.
Uma método conformal particular é o método split (Lei et al., 2018; Papadopoulos
et al., 2002), que possui a vantagem de ser rápido frente a outras alternativas. Nesse
método, o conjunto de dados é dividido em dois: o conjunto de treinamento D0 =
{(X0
1,Y0
1),...,(X0
n,Y0
n)} e o conjunto de predição D = {(X1,Y1),...,(Xn,Ym)}. Para
simplificar a notação, vamos assumir que m = n. Treinamos então uma função ĥ :
X × Y → R, utilizando somente D0. Uma forma usual de definir essa função é
ĥ(x,y) = |y − r̂(x)|, em que r̂ é uma estimativa da regressão obtida a partir de D0
(Lei et al., 2018). Finalmente, D é utilizado para calcular Ui := ĥ(Xi,Yi), que são
chamados de resíduos split. Como os resíduos split são i.i.d. dados ĥ, o posto que
Un+1 tem em {U1,...,Un} tem distribuição uniforme em {1,...,n + 1} e, definindo
Ubαc como sendo a bnαc estatística de ordem entre U1,...,Un, obtemos que
P

Un+1 ≥ Ubαc

≥ 1 − α
P

ĥ(Xn+1,Yn+1) ≥ Ubαc

≥ 1 − α
P

Yn+1 ∈
n
y : ĥ(Xn+1,y) ≥ Ubαc
o
≥ 1 − α.
Ou seja, C(Xn+1) =
n
y : ĥ(Xn+1,y) ≥ Ubαc
o
satisfaz P(Yn+1 ∈ C(Xn+1)) ≥ 1 − α.
Além de P(Yn+1 ∈ C(Xn+1)), outras propriedades são desejáveis. Por exemplo,
127
6.3. Inferência Conformal
idealmente também gostaríamos que P(Yn+1 ∈ C(Xn+1)|Xn+1 = x) = 1 − α para
todo x ∈ Rd. Contudo, é impossível criar um método que satisfaça isso, a menos
que se faça fortes suposições sobre o processo gerador dos dados (Lei e Wasser-
man, 2014). Assim, alguns métodos de split conformal satisfazem versões mais fra-
cas dessa propriedade. Por exemplo, o CD-split e o Dist-split (Izbicki et al.,
2020a; Izbicki et al., 2020b), além de controlar P(Yn+1 ∈ C(Xn+1)), também contro-
lam P(Yn+1 ∈ C(Xn+1)|Xn+1 = x) assintoticamente. Ambos os métodos utilizam
densidades condicionais (Seção 6.2) para criar ĥ(x,y): enquanto o Dist-split uti-
liza ĥ(x,y) = F̂(y|x), o CD-split utiliza ĥ(x,y) = ˆ
f (y|x). O método CD-split
requer uma passo adicional de particionamento do espaço de covariáveis para ga-
rantir a cobertura condicional assintótica. Esses métodos podem ser calculados com
o pacote predictionBands1.
Exemplo 6.3 (Bike sharing). Considere novamente o conjunto de dados do Exemplo
4.3. A Figura 6.4 mostra as bandas de predição para esse número em 100 observações
do conjunto de teste. Essas bandas foram criadas a partir das covariáveis disponíveis
e o método dist-split proposto por Izbicki et al. (2020b).
library(rsample)
library(predictionBands)
dados - read_csv(../dados/hour.csv) %%
select(-(instant:dteday),
-(yr:mnth),
-(casual:registered)) %%
mutate_at(vars(season, holiday, weekday, workingday),
as.character)
set.seed(400)
split - initial_split(dados, prop = .9942)
treinamento - training(split)
teste - testing(split)
1https://github.com/rizbicki/predictionBands
128
Capítulo 6. Outros Aspectos de Regressão
X - select(treinamento, -cnt)
y - select(treinamento, cnt) %% pull()
Xteste - select(teste, -cnt)
yteste - select(teste, cnt) %% pull()
fit - fit_predictionBands(X, y,
regressionFunction.extra = list(nCores = 4),
nIMax = 20)
bands - predict(fit, Xteste, type = dist)
p - plot(bands, yteste)
Figura 6.4: Exemplo de aplicação de inferência conformal. Os intervalos representam
as bandas de predição para 100 observações do conjunto de teste. Os pontos indicam
os valores reais da variável resposta.
129
6.3. Inferência Conformal
130
Parte II
Classificação
131
Capítulo 7
Introdução
Neste capítulo, estudaremos outro problema central em aprendizado de máquina,
o de classificação. Para o leitor que começa por esse capítulo, sugerimos a leitura do
Capítulo 1 para compreensão da notação e de conceitos básicos de aprendizado su-
pervisionado.
O problema de classificação é um problema similar ao de predição em regressão.
Consideramos uma amostra com observações independentes (X1,Y1),...,(Xn,Yn) ∼
(X,Y) com objetivo de construir uma função g(x) que possa ser usada para fazer
bem a predição de novas observações (Xn+1,Yn+1),...,(Xn+m,Yn+m), isto é, quere-
mos que
g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m.
A diferença de um problema de classificação para um problema de regressão
é que no primeiro a variável resposta Y não é uma variável quantitativa, mas sim
uma variável qualitativa. Por exemplo, prever se um paciente tem uma certa doença
com base em variáveis clínicas x é um problema de classificação. Outro exemplo
tradicional é o de classificar automática de dígitos escritos à mão com base em suas
imagens (veja Figura 7.1 para alguns exemplos).
133
7.1. Função de Risco
Figura 7.1: Exemplos de dígitos escritos à mão. O objetivo nesse problema é criar
uma função g(x) que consiga automaticamente predizer a qual dígito corresponde
uma imagem com alta acurácia.
Neste capítulo, investigaremos como a avaliação do desempenho de uma dada
função de predição g(x) (isto é, um classificador) difere da avaliação estudada no
contexto de regressão. No Capítulo 8 estudaremos alguns métodos de criação de
classificadores com bom poder preditivo.
7.1 Função de Risco
Vamos assumir que Y possui valores em um conjunto C (por exemplo, C pode
ser o conjunto {spam, não spam}). Primeiramente, notamos que a função de risco
R(g) = E[(Y − g(X))2] estudada para o caso de regressão (Y quantitativo) não faz
sentido para classificação (o que seria Y − g(X) nesse contexto?). Dessa forma, con-
sideraremos outra função de risco. É comum utilizar
R(g) := E[I(Y , g(X))] = P(Y , g(X)), (7.1)
ou seja, o risco de g é agora a probabilidade de erro em um nova observação (X,Y).
Em outras palavras, uma função de perda mais adequada para o contexto de classi-
ficação é L(g(x),Y) = I(Y , g(X)), a chamada função de perda 0-1.
No contexto de regressão, vimos que a função que minimiza E[(Y − g(X))2] é
dada pela função de regressão r(x) = E[Y|X = x] (veja o Capítulo 1). Existe um
análogo para classificação: a melhor função de classificação g, segundo a função de
risco da Equação 7.1, é dada por
g(x) = argmax
d∈C
P(Y = d|x),
134
Capítulo 7. Introdução
isto é, deve-se classificar x como sendo daquela classe com maior probabilidade a pos-
teriori. Este classificador é conhecido como classificador de Bayes. Note que, como
no caso de regressão, ele é desconhecido pois a função P(Y = d|x) é desconhecida.
O Teorema a seguir formaliza esta caracterização.
Teorema 9. Suponha que definimos o risco de uma função de predição g : Rd −→ C via
perda 0-1: R(g) = P(Y , g(X)), em que (X,Y) é uma nova observação que não foi usada
para estimar g. Então a função g que minimiza R(g) é dada por
g(x) = argmax
d∈C
P(Y = d|x)
Demonstração. Para simplificar a demonstração do teorema, vamos assumir que Y
assume só dois valores, digamos, c1 e c2 (isto é, trata-se de um problema binário).
Temos que
R(g) := E[I(Y , g(X))] = P(Y , g(X)) =
Z
Rd
P(Y , g(X)|x)f (x)dx
=
Z
Rd
[I(g(x) = c2)P(Y = c1|x) + I(g(x) = c1)P(Y = c2|x)] f (x)dx.
Assim, para cada x fixo, o termo interno da integral é minimizado quando se
escolhe g(x) = c1 quando
P(Y = c1|x) ≥ P(Y = c2|x)
e g(x) = c2 caso contrário.
Para o caso binário, o classificador de Bayes pode ser reescrito como
g(x) = c1 ⇐⇒ P(Y = c1|x) ≥
1
2
.
Na Seção 9.1 discutiremos alguns casos em que utilizar um valor diferente de 1/2 é
vantajoso.
Observação 7.1. No caso de classificação binária é comum denotar os elementos de
C por 0 e 1. Essa escolha é válida, mas arbitrária (isto é, não se deve entender que há
uma ordenação entre esses elementos).
135
7.2. Estimação do Risco e Seleção de Modelos
7.2 Estimação do Risco e Seleção de Modelos
Da mesma maneira que em regressão (Seção 1.5.1), pode-se estimar o risco de um
método de classificação utilizando-se data splitting ou validação cruzada. Conside-
remos a primeira dessas abordagens (lembre-se que as observações devem estar em
uma ordem aleatória):
Treinamento (por exemplo, 70%)
z }| {
(X1,Y1),(X2,Y2),...,(Xs,Ys) ,
Validação (por exemplo, 30%)
z }| {
(Xs+1,Ys+1),...,(Xn,Yn).
Como em regressão, utilizamos o conjunto de treinamento para estimar g e o
conjunto de validação apenas para estimar R(g) via
R(g) ≈
1
n − s
n
∑
i=s+1
I(Yi , g(Xi)) := b
R(g), (7.2)
isto é, avaliamos a proporção de erros no conjunto de validação.
Assim, uma forma de selecionar um modelo g dentro de uma classe de mode-
los G consiste em utilizar validação cruzada para estimar R(g) para cada g ∈ G e,
então, escolher g com o menor risco estimado. O teorema a seguir mostra que esse
procedimento, de fato, retorna com probabilidade alta o melhor modelo em G.
Teorema 10. Seja G = {g1,...,gN} uma classe de classificadores estimados com base em um
conjunto de treinamento e seja b
R(g) o erro estimado de g com base no conjunto de validação
(Equação 7.2). Seja g∗ o modelo que minimiza o risco real R(g) dentre g ∈ G e seja b
g o
modelo que minimiza o risco estimado b
R(g) dentre g ∈ G. Então, com probabilidade de no
máximo e (e  0),
|R(b
g) − R(g∗
)|  2
s
1
2(n − s)
log
2N
e
.
Demonstração. Pela desigualdade de Hoeffding, para todo δ  0 e todo g ∈ G, tem-se
que
P(|b
R(g) − R(g)|  δ) ≤ 2e−2(n−s)δ2
.
Segue da desigualdade da união que
136
Capítulo 7. Introdução
P

max
g∈G
|b
R(g) − R(g)|  δ

= P


[
g∈G
|b
R(g) − R(g)|  δ


≤ ∑
g∈G
P

|b
R(g) − R(g)|  δ

≤ N2e−2(n−s)δ2
.
Agora, tome δ =
q
1
2(n−s)
log 2N
e , de modo que N2e−2(n−s)δ2
= e. Conclua que, com
probabilidade ao menos 1 − e, |b
R(g) − R(g)| ≤ δ para todo g ∈ G e, assim,
R(b
g) ≤ b
R(b
g) + δ ≤ b
R(g∗
) + δ ≤ R(g∗
) + 2δ.
O Teorema 10 mostra que, quanto maior é o número de classificadores em G,
menor é a probabilidade de recuperarmos o melhor modelo. Esse é um dos fato-
res que fazem com que idealmente apenas um conjunto pequeno de modelos seja
comparado no conjunto de teste e o ajuste/tuning de cada modelo é feito utilizando
validação cruzada dentro do treinamento ou particionando o treinamento em dois
conjuntos: treinamento e validação. Assim, deixamos o teste para comparar apenas
o melhor modelo de cada classe (por exemplo, a melhor regressão logística penali-
zada encontrada com o melhor KNN).
Uma extensão desse resultado para o caso em que G possui um número infinito
de elementos será estudada na Seção 9.5, quando introduzirmos a teoria VC.
7.3 Balanço entre Viés e Variância
Assim como em regressão (Seção 1.5.2), em classificação também se enfrenta o pa-
radigma do balanço entre viés e variância. Contudo, os detalhes são um pouco dife-
rentes. Suponha que G seja uma classe de classificadores (por exemplo, todos os clas-
sificadores baseados em uma regressão logística; veja Seção 8.1.2), Ror := infg∈G R(g)
o melhor risco (isto é, o risco do oráculo) que pode ser obtido usando-se classificado-
res de G e R∗ o risco do classificador de Bayes (Teorema 9). Então, para todo g ∈ G,
R(g) − R∗ = T1 + T2,
137
7.4. Outras medidas de desempenho
em que T1 = R(g) − Ror é o análogo da variância (em geral é alto se G possui muitos
elementos – por exemplo, se há muitos parâmetros na regressão logística) e T2 =
Ror − R∗ é o análogo do viés ao quadrado (em geral é baixo se G possui muitos
elementos). Assim, G não pode ser nem muito grande, nem muito pequena.
7.4 Outras medidas de desempenho
You can’t notice what isn’t
mentioned unless you’re an
expert.
Daniel Dennett
Nem sempre a função de risco R(g) := E[I(Y , g(X))] = P(Y , g(X)) traz toda
informação sobre o quão razoável g é. Por exemplo, suponha que Y indica se uma
pessoa tem uma certa doença rara e que, portanto, em uma amostra i.i.d., há poucos
pacientes com Y = 1. O classificador trivial g(x) ≡ 0 (classificar todos os pacientes
como sendo saudáveis) terá risco baixo, pois P(Y , 0) é pequena, mas seu desempe-
nho deixa a desejar: frequentemente não queremos classificar de forma errada um
paciente que é doente. Em termos numéricos, considere um exemplo de uma amos-
tra com 1.000 pacientes e apenas 10 doente. Ao classificar todos como saudáveis, o
risco apresentaria um valor muito reduzido.
Na prática, para evitar esse tipo de situação, é comum avaliar o desempenho de
um classificador com base em matrizes de confusão como a apresentada a seguir:
Tabela 7.1: Matriz de confusão
Valor Predito
Valor verdadeiro
Y = 0 Y = 1
Y = 0 VN (verdadeiro negativo) FN (falso negativo)
Y = 1 FP (falso positivo) VP (verdadeiro positivo)
Com base nessa tabela, pode-se definir várias medidas, como por exemplo:
• Sensibilidade/Recall: S = VP/(VP + FN) (dos pacientes doentes, quantos fo-
ram corretamente identificados?)
138
Capítulo 7. Introdução
• Especificidade: E = VN/(VN + FP) (dos pacientes não doentes, quantos foram
corretamente identificados?)
• Valor preditivo positivo/Precision: VPP = VP/(VP + FP) (dos pacientes clas-
sificados como doentes, quantos foram corretamente identificados?)
• Valor preditivo negativo: VPN = VN/(VN + FN) (dos pacientes classificados
como não doentes, quantos foram corretamente identificados?)
• Estatística F1: F1 = 2
1/S+1/VPP (a média harmônica entre S e VPP)
O classificador trivial g(x) ≡ 0 tem sensibilidade zero e especificidade um. As-
sim, apesar da especificidade ser alta, a sensibilidade é muito baixa. Isso indica que
o classificador pode na realidade ser ruim: ele classifica incorretamente todos os pa-
cientes doentes. Portanto, é recomendável olhar para outras medidas além do risco
estimado. Isso se torna particularmente importante na presença de dados desba-
lanceados (isto é, caso a frequência de uma classe seja muito diferente das demais).
Voltaremos para esse tópico na Seção 9.1.
As estatísticas calculadas com base na Tabela 7.1 são estimativas populacionais
de certas quantidades. Por exemplo, a sensibilidade é uma estimativa de P(g(X) =
1|Y = 1), enquanto que a especificidade é uma estimativa de P(g(X) = 0|Y = 0).
Assim, é importante calcular os valores de VP, FN, VN e FP utilizando uma amostra
de teste ou validação para evitar o sobre-ajuste.
139
7.4. Outras medidas de desempenho
140
Capítulo 8
Métodos de classificação
Neste capítulo apresentamos diversos métodos que visam fornecer classificado-
res com bom poder preditivo.
8.1 Classificadores Plug-in
O Teorema 9 sugere uma abordagem simples para resolver um problema de pre-
dição:
1. Estimamos P(Y = c|x) para cada categoria c∈C.
2. Tomamos então
g(x) = argmax
c∈C
b
P(Y = c|x)
Em particular, no caso binário, tomamos
g(x) = 1 ⇐⇒ b
P(Y = 1|x) 
1
2
.
Essa abordagem é conhecida como classificador plug-in, pois pluga-se o estima-
dor da probabilidade condicional na fórmula do g ótimo. Assim, sob esta aborda-
gem, criar um classificador se resume a estimar P(Y = c|x). Nas seguintes seções
veremos algumas formas de estimar essas probabilidades. Na Seção 9.1, veremos
que, muitas vezes, usar outros cortes para classificação além de 1/2 pode levar a
resultados melhores.
141
8.1. Classificadores Plug-in
8.1.1 Métodos de regressão
Living is messy.
Woody Allen
Note que, para todo c ∈ C,
P(Y = c|x) = E[I(Y = c)|x].
Assim, pode-se utilizar qualquer modelo de regressão (como árvores, florestas
ou qualquer outro método descrito na Parte I desse livro) para estimar P(Y = c|x);
basta estimar a função de regressão E[Z|x], em que Z = I(Y = c). Por exemplo,
pode-se estimar essa probabilidade via regressão linear, isto é, assumindo-se que
P(Y = c|x) = E[Z|x] = β
(c)
0 + β
(c)
1 x1 + ... + β
(c)
p xp.
É possível, por exemplo, utilizar o método de mínimos quadrados, lasso ou outras
abordagens já discutidas para estimar esses coeficientes. Ainda que as estimativas
de P(Y = c|x) possam ser menores que zero ou maiores que um, essas podem ser
utilizadas para definir o classificador
g(x) = argmax
c∈C
b
P(Y = c|x).
Embora classificadores criados desta maneira frequentemente apresentem bons
resultados, há pessoas que se sentem desconfortáveis em obter estimativas para uma
probabilidade maiores que um ou menores que zero1. Diversos métodos que evitam
isso serão apresentados nas próximas seções.
8.1.2 Regressão logística
Vamos assumir, a princípio, que Y é binária, isto é, |C| = 2. Denotando C = {0,1},
a regressão logística apresenta a seguinte forma paramétrica:
P(Y = 1|x) =
eβ0+∑d
i=1 βixi
1 + eβ0+∑d
i=1 βixi
.
1Note, contudo, que as probabilidades estimadas dessa forma via KNN ou métodos baseados em
árvores estão, por construção, necessariamente entre zero e um.
142
Capítulo 8. Métodos de classificação
Assim como no caso de regressão, não estamos assumindo que esta relação é, de fato,
válida. No entanto, esperamos que ela nos leve a um bom classificador.
Para estimar os coeficientes de uma regressão logística, podemos usar o método
de máxima verossimilhança. Nesse caso, dada uma amostra i.i.d. (X1,Y1),...,(Xn,Yn),
a função de verossimilhança condicional nas covariáveis, é
L(y;(x,β)) =
n
∏
k=1
(P(Yk = 1|xk,β))yk
(1 − P(Yk = 1|xk,β))1−yk
n
∏
k=1
eβ0+∑d
i=1 βixk,i
1 + eβ0+∑d
i=1 βixk,i
!yk
1
1 + eβ0+∑d
i=1 βixk,i
!1−yk
.
Para obter as estimativas dos coeficientes β, maximizamos L(y;(x,β)). Ao contrá-
rio do estimador de mínimos quadrados de uma regressão linear (Eq. 2.2), é neces-
sário usar algoritmos numéricos para maximizar a verossimilhança induzida pela
regressão logística e, assim, chegar nas estimativas para os coeficientes β. No R,
pode-se utilizar a função glm:
glm_fit - glm(formula, data = dados, family = binomial)
Assim como no caso da regressão linear, também é possível utilizar penalização
para estimar os coeficientes da regressão logística. Dessa forma, espera-se obter me-
lhor poder preditivo ao reduzir a variância do estimador. Para mais detalhes veja
Hastie et al. (2001). O pacote glmnet do R permite que tais modelos sejam facil-
mente ajustados:
modelo - glmnet(X_treino, y_treino,
alpha = 1, family = binomial)
# ou, para considerar validação cruzada, utilize
modelo - cv.glmnet(X_treino, y_treino,
alpha = 1, family = binomial)
Quando |C|  2 (casos com mais de duas categorias), podemos estimar, para cada
c ∈ C, P(Y = c|x) utilizando uma regressão logística diferente. Para tanto, basta
estimar P(Z = 1|x), em que Z = I(Y = c). Assim, ajustamos |C| regressões logísticas
143
8.1. Classificadores Plug-in
e então utilizamos o classificador
g(x) = argmax
c∈C
b
P(Y = c|x).
Existem outros métodos que garantem que a soma das probabilidades estimadas
seja um, veja por exemplo Friedman et al. (2010).
8.1.3 Bayes Ingênuo
Uma outra abordagem para estimar P(Y = c|x) consiste em usar o Teorema de
Bayes. Assumindo que X seja um vetor de covariáveis contínuas, temos que
P(Y = c|x) =
f (x|Y = c)P(Y = c)
∑s∈C f (x|Y = s)P(Y = s)
Assim, pode-se obter uma estimativa de P(Y = c|x) estimando-se as probabili-
dades marginais P(Y = s) e as densidades condicionais f (x|Y = s) para cada s ∈ C.
O termo P(Y = s) pode ser facilmente estimado utilizando-se as proporções
amostrais de cada classe. Contudo, para estimar f (x|Y = s), é necessário assumir
algum modelo para as covariáveis. O método Bayes ingênuo (naive Bayes em inglês)
assume que, para todo s ∈ C, f (x|Y = s) pode ser fatorada como
f (x|Y = s) = f ((x1,...,xd)|Y = s) =
d
∏
j=1
f (xj|Y = s),
isto é, assume que as componentes de x são independentes condicionalmente à classe
Y. Apesar dessa suposição não ser razoável em muitos problemas, ela é muito con-
veniente e pode levar a um bom classificador.
Podemos então estimar cada f (xj|Y = s) assumindo, por exemplo, que
Xj|Y =s ∼ N(µj,s,σ2
j,s), j = 1,...,d.
Em outras palavras, assumimos que cada componente do vetor X tem distribuição
normal com parâmetros que dependem da classe e da componente em questão. Os
parâmetros desse modelo podem ser estimados, por exemplo, via estimação de má-
144
Capítulo 8. Métodos de classificação
xima verossimilhança:
c
µj,s =
1
|Cs| ∑
k∈Cs
Xj,k
c
σ2
j,s =
1
|Cs| ∑
k∈Cs
(Xj,k − b
µj,s)2
em que Cs = {j : Yj = s} é o conjunto de todas observações de treinamento da classe
s.
Nesse caso, o estimador para a densidade condicional f (x|Y = c) é então dado
por
b
f (x|Y = c) =
d
∏
k=1
b
f (xk|Y = c) =
d
∏
k=1
1
q
2π b
σ2
k,c
e
−
(xk−b
µk,c)2
2
d
σ2
k,c
!
Evidentemente, além da distribuição normal, outras distribuições podem ser uti-
lizadas. Além disso, pode se utilizar diferentes métodos de estimação além do mé-
todo da máxima verossimilhança. Pode-se, inclusive, utilizar métodos não-paramétricos
para estimar cada uma das densidades condicionais.
Se X tem componentes discretas, o Teorema de Bayes afirma que
P(Y = c|x) =
P(X = x|Y = c)P(Y = c)
∑s∈C P(X = x|Y = s)P(Y = s)
.
Nesse caso, poderíamos assumir que
Xj|Y =c ∼ Multinomial(1,θj,c),
em que θj,c ∈Rq é um vetor com q dimensões, o número de categorias que Xj assume.
Novamente, os parâmetros dessa distribuição podem ser estimados via o método da
máxima verossimilhança.
Observação 8.1. Na implementação do Bayes ingênuo para dados contínuos, calcu-
lar produtos como ∏d
k=1
b
f (xk|Y = c) é numericamente desafiador, pois cada termo é,
em geral, muito próximo de zero. Dessa forma, o produto é aproximado por 0 pelo
computador. Uma forma de solucionar esse problema é trabalhar com logaritmos.
Para isso, note que o classificador plugin com probabilidades estimadas pelo método
145
8.1. Classificadores Plug-in
X1 X2 Xd−1 Xd
Y
...
Figura 8.1: Rede Bayesiana que corresponde ao Bayes ingênuo.
Bayes ingênuo pode ser escrito como
g(x) = argmax
c∈C
b
P(Y = c|x) = argmax
c∈C
b
f (x|Y = c)b
P(Y = c)
= argmax
c∈C
d
∏
k=1
b
f (xk|Y = c)
!
b
P(Y = c)
= argmax
c∈C
d
∑
k=1
log

b
f (xk|Y = c)

+ log b
P(Y = c),
uma vez que o logaritmo é uma função monotônica crescente. Assim, não é necessá-
rio calcular b
f (x|Y = c) diretamente para avaliar a decisão tomada.
Uma versão muito mais geral do método Bayes ingênuo é o de redes Bayesia-
nas (Pearl, 2014). De fato, Bayes ingênuo é a rede particular mostrada na Figura
8.1. Uma grande vantagem da abordagem de redes Bayesianas é lidar facilmente
com covariáveis faltantes, uma vez que essas redes modelam a distribuição conjunta
f (y,x).
Para dados discretos, pode-se ajustar o método Bayes ingênuo utilizando-se a
função naiveBayes no pacote e1071 do R.
Exemplo 8.1 (Detecção de SPAMs). Neste exemplo, consideramos o conjunto de
dados Spambase, disponível do repositório do UCI2. Esse conjunto contém informa-
ções relativas a n = 4.601 emails. Nesses emails foram medidas a frequência rela-
tiva (isto é, qual a proporção de vezes que essa palavra aparece em cada email) de
2https://archive.ics.uci.edu/ml/datasets/Spambase.
146
Capítulo 8. Métodos de classificação
57 palavras, como internet, free, credit, money, data, technology,
direct entre outras. Também foi verificado se cada email era ou não era SPAM (va-
riável resposta). A Tabela 8.1 apresenta o erro preditivo estimado em um conjunto
de teste de tamanho 600 para três classificadores.
Tabela 8.1: Riscos estimados e erros-padrão de alguns estimadores para o Exemplo
8.1.
Método Regressão Linear Regressão Logística Naive Bayes
Risco Estimado 0.111 0.086 0.188
Erro Padrão 0.020 0.020 0.020
8.1.4 Análise Discriminante
Enquanto o método de Bayes ingênuo assume que a distribuição condicional das
covariáveis pode ser fatorada como f (x|Y = c) = f (x1,...,xd|Y = c) = ∏d
j=1 f (xj|Y =
c), outras suposições podem ser feitas de modo a estimar essa quantidade. Na aná-
lise discriminante, supõe-se que o vetor X, condicional em Y = c, possui distribuição
normal multivariada. Existem duas formas de análise discriminante mais comuns.
Essas formas serão estudadas nas próximas seções.
8.1.4.1 Análise Discriminante Linear
Na análise discriminante linear assume-se que cada distribuição condicional X|Y =
c segue uma distribuição normal multivariada. Embora essas distribuições possam
ter médias diferentes, a matriz de covariância é a mesma para todas as distribuições.
Assim, assume-se que
X = (X1,...,Xd)|Y = c ∼ Normal(µc,Σ),
isto é,
f (x|Y = c) =
1
p
(2π)d|Σ|
e−(x−µc)|Σ−1(x−µc)
.
147
8.1. Classificadores Plug-in
Pode-se estimar os parâmetros dessa distribuição utilizando-se o método da má-
xima verossimilhança. Com isso, obtêm-se
b
µc =
1
|Cc| ∑
k∈Cc
Xk; b
Σ =
1
n ∑
c∈C
∑
k∈Cc
(xk − b
µc)(xk − b
µc)|
em que Cc = {j = 1,...,n : Yj = c}.
Como no método Bayes ingênuo, utiliza-se as estimativas de b
f (x|Y = c) para
construir o classificador plugin
g(x) = argmax
c∈C
b
P(Y = c|x) = argmax
c∈C
b
f (x|Y = c)b
P(Y = c).
Para o caso binário, tem-se que a regra de classificação é g(x) = 1 se, e só se,
b
P(Y = 1|x)
b
P(Y = 0|x)
≥ K ⇐⇒
b
f (x|Y = 1)b
P(Y = 1)
b
f (x|Y = 0)b
P(Y = 0)
≥ K ⇐⇒
log b
f (x|Y = 1) − log b
f (x|Y = 0) ≥ logK + log b
P(Y = 0) − log b
P(Y = 1)
⇐⇒ −(x − b
µ1)|b
Σ−1
(x − b
µ1) + (x − b
µ0)|b
Σ−1
(x − b
µ0) ≥ K0
⇐⇒ +2x|b
Σ−1
b
µ1 − b
µ|
1
b
Σ−1
b
µ1 − 2x|b
Σ−1
b
µ0 + b
µ|
0
b
Σ−1
b
µ0 ≥ K0
⇐⇒ ax|
≥ K00
,
em que a, K, K0 e K00 são constantes3. Assim, a região do espaço amostral em que
a regra de decisão consiste em g(x) = 1 é um hiperplano de Rd. É por esse motivo
que o método recebe o nome de análise discriminante linear. Veja uma ilustração dessa
região no Exemplo 8.2.
A análise discriminante linear pode ser ajustada no R via o pacote MASS:
library(MASS)
lda_fit - lda(x = X_treino, grouping = y_treino)
lda_pred - predict(lda_fit, newdata = X_novo) # previsões
lda_pred$posterior # contém as estimativas de P(Y=c|x)
3Até aqui estamos tomando K = 1, mas na Seção 9.1 veremos que esse corte pode ser diferente.
148
Capítulo 8. Métodos de classificação
Assim como nos outros métodos preditivos vistos, não acreditamos necessaria-
mente na suposição de normalidade, mas ela é apenas utilizada para obter um clas-
sificador com poder preditivo potencialmente bom.
8.1.4.2 Análise Discriminante Quadrática
A suposição feita pela análise discriminante quadrática também é de normali-
dade multivariada. Contudo, cada distribuição condicional pode ter sua própria
matriz de covariância. Assim, assume-se que
X = (X1,...,Xd)|Y = c ∼ Normal(µc,Σc),
isto é,
f (x|Y = c) =
1
p
(2π)d|Σc|
e−(x−µc)|Σ−1
c (x−µc)
.
Novamente, pode-se estimar esses parâmetros pelo método da máxima verossi-
milhança:
b
µc =
1
|Cc| ∑
k∈Cc
Xk; b
Σc =
1
|Cc| ∑
k∈Cc
(xk − b
µc)(xk − b
µc)|
em que Cc = {j = 1,...,n : Yj = c}.
Como na análise discriminante linear, as estimativas de b
f (x|Y = c) são utilizadas
para construir o classificador plugin
g(x) = argmax
c∈C
b
P(Y = c|x) = argmax
c∈C
b
f (x|Y = c)b
P(Y = c).
Para o caso binário, tem-se que a regra de classificação é g(x) = 1 se, e só se,
b
P(Y = 1|x)
b
P(Y = 0|x)
≥ K ⇐⇒
b
f (x|Y = 1)b
P(Y = 1)
b
f (x|Y = 0)b
P(Y = 0)
≥ K ⇐⇒
log b
f (x|Y = 1) − log b
f (x|Y = 0) ≥ logK + log b
P(Y = 0) − log b
P(Y = 1)
⇐⇒ −(x − b
µ1)|c
Σ1
−1
(x − b
µ1) + (x − b
µ0)|c
Σ0
−1
(x − b
µ0) ≥ K0
.
Assim, a região do espaço amostral Rd em que a regra de decisão é g(x) = 1 é
149
8.1. Classificadores Plug-in
dada por uma equação quadrática. É por esse motivo que o método recebe o nome
de análise discriminante quadrática. Veja uma ilustração desta região no Exemplo
8.2.
Exemplo 8.2. A Figura 8.2 mostra, em um exemplo simulado, as classificações dadas
pela análise discriminante linear e quadrática para o conjunto de teste apresentado
na Figura 8.3. Nesse caso, a análise discriminante quadrática leva a classificações
melhores.
(a) Análise Discriminante Linear (b) Análise Discriminante Quadrática
Figura 8.2: Valores preditos pela análise discriminante linear e valores preditos pela
análise discriminante quadrática no Exemplo 8.2.
Figura 8.3: Conjunto de teste com os rótulos observados utilizados no Exemplo 8.2.
150
Capítulo 8. Métodos de classificação
A análise discriminante quadrática pode ser ajustada no R via pacote MASS:
library(MASS)
qda_fit - qda(x = X_treino, grouping = y_treino)
qda_pred - predict(qda_fit, newdata = X_novo) # previsões
qda_pred$posterior # contém as estimativas de P(Y=c|x)
8.2 Support Vector Machines (SVM)
Navego pela memória sem
margens.
Cecília Meireles
Support vector machines (SVM) é uma metodologia de classificação proposta por
Cortes e Vapnik (1995) que leva a resultados excelentes em muitas aplicações. Essa
técnica utiliza uma motivação muito diferente daquela associada aos classificadores
vistos até aqui. No SVM, em nenhum momento estimamos as probabilidades P(Y =
c|x); o resultado dessa técnica indica as classes estimadas de novas observações.
Vamos assumir nessa seção que Y assume valores em C = {−1,1}.
Considere uma função linear
f (x) := β0 + β1x1 + ... + βdxd.
O classificador g(x) dado pelo SVM tem a seguinte forma:



Se f (x)  0, g(x) = −1
Se f (x) ≥ 0, g(x) = 1
(8.1)
Para descrever como construir f (x), suponha que as observações sejam linear-
mente separáveis, ou seja, existe um hiperplano que separa perfeitamente todas as
observações do conjunto de treinamento de acordo com a classe (veja um exemplo
na Figura 8.4).
151
8.2. Support Vector Machines (SVM)
Figura 8.4: Exemplo de conjunto de dados no qual existe um hiperplano que os
separa perfeitamente bem.
Nesse caso, existe f (x) linear tal que f (xi)  0 se, e só se, yi = −1. Assim, pode-
mos escrever para todo i = 1,...,n,
yi(β0 + β1xi,1 + ... + βdxi,d) = yi f (xi)  0. (8.2)
Quando existem muitos hiperplanos que separam os dados perfeitamente (ou
seja, quando há várias funções f tais que a Eq. 8.2 está satisfeita), o SVM busca por
aquele que tem maior margem M (ver Figura 8.5), isto é, aquele que fica mais dis-
tante” de todos os pontos observados. Os pontos utilizados para definir as margens
são chamados de vetores de suporte.
Assim, no caso de haver um hiperplano que separa perfeitamente bem os dados,
buscamos o hiperplano com coeficientes β tais que
β = argmax
β
M
sujeito às restrições
(1) ∑d
i=1 β2
i = 1 e
152
Capítulo 8. Métodos de classificação
Figura 8.5: Exemplo de aplicação do SVM destacando os vetores de suporte e a mar-
gem.
(2) para todo i = 1,...,n, yi fβ(xi) ≥ M.
A restrição (1) garante a comparabilidade dos diferentes hiperplanos em termos
de sua norma e com essa restrição é possível mostrar que |f (x)| = yi f (xi) é a distân-
cia entre a observação e o hiperplano.
É importante notar que, além de assumir a existência de um hiperplano que se-
para perfeitamente os dados, essa formulação é muito sensível a pequenas mudanças
nos dados. Na Figura 8.6 apresentamos as margens com os dados apresentados na
Figura 8.4 alterando apenas uma observação no conjunto de dados.
Apresentamos uma solução que considera que os dados sejam linearmente se-
paráveis. No entanto, em diversas situações isso não ocorre. Assim, a formulação
utilizada pelo SVM se propõe a resolver uma generalização do problema descrito
anteriormente, de modo que seja permitido que alguns dos pontos estejam do lado
errado” das margens (e eventualmente do hiperplano). Matematicamente, o SVM
busca pela solução de
argmax
β
M
153
8.2. Support Vector Machines (SVM)
Figura 8.6: Exemplo de alteração nos vetores de suporte e margem devido a somente
uma observação.
sujeito às restrições
(1) ∑d
i=1 β2
i = 1 e
(2) para todo i = 1,...,n, yi fβ(xi) ≥ M(1 − ei), em que ei  0 e ∑n
i=1 ei ≤ C.
Note que ei pode ser maior que um, de modo que é permitido que yi fβ(xi) seja
negativo, ou seja, que a i-ésima amostra fique do lado errado do hiperplano. O quão
longe ela fica, contudo, é limitado por C, uma vez que ei não pode ser maior que
C. Assim, C é hiperparâmetro (tuning parameter): quanto maior é seu valor, mais se
permite que observações estejam do lado errado” das margens.
Utilizando-se o truque do kernel (Seção 4.6.3.2), pode-se buscar por divisões mais
complexas que hiperplanos. A ideia central é que a solução ótima f (x) do SVM pode
ser reescrita como
f (x) = β0 + β1x1 + ... + βdxd = β0 +
n
∑
k=1
αkhx,xki, (8.3)
em que hx,xki = ∑d
i=1 xixk,i. Assim, para calcular f (isto é, os coeficientes αk), tudo
o que precisamos é do produto interno entre todas as observações. Pode-se também
mostrar que, para calcular αk, também necessita-se apenas dos produtos internos en-
tre as observações. Podemos, portanto, trocar hx,xki por um kernel genérico K(x,xk)
e, assim, utilizar o truque do kernel. Além disso, para todos os pontos que não são
154
Capítulo 8. Métodos de classificação
vetores de suporte, os valores de αi serão iguais a zero. Dessa forma, podemos rees-
crever a Equação 8.4 como:
f (x) = β0 + ∑
k∈S
αkhx,xki, (8.4)
em que S indica o conjunto de todos os vetores de suporte.
Support Vector Machines também estão ligados a Reproducing Kernel Hilbert
Spaces (Seção 4.6). Pode-se mostrar que, dado um kernel de Mercer K, o classificador
g dado pelo SVM é aquele que minimiza
arg min
g∈HK
n
∑
k=1
L(g(xk),yk) + λ||g||2
HK
,
em que L(g(xk),yk) = (1 − ykg(xk))+ (Pontil, 2003). Assim, pode-se utilizar o Te-
orema da Representação (Teorema 6) para encontrar os valores dos coeficientes αk
da Equação 8.4. Note que a perda L é zero quando yg(x)  1. No caso linear, essa
restrição indica que (x,y) está do lado correto do hiperplano definido por g e x está
a uma distância de ao menos 1/||g||K do hiperplano. Ou seja, a perda é zero quando
o exemplo é classificado corretamente de forma fácil. Note também que, no caso
separável, essa função objetivo indica (como esperado) que o SVM procura, entre
todos os hiperplanos separados, aquele com maior margem (isto é, maior valor de
1/||g||K).
O ajuste do SVM pode ser feito no R via o pacote e1071.
library(e1071)
# Kernel Linear
tune_out - tune(svm, train.x = X_treino,
train.y = y_treino,
kernel = linear, scale = TRUE,
ranges = list(cost = c(0.001,0.01,0.1,1,10)))
plot(tune_out)
melhor_modelo - tune_out$best.model
y_pred - predict(melhor_modelo, X_teste)
155
8.3. Árvores de Classificação
# Kernel Gaussiano
tune_out - tune(svm, train.x = X_treino,
train.y = y_treino,
kernel = radial, scale = TRUE,
ranges = list(cost = c(5,10,20),
gamma = c(0.001,0.01,0.05)))
plot(tune_out)
melhor_modelo - tune_out$best.model
y_pred - predict(melhor_modelo, X_teste)
8.3 Árvores de Classificação
Árvores de regressão podem ser utilizadas para resolver problemas de classifica-
ção considerando a ideia descrita na Seção 8.1.1. Alternativamente, pode-se utilizar
árvores de classificação, que são o análogo de árvores de regressão (Seção 4.8), mas
com a finalidade específica de se fazer classificação. Sua construção se dá de forma
análoga à descrita naquela seção. Em particular, o processo de criar uma árvore
grande e depois podá-la também ocorre. No entanto, é necessário fazer algumas
adaptações. Primeiramente, a predição para a resposta Y de uma observação com
covariáveis x que estão em uma região Rk não é mais dada pela média amostral das
observações do conjunto de treinamento que pertecem à essa região (Equação 4.19),
mas sim pela moda destas:
g(x) = moda{yi : xi ∈ Rk}. (8.5)
Além disso, o critério utilizado para buscar a melhor partição em cada etapa
do processo (I) também é diferente, uma vez que o erro quadrático (por exemplo,
Equação 4.20) já não faz mais sentido. Um critério muito utilizado é o índice de Gini:
∑
R
∑
c∈C
b
pR,c(1 − b
pR,c),
em que R representa uma das regiões induzidas pela árvore e b
pR,c é a proporção de
observações classificadas como sendo da categoria c entre as que caem na região R.
156
Capítulo 8. Métodos de classificação
Este índice é mínimo quando todas as proporções b
pR,c são zero ou um, indicando
assim uma árvore pura” (isto é, cada folha contém somente observações de uma
única classe). Portanto, na prática, busca-se minimizar esse índice.
Exemplo 8.3. Para ilustrar uma aplicação do índice de Gini, considere a situação
em que se deseja predizer se um hospital possui tomógrafo. Para isso contamos
com informações sobre a presença de especialidade em cardiologia e se o hospital
apresenta mais de 100 leitos. Os dados são apresentados na Tabela 8.2.
Tabela 8.2: Dados fictícios do Exemplo 8.3.
Cardiologia Acima de 100 leitos Possui tomógrafo
Sim Sim Sim
Sim Não Sim
Sim Sim Não
Sim Não Não
Não Sim Sim
Não Sim Sim
Não Não Não
Não Não Não
Não Sim Sim
Não Sim Sim
Assim, para determinar qual será a melhor partição (cardiologia ou acima de 100
leitos), utilizaremos o índice de Gini. Lembre-se que queremos determinar a partição
que apresenta a maior pureza”, ou seja, o menor valor do índice. Dessa forma,
teremos:
• Gini(Cardiologia) = 2
4 × 2
4 + 4
6 × 2
6 = 0.472
• Gini(Leitos) = 5
6 × 1
6 + 1
4 × 3
4 = 0.326
Logo, a partição que apresenta a maior pureza” é dada pela partição da variável
leitos.
Observação 8.2. À primeira vista, pode-se estranhar o fato do índice de Gini ser
utilizado ao invés de, por exemplo, a proporção de erros. O motivo desta escolha é
157
8.4. Bagging e Florestas Aleatórias
que o índice de Gini é mais sensível a mudanças nas proporções de cada categoria
nos nós.
Para a etapa da poda, em geral, utiliza-se a proporção de erros no conjunto de
validação como estimativa do risco.
Assim como em árvores de regressão, podemos fazer árvores de classificação no
R utilizando o pacote rpart.
set.seed(123)
library(rpart)
# Ajustar a árvore:
fit - rpart(Species ~ .,
method = class, data = iris)
# poda:
melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]),
CP]
pfit - rpart::prune(fit, cp = melhor_cp)
# plotar árvore podada
rpart.plot(pfit)
A Figura 8.7 ilustra a árvore gerada pelo código acima no R.
8.4 Bagging e Florestas Aleatórias
Tanto o bagging quanto florestas aleatórias, vistos no contexto de regressão na Se-
ção 4.9, podem ser trivialmente adaptados para classificação. Para tanto, a agregação
das diferentes árvores de classificação é feita através da função
g(x) = moda{gb
(x),b = 1,...,B}
158
Capítulo 8. Métodos de classificação
Figura 8.7: Árvore de classificação já podada.
ou seja, uma observação com covariáveis x é classificada por cada árvore construída
e, posteriormente, a predição é dada pela categoria predita com maior frequência.
No R, isso é feito pelo pacote randomForests ou ranger.
8.5 Boosting
Assim como no boosting de regressão (Seção 4.10), métodos de boosting também
podem ser utilizados para agregar classificadores fracos de forma a construir um
classificador mais poderoso. Aqui descreveremos uma forma de boosting específica,
o Adaboost.M1 (Freund e Schapire, 1995). Para tanto, assuma que yi ∈ {−1,1} e
x ∈ Rp. Lembre-se que, nesse contexto, utilizaremos classificadores sequenciais gb(x)
com b = 1,...,B. Portanto, o b-ésimo classificador dependerá diretamente do (b − 1)-
ésimo classificador.
A seguir, apresentamos o algoritmo para obter o classificador.
1. Inicialize os pesos w1 = ... = wn = 1
n . Note que, inicialmente, todas as obser-
vações recebem o mesmo peso.
2. Para b = 1,...,B:
(a) Ajuste um classificador gb(x) para a amostra de treinamento utilizando
os pesos w1,...,wn
(b) Calcule o erro ponderado errb = ∑n
i=1 wiI(yi,gb(xi))
∑n
i=1 wi
,
(c) Calcule αb = log((1 − errb)/errb)
159
8.5. Boosting
Figura 8.8: Peso do b-ésimo classificador em função do erro ponderado.
(d) Atualize wi ← wi exp{αbI(yi , gb(xi))}, i = 1,...,n
3. Retorne o modelo final g(x) = sinal

∑B
b=1 αbgb(x)

Em geral, o passo 2a) desse método é executado utilizando-se um classificador
bastante simples, como por exemplo uma árvore com 4 folhas. Já o passo 2c) apre-
senta o peso que o b-ésimo classificador terá no classificador combinado. Note que,
quanto maior a proporção de erro do classificador, menor o peso ele terá na combina-
ção final (Figura 8.8). Em particular, se errb  50%, então αb  0, ou seja, as predições
de gb são invertidas no classificador final. Esta inversão se dá pois o classificador −gb
tem erro menor que 50% nesta situação.
A atualização dos pesos dada por wi ← wi exp(αbI(yi , gb(xi))) tende a fazer
com que observações classificadas erroneamente por gb recebam peso maior no ajuste
de gb+1. Já as observações classificadas corretamente permanecem com peso wi pois,
nesse caso, wi ← wi exp(αbI(yi , gb(xi))) = wi exp(αb × 0) = wi.
Para se ajustar o adaboost no R, pode-se utilizar o pacote gbm.
library(gbm)
ajuste - gbm.fit(x = X_treinamento,
y = y_treinamento,
n.trees = 100,
interaction.depth = 1,
160
Capítulo 8. Métodos de classificação
distribution = adaboost)
predito - predict(ajuste, newdata = X_teste,
n.trees = ajuste$n.trees)
8.6 Método dos k Vizinhos Mais Próximos
O método do KNN (Seção 4.3) pode ser trivialmente adaptado para o contexto
de classificação. Para tanto, pode-se definir o classificador
g(x) = modai∈Nx
yi,
em que Nx é o conjunto das k observações mais próximas de x (como definido na
Seção 4.3). Assim, busca-se a classe mais frequentemente entre as observações mais
próximas ao vetor de covariáveis x de interesse.
No R, esse método pode ser utilizado pelo pacote FNN.
library(FNN)
ajuste - knn(train = X_treinamento,
test = X_teste,
cl = y_treinamento,
k = k)
preditos - ajuste$pred
8.7 Redes Neurais Artificiais
Redes neurais artificiais (Seção 4.11) também podem ser utilizadas no contexto
de classificação. A estrutura da rede é essencialmente a mesma, contudo, em geral,
há algumas diferenças:
• Ao invés de buscar apenas uma função de predição gβ, estima-se |C| funções,
gβ,1,...,gβ,|C|, uma para cada categoria que a variável resposta pode assumir,
161
8.7. Redes Neurais Artificiais
veja a Figura 8.9. A i-ésima dessas funções representa a probabilidade de Y
assumir a categoria i, i = 1,...,|C|.
• Utiliza-se uma função de ativação f diferente da linear na camada de saída.
Pode-se utilizar, por exemplo, a função softmax:
fi(z) =
ezi
∑
|C|
j=1 ezj
.
Aqui, z representa o vetor que contém todas as entradas na última camada e fi
é a função de ativação do i-ésimo neurônio da camada de saída. Essa função
de ativação garante que as saídas estejam entre zero e um e que o vetor some
1.
• A função objetivo a ser minimizada também não é mais o EQM. Pode-se utili-
zar, por exemplo, a entropia cruzada, dada por
CE(gβ,1,...,gβ,|C|) = −
1
n
n
∑
k=1
∑
c∈C
I(yk = c)log(gβ;c(xk))
x1
x2
x3
gβ;1(x)
gβ;2(x)
gβ;3(x)
gβ;4(x)
Camada
Oculta
Camada
de
entrada
Camada
de saída
Figura 8.9: Exemplo de rede neural de classificação com uma camada oculta no caso
em que Y assume quatro possíveis valores.
162
Capítulo 8. Métodos de classificação
8.8 Exemplos
Exemplo 8.4 (Amazon Fine Food Reviews). A seguir iremos trabalhar novamente
com o conjunto de dados Amazon Fine Food Reviews (apresentado no Exemplo 3.3).
No entanto, nesse momento, trabalharemos com as notas categorizadas em máxima
(escore igual a 5) vs demais (escore de 0 a 4).
Nesse exemplo utilizaremos 40.000 observações de treinamento e 10.000 de vali-
dação. Iremos utilizar regressão logística com máxima verossimilhança, penalização
ridge e penalização lasso. Também utilizaremos árvore e floresta para a classificação.
library(data.table)
library(tm)
library(glmnet)
library(rpart)
library(rpart.plot)
library(xgboost)
library(ranger)
Primeiramente, faremos a leitura e transformação dos dados em uma matriz
documento-termo (Apêndice A.2).
dados - fread(../dados/Reviews.csv, header = TRUE)
set.seed(1)
# seleciona 50.000 observações
dados - dados[sample(nrow(dados), 50000),]
# indica observações de treinamento
tr - sample.int(50000, 40000, replace = FALSE)
# categoriza escore
dados$Score - ifelse(dados$Score = 4, 0, 1)
corp - VCorpus(VectorSource(dados$Text))
dtm - DocumentTermMatrix(corp,
163
8.8. Exemplos
control =
list(tolower = TRUE,
stemming = FALSE,
removeNumbers = TRUE,
removePunctuation = TRUE,
removeStripwhitespace = TRUE,
weighting = weightTf,
bounds =
list(global = c(50, Inf))))
dtmMatrix - sparseMatrix(i = dtm$i, j = dtm$j, x = dtm$v,
dimnames = list(NULL,
dtm$dimnames[[2]]),
dims = c(dtm$nrow, dtm$ncol))
Após a leitura dos dados, iremos ajustar os modelos de regressão logística com
mínimos quadrados, ridge e lasso. Iremos atribuir a classe de escore 5 aos indiví-
duos do conjunto de validação que apresentarem probabilidade dessa classe maior
ou igual a proporção de escore 5 no conjunto de treinamento (veja a Seção 9.1 para
uma justificativa para esse critério). Note que, para essas técnicas, estamos utili-
zando o formato esparso para a matrix documento-termo.
# logística sem penalização
ajuste_glm - glmnet(dtmMatrix[tr,], dados$Score[tr],
family = binomial, alpha = 0, lambda = 0)
predito_glm - ifelse(predict(ajuste_glm, s = 0,
newx = dtmMatrix[-tr,],
type = response) =
mean(dados$Score[tr]), 1, 0)
# logística com penalização ridge
vc_ridge - cv.glmnet(dtmMatrix[tr,], dados$Score[tr],
family = binomial, alpha = 0)
164
Capítulo 8. Métodos de classificação
predito_ridge - ifelse(predict(vc_ridge,
s = vc_ridge$lambda.1se,
newx = dtmMatrix[-tr,],
type = response) =
mean(dados$Score[tr]), 1, 0)
# logística com penalização lasso
vc_lasso - cv.glmnet(dtmMatrix[tr,], dados$Score[tr],
family = binomial, alpha = 1)
predito_lasso - ifelse(predict(vc_lasso,
s = vc_lasso$lambda.1se,
newx = dtmMatrix[-tr,],
type = response) =
mean(dados$Score[tr]), 1, 0)
Para a árvore de classificação, será necessário fazer uma conversão para um
data.frame.
dtmMatriz - data.frame(as.matrix(dtmMatrix))
# organiza dados para o formato utilizado em rpart
dtmMatrixArvore - cbind(Score = as.factor(dados$Score),
dtmMatriz)
# ajuste da arvore
arvore - rpart(Score ~., method = class,
data = dtmMatrixArvore[tr,])
# poda
min_error - which.min(arvore$cptable[,xerror])
melhorCp - arvore$cptable[min_error, CP]
poda - rpart::prune(arvore, cp = melhorCp)
165
8.8. Exemplos
Figura 8.10: Árvore de classificação já podada para os dados da Amazon Fine Food
Reviews.
# predito árvore
predito_arvore - predict(poda, dtmMatrixArvore[-tr, -1],
type = class)
# arvore
rpart.plot(poda, type = 4, extra = 102)
A Figura 8.10 ilustra a árvore podada gerada pelo código acima. Nessa figura,
o primeiro número na forma geométrica indica a classe a qual o indivíduo é clas-
sificado em cada nó/folha, o número de classificações corretas em cada nó com o
número de classificações em cada nó e, por fim, a porcentagem de observações em
cada nó relativa ao total.
Para ajustar a floresta aleatória, utilizamos o pacote ranger.
166
Capítulo 8. Métodos de classificação
Figura 8.11: Importância obtida com floresta aleatória para os dados da Amazon
Fine Food Reviews.
floresta - ranger(Score ~ ., data = dtmMatrixArvore[tr,],
num.trees = 500,
importance = impurity,
write.forest = TRUE,
verbose = FALSE)
predito_floresta - predict(floresta,
data = dtmMatrixArvore[-tr, -1])
A Figura 8.11 mostra a importância das dez covariáveis mais importântes se-
gundo florestas aleatórias.
Ajustaremos o boosting via o pacote xgboost.
bst - xgboost(data = dtmMatrix[tr,],
label = dados$Score[tr], nthread = 7,
nround = 1000,
objective = binary:logistic,
verbose = FALSE,lambda = 0.01)
predicoes - predict(bst, dtmMatrix[-tr,])
predito_bst - ifelse(predicoes  mean(dados$Score[tr]), 1, 0)
167
8.8. Exemplos
A Tabela 8.3 mostra que regressão logística, regressão logística com penalização
ridge e regressão logística com penalização lasso apresentam um desempenho muito
semelhante, com uma ligeira vantagem para lasso. A árvore apresentou o pior de-
sempenho geral e de especificidade entre todas as técnicas, embora tenha apresen-
tado a segunda melhor sensibilidade. A floresta apresenta um desempenho geral
muito próximo ao das três técnicas citadas anteriormente. No entanto, apresenta
uma sensibilidade melhor e uma baixa especificidade. Já XGBoost apresentou o me-
lhor dos resultados com respeito à porcentagem total de acerto.
Tabela 8.3: Desempenho preditivo (em porcentagem) dos métodos Mínimos Qua-
drados, Ridge, Lasso, Árvore e XGBoost.
Método Acurácia Sensibilidade Especificidade
Logística MV 78.5 80.0 75.9
Logística Ridge 79.9 81.0 77.8
Logística Lasso 79.5 80.3 78.2
Árvore 68.8 88.6 34.1
Floresta Aleatória 81.1 93.6 59.3
XGBoost 81.7 84.6 76.7
168
Capítulo 9
Outros Aspectos de
Classificação
9.1 Assimetria na Função de Perda, Conjuntos de Da-
dos Desbalanceados e Outros Cortes
Confidence is what you have
before you understand the
problem.
Woody Allen
Como discutimos na Seção 7.4, nem sempre o risco R(g) := E[I(Y , g(X))] =
P(Y , g(X)) é razoável para avaliar o desempenho do classificador g. Isso acontece
porque a função de perda I(g(X) , Y) atribui perda 1 para todo tipo de erro come-
tido. Isso não é adequado em muitas situações. Por exemplo, erros de diferentes
tipos podem ter diferentes custos. Considere o exemplo em que temos pacientes do-
entes (Y = 1) e saudáveis (Y = 0). Neste caso, se desejamos fazer um classificador
para screening da doença, queremos um classificador que não classifique de forma er-
rada pacientes que têm a enfermidade, enquanto que o erro oposto não é tão grave.
Assim, a função de perda I(g(X) , Y) não captura esse objetivo. De fato, se a doença
é rara e as covariáveis não tem informação muito forte sobre Y, P(Y = 1|x) será sem-
pre pequena e, portanto, o classificador de Bayes (I(P(Y = 1|x) ≥ 0.5)) será o clas-
169
9.1. Assimetria na Função de Perda, Conjuntos de Dados Desbalanceados e Outros Cortes
sificador trivial g(x) ≡ 0. Como métodos de classificação frequentemente buscam
aproximar o classificador de Bayes, naturalmente eles também irão se aproximar do
classificador trivial neste caso.
Existem diversas formas de contornar este problema. Uma abordagem comum
consiste em buscar cortes diferentes de 1/2 em classificadores probabilísticos, isto é,
buscar regras do tipo
g(x) = I(b
P(Y = 1|x) ≥ K)
para diferentes cortes K. Uma forma de escolher K se dá com a utilização da curva
ROC (Receiver operating characteristic), que mostra como a sensibilidade varia com a
especificidade para diferentes valores de K. Para um exemplo, veja a Figura 9.1. Note
que, para evitar que a sensibilidade e especificidade sejam subestimadas, esse gráfico
deve ser feito com o conjunto de validação ou teste, nunca com o de treinamento.
É comum escolher K que maximize o valor de Sensibilidade+Especificidade,
embora esta não seja a única abordagem existente. Diferentes classificadores podem
dar importâncias diferentes para essas medidas.
Alternativamente, pode-se definir o risco com base em outra outra função de
perda que considere que erros diferentes podem ser penalizados de forma distinta.
Por exemplo, pode-se tomar
R(g) = E[(l1I(Y , g(X) e Y = 0)) + (l0I(Y , g(X) e Y = 1))] =
= l1P(Y , g(X) e Y = 0) + l0P(Y , g(X) e Y = 1),
em que l1 e l0 são pesos (custos) escolhidos para cada um dos tipos de erro. A função
g(x) que minimiza R(g) é dada por
g(x) = I

P(Y = 1|x) 
l1
l0 + l1

.
Essa fórmula mostra como o corte de classificadores plugin podem ser escolhidos
de acordo com os pesos dos diferentes tipos de erro que podem ser cometidos1.
Em particular, se escolhemos l0 = π0 (a probabilidade de uma observação perten-
cer à classe Y = 0) e l1 = π1 (a probabilidade de uma observação pertencer à classe
Y = 1) em um contexto em que P(Y = 0)  P(Y = 1), esse risco dá maior im-
1A ideia de atribuir custos diferentes pode também ser usada no caso em que Y pode assumir mais
que duas categorias. Neste caso, o classificador ótimo tem o formato argmind∈C cdP(Y = d|x), em que cd
é função dos custos especificados.
170
Capítulo 9. Outros Aspectos de Classificação
Figura 9.1: Exemplo de curva ROC da análise discriminante linear para o conjunto
de dados de spams do Exemplo efex::spam
portância do erro de uma observação da classe 1 ser classificada como pertencente
à classe 0 e menor importância ao erro de uma observação da classe 0 ser classi-
ficada como pertencente à classe 1. Nesse caso, a função g(x) que minimiza R(g)
é dada por g(x) = I(P(Y = 1|x)  π1). Isso motiva o uso do classificador plugin
I(b
P(Y = 1|x) ≥ b
P(Y = 1)) em que b
P(Y = 1) é a proporção amostral da classe de
interesse. Ou seja, ao invés de se utilizar 1/2 como corte, utiliza-se b
P(Y = 1).
Para classificadores que não são baseados na estimação de P(Y = 1|x), outras
abordagens são utilizadas. Por exemplo, a atribuição de pesos maiores a observa-
ções da categoria menos frequente. Esses pesos são então utilizados de modo que
a contribuição de cada observação na criação do classificador seja proporcional ao
peso por ela recebida. A forma como estes pesos são utilizados depende do método
de classificação em questão. Também é possível alterar artificialmente a prevalência
de cada categoria na amostra de treinamento com super-sampling ou sub-sampling.
Mesmo que essas abordagens sejam úteis, é importante lembrar que a fonte do pro-
blema não é o desbalanceamento, mas sim os custos de classificação serem diferen-
tes, de modo que o classificador de Bayes não é um bom classificador (já que ele é
criado para minimizar apenas a probabilidade de erro).
171
9.3. Dataset Shift e Viés de Seleção
9.2 Classificação vs Estimação de Probabilidades
Hope is the confusion of the desire
for a thing with its probability.
Arthur Schopenhauer
Embora classificadores plug-in requeiram uma estimativa de P(Y = 1|x), uma
estimativa que leva a boas classificações não é necessariamente uma estimativa ra-
zoável. Isso ocorre pois um classificador plug-in pode estar muito próximo ao clas-
sificador de Bayes mesmo sem que b
P ≈ P: para o classificador plug-in, basta saber
se uma probabilidade estimada é menor ou maior que o corte C. Assim, sempre
que b
P(Y = 1|x) − C tem o mesmo sinal que P(Y = 1|x) − C, o classificador plug-in
concorda com o classificador de Bayes nesta observação.
Em muitas situações, diferente do objetivo comentado anteriormente, é impor-
tante estimar P bem. Por exemplo, frequentemente desejamos ordenar as observa-
ções segundo b
P para tomar decisões. Outra aplicação se dá inferência conformal
(Seção 6.3), em que a consistência de b
P é necessária para criar regiões de predições
pequenas. Assim, se o objetivo é estimar bem P, outras funções de perda devem ser
utilizadas como, por exemplo, a entropia cruzada (log-verossimilhança) ou o score
de Brier, que são medidas próprias (Diniz et al., 2019; Lad, 1996). Em particular, é
comum a utilização desses critérios para escolher tuning parameters para métodos de
classificação probabilísticos, como na regressão logística com penalização.
9.3 Dataset Shift e Viés de Seleção
I have not failed. I’ve just found
10,000 ways that won’t work.
Thomas Edison
Em uma parcela significativa de problemas de predição, a suposição básica de
que as observações onde um classificador será aplicado são identicamente distribuí-
das às observações rotuladas utilizadas para construir g não é razoável. Esta situação
é chamada de dataset shift (Sugiyama et al., 2017).
Muitas vezes, o dataset shift ocorre devido a um viés de seleção que faz com que os
dados rotulados tenham características diferentes daqueles em que os classificadores
172
Capítulo 9. Outros Aspectos de Classificação
serão aplicados. Por exemplo, em pesquisas cosmológicas que para estimar a distân-
cia de uma galáxia até a Terra (Exemplo 1.2), é muito mais fácil observar a distância
real de galáxias que são luminosas (Freeman et al., 2017; Izbicki et al., 2017) do que
galáxias pouco luminosas. Isso faz com que o conjunto rotulado tenha mais galáxias
luminosas que o conjunto ao qual os métodos de predição serão aplicados.
Dataset shift também pode ocorrer quando se utiliza dados de um certo domínio
(por exemplo, resenhas da Amazon) para criar um classificador que será aplicado
em outro domínio (por exemplo, textos do Twitter).
Para que seja possível aprender algo com o conjunto rotulado, é necessário fa-
zer algumas suposição sobre como esse conjunto se relaciona ao conjunto em que
o classificador será aplicado. Nesta seção descreveremos duas suposições: covariate
shift (Seção 9.3.1) e prior shift (Seção 9.3.2). Em ambas as seções, assumiremos que o
conjunto rotulado é dado por observações i.i.d.’s (XL
1 ,YL
1 ),...,(XL
nL
,YL
nL
), enquanto o
conjunto em que a função de predição será aplicada é dado por observações i.i.d.’s
(XU
1 ,YU
1 ),...,(XU
nU
,YU
nU
). Note que os valores de YU
1 ,...,YU
nU
não são observados.
9.3.1 Covariate Shift
A suposição de covariate shift consiste em assumir que YL|XL ∼ YU|XU, de modo
que a distribuição conjunta de (XL,YL) difere de (XU,YU) apenas segundo a distri-
buição marginal das covariáveis. Outra caracterização desta suposição é a de que o
processo de escolha de que amostras serão rotuladas depende apenas das covariá-
veis medidas (veja Izbicki et al. 2017 para maior detalhamento).
À primeira vista, pode parecer que o covariate shift não é um problema para pro-
blemas de predição: como a distribuição de Y|x é a mesma em ambos os conjuntos
de dados, então P(YL = 1|xL) = P(YU = 1|xU). Assim, a quantidade P(YU = 1|xU),
que é essencial para criar classificadores plug-in, é a mesma no conjunto rotulado e
no conjunto de interesse. Note, contudo, que isso não implica que um estimador
razoável de P(YL = 1|xL), segundo o conjunto rotulado, tenha bom desempenho no
conjunto não-rotulado: frequentemente P(YL = 1|xL) estará bem estimado somente
em regiões em que há bastantes dados rotulados, e essas regiões não necessariamente
coincidem com regiões em que há bastantes dados não-rotulados; veja a Figura 9.2
para um exemplo no contexto de regressão. Levando em consideração apenas o con-
junto rotulado, a reta azul parece ter bom desempenho, contudo isso não ocorre para
o conjunto não-rotulado.
173
9.3. Dataset Shift e Viés de Seleção
Figura 9.2: Ilustração do covariate shift em uma regressão linear: a linha azul é ra-
zoável para predizer novos dados do conjunto rotulado, mas ela está longe de ser
ótima para o conjunto não-rotulado.
Sob uma perspectiva estatística, o problema ocorre porque a função de risco uti-
lizada para construir o método de predição depende da distribuição de X. Assim,
um estimador que tem bom desempenho com respeito a fL(x) não necessariamente
tem bom desempenho com respeito a fU(x).
Em cenários com covariate shift, enfrentamos dois problemas:
(i) como comparar métodos de predição
(ii) como construir bons métodos de predição.
Uma solução para ambos os problemas é atribuir pesos a cada observação ro-
tulada de modo que a distribuição ponderada do conjunto rotulado seja próxima
à distribuição do conjunto não-rotulado. Mais especificamente, a ideia chave para
resolver (i) é notar que uma função de risco razoável é o risco sob a distribuição do
conjunto não-rotulado, E[L(g(XU),YU)], em que L é uma função de perda (veja a Ob-
servação 1.2). Sob a suposição de covariate shift, este se relaciona com a distribuição
174
Capítulo 9. Outros Aspectos de Classificação
do conjunto rotulado da seguinte maneira:
R(g) := E[L(g(XU
),YU
)] =
Z
L(g(x),y)fU(y|x)fU(x)dxdy =
=
Z
L(g(x),y)fL(y|x)
fU(x)
fL(x)
fL(x)dxdy
= E
h
L(g(XL
),YL
)β(XL
)
i
, (9.1)
em que
β(x) =
fU(x)
fL(x)
.
A função β(x) é responsável por ponderar cada observação x de acordo com sua
frequência no conjunto não-rotulado. Na prática, essa função deve ser estimada.
Uma forma de se fazer isso é estimando a densidade de x no conjunto rotulado e no
conjunto não-rotulado separadamente (pode-se utilizar, por exemplo, um estimador
de densidade por kernel (Parzen, 1962)).
Um estimador alternativo para β(x) consiste em criar o conjunto dados aumen-
tado
(XL
1 ,S1),...,(XL
nL
,SnL
),(XU
1 ,SnL+1),...,(XU
nU
,SnL+nU
),
em que Si = I(1 ≤ i ≤ nL) é um indicador da amostra ser rotulada. Com base nessa
amostra, estima-se então P(S = 1|x), a probabilidade de uma unidade amostral ser
proveniente da amostra rotulada (utilizando, por exemplo, uma regressão logística).
Como
β(x) =
P(S = 1)
P(S = 0)
P(S = 0|x)
P(S = 1|x)
,
pode-se, então, estimar β com
b
β(x) :=
b
P(S = 0)
b
P(S = 1)
b
P(S = 1|x)
b
P(S = 0|x)
.
Seja b
β uma estimativa de β. A Equação 9.1 indica que uma forma de se estimar o
risco de um método de predição g no conjunto não-rotulado é utilizar
b
R(g) =
1
ñL
ñL
∑
k=1
L(g(X̃L
k ),ỸL
k )b
β(X̃L
k ),
em que (X̃L
1 ,ỸL
1 ),...,(X̃L
ñL
,ỸL
ñL
) é uma amostra de validação do conjunto rotulado.
175
9.3. Dataset Shift e Viés de Seleção
Isto é, com os pesos, pode-se estimar o risco de interesse utilizando-se apenas a
amostra rotulada.
O estimador b
R pode ser utilizado para se comparar diversos modelos. Note,
contudo, que se β é muito alto para alguns pontos, o estimador do risco terá desem-
penho ruim, uma vez que consistirá efetivamente em avaliar a função de perda em
apenas algumas observações. Em particular, β(x) assume o valor zero em regiões
do espaço amostral em que há apenas observações não-rotuladas, de modo que a
suposição de covariate shift não é útil nesse caso.
Os pesos b
β também podem ser utilizados para responder (ii), isto é, para criar
funções de predição com bom poder preditivo no conjunto não-rotulado. Isso pode
ser feito utilizando versões ponderadas dos métodos de predição estudados nesse
livro. Por exemplo, a função glmnet do R permite que pesos sejam passados como
um dos argumentos para o modelo a ser ajustado.
Note que a solução apresentada aqui para o problema de viés de seleção sob
covariate shift pode ser utilizada tanto para problemas de classificação quanto para
problemas de regressão, bastanto utilizar uma função de perda L adequada para
cada problema.
9.3.2 Prior Shift
A suposição de prior shift consiste em assumir que XL|YL ∼ XU|YU, de modo que
a distribuição conjunta de (XL,YL) difere de (XU,YU) apenas segundo a distribuição
marginal da variável resposta. Como P(YU = 1) , P(YL = 1), então P(YU = 1|xU) ,
P(YL = 1|xL), de modo que alguma correção deve ser feita para estimar P(YU =
1|xU). Pode-se mostrar que, sob a suposição de prior shift (Saerens et al., 2002),
P(YU
= 1|xU
) =
P(YU=1)
P(YL=1)
P(YL = 1|xL)
∑1
i=0
P(YU=i)
P(YL=i)
P(YL = i|xL)
.
Assim, para se estimar P(YU = 1|xU) basta estimar:
• P(YL = 1|xL), que pode ser feito utilizando as técnicas de classificação via
estimação de probabilidades apresentadas na Parte II deste livro;
• P(YL = 1), que pode ser feito utilizando a proporção de amostras com rótulo
Y = 1 na amostra rotulada;
176
Capítulo 9. Outros Aspectos de Classificação
• P(YU = 1), que é um termo mais complicado para ser estimado.
Em muitos problemas, uma estimativa razoável de P(YU = 1) é conhecida de
antemão. Por exemplo, considere um estudo caso-controle para criar um classifica-
dor para determinar se um paciente tem determinada doença. Nesse caso, a amostra
rotulada é criada de modo que o número de pacientes doentes (e não doentes) inves-
tigados seja um número pré-fixado anteriormente. Assim, a proporção de doentes
na amostra é diferente da proporção de doentes na população, P(YU = 1). Contudo,
P(YU = 1) é frequentemente conhecido devido a estudos prévios.
Quando P(YU = 1) não é conhecida, é necessário estimá-la. Um método bastante
popular para estimar essa quantidade foi desenvolvido por (Forman, 2006). Esse
método consiste em notar que, se g(x) é um classificador, então (Vaz et al., 2019)
P(YU
= 1) =
P(g(XU) = 1) − P(g(XL) = 1|YL = 0)
P(g(XL) = 1|YL = 1) − P(g(XL) = 1|YL = 0)
.
Todos os termos desta equação podem ser facilmente estimados utilizando o con-
junto de dados disponível.
9.4 Combinando Classificadores
Combinar diversos classificadores construídos com base no mesmo conjunto de
treinamento pode levar a um classificador com poder preditivo ainda maior. Bag-
ging, florestas aleatórias e boosting (Seções 8.4 e 8.5) são algumas formas de se fazer
isso. Como vimos, enquanto bagging e florestas aleatórias foram criados para com-
binar funções de predição aproximadamente não viesadas (mais especificamente, ár-
vores sem poda); boosting combina classificadores fracos. Existem, contudo, outras
formas de se combinar classificadores; nesta seção exploramos uma delas, o blending
(muitas vezes chamado de stacked ensembling).
A ideia deste método é criar um meta-classificador, treinado com covariáveis dadas
pelas predições dos modelos a serem combinados. Mais especificamente, divide-se
o conjunto de treinamento em duas partes: treinamento (por exemplo, 90%) e en-
semble set (por exemplo, 10%). Sejam g1,...,gB as funções de predição treinadas
utilizando-se o conjunto de treinamento. Essas funções podem ser obtidas obtidas
a partir de quaisquer métodos (por exemplo, regressão logística, SVM, florestas ale-
atórias etc). Denotando o ensemble set por (x̃1,ỹ1),...,(x̃ñ,ỹñ), ajustamos então um
177
9.4. Combinando Classificadores
classificador para o conjunto (w̃1̃,ỹ1̃),...,(w̃ñ,ỹñ), em que w̃i = (g1(x̃i),...,gB(x̃i)).
Exemplo 9.1 (Detecção de SPAMs). Considere novamente o conjunto de dados spam
do Exemplo 8.1. Ajustamos aqui os seguintes métodos: análise discriminante linear,
regressão logística com penalização L1, florestas aleatórias e SVM. Para combinar os
modelo, utilizamos a regressão logística.
Tabela 9.1: Coeficientes encontrados pela regressão logística do modelo ensemble. A
floresta aleatória recebe o maior peso na combinação.
Coeficientes
Intercepto -5.269
Pred. Análise Discriminante Linear -2.152
Pred. Logística L1 3.114
Pred. Floresta Aleatória 8.542
Pred. SVM 0.914
Tabela 9.2: Risco estimado de cada modelo individual e do modelo de ensemble.
Método Risco
Análise Descriminante Linear 0.106
Regressão Logística L1 0.077
FLoresta Aleatória 0.067
SVM 0.073
Ensemble 0.061
A Tabela 9.1 mostra que quase todo o peso do modelo logístico de ensemble foi
dado ao modelo de florestas aleatórias. Isso se justifica porque o desempenho de
florestas aleatórias é semelhante ao do modelo combinado (Tabela 9.2).
Para outros métodos de ensemble, veja Breiman (1996), Coscrato et al. (2020),
Dietterich (2000) e Izbicki e Musetti (2020).
178
Capítulo 9. Outros Aspectos de Classificação
9.5 Teoria do Aprendizado Estatístico
It is a dimension as vast as space
and as timeless as infinity. It is the
middle ground between light and
shadow, between science and
superstition, and it lies between
the pit of man’s fears and the
summit of his knowledge.
The Twilight Zone
Neste seção introduzimos parte da teoria do aprendizado estatístico desenvol-
vida por Cherkassky et al. (1999) e Vapnik (1999), cujo objetivo é fornecer garantias
sobre alguns procedimento de classificação.
Sejam Zi = (Xi,Yi), i = 1,...,n vetores aleatórios i.i.d. e f : Rd+1 −→ R uma
função. Defina
P(f ) := E[f (Z)] e Pn(f ) =
1
n
n
∑
i=1
f (Zi)
e seja
b
f = argmin
f ∈F
Pn(f ) e f ∗
= argmin
f ∈F
P(f ),
em que F é um conjunto de funções de interesse. O principal objetivo da teoria do
aprendizado estatístico é dar garantias sobre o quão longe P( b
f ) está de P(f ∗). Em-
bora a teoria do aprendizado estatístico seja bastante geral, focaremos inicialmente
no problema de classificação:
Exemplo 9.2. No contexto de classificação, podemos tomar f (Z) = I(Y , g(X)),
de modo que P(f ) = R(g) (isto é, é o risco de classificação) e Pn(f ) = b
Rtr(g) :=
1
n ∑n
i=1 I(Yi , g(Xi)) (isto é, é a proporção de erros que g faz no conjunto de treina-
mento). Uma forma de se escolher um classificador é definir
b
g = argmin
g∈G
b
Rtr(g),
em que G é uma classe de classificadores (por exemplo, o conjunto de todos os clas-
179
9.5. Teoria do Aprendizado Estatístico
sificadores lineares). Essa abordagem é chamada de minimização do erro empírico. As-
sim, a teoria do aprendizado estatístico fornece garantias sobre este procedimento.
Mais especificamente, essa teoria fornece garantias sobre o quão longe o risco de b
g
está do risco do oráculo g∗, definido por
g∗
= argmin
g∈G
R(g),
ou seja, o melhor classificador dentro de G (como visto no Teorema 10). Isso decorre
do fato de que ming∈G
b
Rtr(g) = minf ∈F
b
Pn(f ) e ming∈G R(g) = minf ∈F P(f ), em
que F = {f : f (Z) = I(Y , g(X)) para algum g ∈ G}. Note que uma garantia desse
tipo já foi dada no Teorema 10. Contudo, foi considerado apenas o caso em que a
busca é feita sob um número finito de classificadores. A teoria VC apresenta uma
generalização para que a classe de funções possa ser infinita.
A estratégia da teoria do aprendizado estatístico para limitar o quão longe o risco
de b
g está do risco do oráculo g∗ é limitar o quão longe R(g) está de b
Rtr(g) para todo
g ∈ G simultaneamente. Uma forma de se obter este limitante se dá com o Teorema
VC:2
Teorema 11 (Teorema VC). Se F é um conjunto de funções binárias, então, para todo
e 
√
2/n,
P sup
f ∈F
|Pn(f ) − P(f )|  e
!
≤ 4s(F,2n)e−ne2/8
, (9.2)
em que s(F,2n) é o shattering number da classe F para uma amostra de tamanho n.
Assim, com probabilidade ao menos 1 − δ,
sup
f ∈F
|Pn(f ) − P(f )| ≤
s
8
n
log

4s(F,2n)
δ

.
O shattering number s(F,2n) é uma medida de quão complexa e expressiva é a
classe de funções F. Antes de introduzir formalmente essa quantidade, vamos dis-
cutir o motivo desse teorema, de fato, nos ajudar a atingir nosso objetivo. O fato
2VC é a abreviação de Vapnik-Chervonenkis, os sobrenomes dos criadores dessa teoria.
180
Capítulo 9. Outros Aspectos de Classificação
central da teoria VC é que o Teorema 11 implica que, com probabilidade ao menos
1 − 4s(F,2n)e−2ne2/8,
P( b
f ) − P(f ∗
) = P( b
f ) − Pn( b
f ) + Pn( b
f ) − Pn(f ∗
) + Pn(f ∗
) − P(f ∗
)
≤ P( b
f ) − Pn( b
f ) + Pn(f ∗
) − P(f ∗
)
≤ 2e,
onde a primeira desigualdade segue do fato de que, por definição, Pn( b
f ) − Pn(f ∗) ≤
0 e a última desigualdade segue da Equação 9.2. Assim, se n é grande e s(F,2n)
cresce a uma taxa menor que e−ne2/8 (em breve veremos quando esta última condição
ocorre), então com probabilidade alta P( b
f ) ≈ P(f ∗). No contexto de classificação
(Exemplo 9.2), o Teorema 11 garante que
P sup
g∈G
|b
Rtr(g) − R(g)|  e
!
≤ 4s(F,2n)e−ne2/8
,
o que implica que, com probabilidade alta, o risco do estimador encontrado via mi-
nimização de risco empírico estará próximo do risco do oráculo.
Note que, em particular, o Teorema VC garante que, se
4s(F,2n)e−2ne2/8
−
−−−
→
n−→∞
0, então P( b
f )
P
−
−−−
→
n−→∞
P(f ∗
),
isto é, P( b
f ) converge em probabilidade para P(f ∗).
Shattering number. Note que, se F contém apenas funções binárias, então
(f (z1),..., f (zn)) ∈ {0,1}n para todo z1,...,zn e f ∈ F. Seja
F(z1,...,zn) = {(f (z1),..., f (zn)) : f ∈ F}
o conjunto de todos os valores que o vetor (f (z1),..., f (zn)) pode assumir para
z1,...,zn fixos. Se F é uma classe rica de funções, esperamos que F(z1,...,zn) conte-
nha um grande número de vetores. Com base nessa ideia, uma forma de quantificar
a complexidade de uma classe F de funções binárias é através do número máximo
de elementos que F(z1,...,zn) pode ter levando em conta todos os possíveis valores
que z1,...,zn podem assumir. Esta quantidade é chamada de shattering number. Mais
181
9.5. Teoria do Aprendizado Estatístico
especificamente, este número é dado por
s(F,n) := sup
z1,...,zn
|F(z1,...,zn)|.
Note que, necessariamente, s(F,n) ≤ 2n. Quando |F(z1,...,zn)| = 2n, dizemos que
os dados z1,...,zn são destruídos (shattered) por F.
Exemplo 9.3. Seja F = {ft : t ∈ R}, em que ft(z) = I(z  t), z ∈ R. Para quaisquer
z1  ...  zn, temos que
F(z1,...,zn) = {(0,...,0,0),(0,...,0,1),(0,...,1,1),...,(1,...,1,1)}.
Logo |F(z1,...,zn)| = n + 1. Em geral, |F(z1,...,zn)| ≤ n + 1, de modo que, neste
caso, s(F,n) = n + 1.
Uma condição necessária e suficiente para a consistência (em relação ao oráculo)
do procedimento de minimização empírica do risco é que
logs(F,n)/n −→ 0.
Assim, se F é muito complexa (e.g., s(F,n) = 2n) não há consistência.
Dimensão VC. Outro conceito importante na Teoria VC é o de dimensão VC, que
também é uma forma de medir a complexidade de um espaço de funções binárias.
Essa medida é dada por:
VC(F) = sup{n : s(F,n) = 2n
}.
Assim, VC(F) é o maior tamanho amostral n para o qual existe uma amostra z1,...,zn
que é destruída por F. Se F contém uma grande variedade de funções, é razoável
esperar que sua dimensão VC seja grande.
Exemplo 9.4. No Exemplo 9.3, VC(F) = 1, pois s(F,1) = 2 = 21, mas s(F,n) =
n + 1  2n para n  1.
182
Capítulo 9. Outros Aspectos de Classificação
A dimensão VC também está relacionada com o shattering number via o Lema de
Sauer:
Teorema 12 (Lema de Sauer). Se d := VC(F)  ∞, então
s(F,n) ≤
en
d
d
para todo n  d. Além disso, se a dimensão VC é infinita, então s(F,n) = 2n para todo n.
Esse lema é útil pois permite uma forma alternativa para o limitante do Teorema
VC. Mais especificamente, se a dimensão VC d de uma classe F é finita, então o
Teorema VC juntamente com o Lema de Sauer implica que, se n  d, então com
probabilidade ao menos 1 − δ
sup
f ∈F
|Pn(f ) − P(f )| ≤
s
8
n

log

4
δ

+ dlog
ne
d

.
Segue que se a dimensão VC de F é finita, então P( b
f ) converge em probabilidade
para P(f ∗). Além disso, se a dimensão VC de F é infinita, então P( b
f ) não converge
em probabilidade para P(f ∗). Ainda, a dimensão VC caracteriza completamente a
consistência do método de minimização empírica do risco em uma classe de funções.
Exemplo 9.5. [Data splitting] Seja Z1,...,Zn o conjunto de validação em um pro-
blema de classificação e G é uma classe de classificadores parametrizadas por um
tuning parameter λ. A Teoria VC garante que
P sup
g∈G
|b
Rval(g) − R(g)|  e
!
≤ 4s(F,2n)e−ne2/8
,
em que b
Rval é o risco estimado de g pelo conjunto de validação, de modo que ela
fornece limitantes superiores para o quão próximo λ escolhido por data splitting está
do valor ótimo de λ. Além disso, essa teoria implica que o processo de escolha do
melhor λ via data splitting será consistente se, e somente se, a dimensão VC da classe
F = {f : f (Z) = I(Y , g(X)) para algum g ∈ G} for finita. Para outras aplicações da
Teoria VC para data splitting, veja Izbicki et al. (2019) e Izbicki e Stern (2013).
183
9.5. Teoria do Aprendizado Estatístico
9.5.1 Prova do teorema VC
Inicialmente limitaremos o quão longe Pn(f ) está de P(f ) para uma função f fixa.
Uma forma de fazer isso é utilizando a desigualdade de Hoeffding:
Teorema 13 (Desigualdade de Hoeffding). Se W1,...,Wn são variáveis aleatórias inde-
pendentes e Wi tem suporte em (ai,bi) então, para todo t  0,
P(|W̄n − µ|  e) ≤ 2e−2n2e2/∑n
i=1(bi−ai)2
,
em que W̄n = n−1
∑n
i=1 Wi e µ = E[W̄n].
Dessa desigualdade, segue imediatamente que
Corolário 1. Para toda função binária f,
P(|Pn(f ) − P(f )|  e) ≤ 2e−2ne2
e, portanto, com probabilidade ao menos 1 − δ,
|Pn(f ) − P(f )| ≤
r
1
2n
log(2/δ).
Exemplo 9.6. No contexto de classificação, o Corolário 1 implica que, para todo clas-
sificador binário g,
P(|b
Rtr(g) − R(g)|  e) ≤ 2e−2ne2
e, portanto, com probabilidade ao menos 1 − δ,
|b
Rtr(g) − R(g)| ≤
r
1
2n
log(2/δ).
Lema 3 (Lema da simetrização). Para todo e 
√
2/n,
P sup
f ∈F
|Pn(f ) − P(f )|  e
!
≤ 2P sup
f ∈F
|Pn(f ) − P0
n(f )|  e/2
!
,
em que P0
n(f ) = 1
n ∑n
i=1 f (Z0
i), com Z0
1,...,Z0
n uma amostra de vetores aleatórios iids a
Z1,...,Zn.
184
Capítulo 9. Outros Aspectos de Classificação
Demonstração. Seja b
f = argsupf ∈F |Pn(f ) − P(f )|. Note que, pela desigualdade tri-
angular,
e  |Pn( b
f ) − P( b
f )| = |Pn( b
f ) − P0
n( b
f ) + P0
n( b
f ) − P( b
f )| ≤ |Pn( b
f ) − P0
n( b
f )| + |P0
n( b
f ) − P( b
f )|.
Assim,
|Pn( b
f ) − P( b
f )|  e e |P0
n( b
f ) − P( b
f )| ≤ e/2 ⇒ |Pn( b
f ) − P0
n( b
f )|  e/2.
Logo,
I(|Pn( b
f ) − P( b
f )|  e)I(|P0
n( b
f ) − P( b
f )| ≤ e/2) ≤ I(|Pn( b
f ) − P0
n( b
f )|  e/2).
Tomando a esperança sobre Z0
1,...,Z0
n, concluímos que
I(|Pn( b
f ) − P( b
f )|  e)P0
(|P0
n( b
f ) − P( b
f )| ≤ e/2) ≤ P0
(|Pn( b
f ) − P0
n( b
f )|  e/2). (9.3)
Mas, pela desigualdade de Chebyshev,
P0
(|P( b
f ) − P0
n( b
f )|  e/2) ≤
4V0[ b
f ]
ne2
≤
1
ne2
≤
1
2
.
Logo,
P0
(|P( b
f ) − P0
n( b
f )| ≤ e/2) ≥
1
2
.
Desse fato e da Equação 9.3, concluímos que
I(|Pn( b
f ) − P( b
f )|  e) ≤ 2P0
(|Pn( b
f ) − P0
n( b
f )|  e/2).
Tomando a esperança sobre Z1,...,Zn, concluímos que
P(|Pn( b
f ) − P( b
f )|  e) ≤ 2P(|Pn( b
f ) − P0
n( b
f )|  e/2).
Assim,
P sup
f ∈F
|Pn(f ) − P(f )|  e
!
≤ 2P sup
f ∈F
|Pn(f ) − P0
n(f )|  e/2
!
185
9.6. Resumo
Demonstração. [Prova do Teorema VC] Seja
V = F(z1,...,zn,z0
1,...,z0
n).
Para v ∈ V, seja
Pn(v) − P0
n(v) =
1
n
n
∑
i=1
vi −
2n
∑
i=n+1
vi
!
.
Segue do Lema 3 que
P sup
f ∈F
|Pn(f ) − P(f )|  e
!
≤ 2P sup
f ∈F
|Pn(f ) − P0
n(f )|  e/2
!
= 2P

 sup
v∈F(Z1,...,Zn,Z0
1,...,Z0
n)
|Pn(v) − P0
n(v)|  e/2


≤ 2s(F,2n)P(|Pn(f ) − P0
n(f )|  e/2)
≤ 4s(F,2n)e−ne2/8
,
em que a penúltima desigualdade segue da desigualdade da união e do fato que
FZ1,...,Zn,Z0
1,...,Z0
n
possui no máximo s(F,2n) elementos. Já a última desiguldade segue
da desigualdade de Hoeffding.
9.6 Resumo
Vimos que um problema de classificação difere de um problema de regressão
pelo fato da variável Y ser qualitativa. Uma implicação disso é que o risco qua-
drático, utilizado para regressão, não é adequado para o problema de classificação.
Vimos que o risco 0-1, a probabilidade de classificar uma nova observação incor-
retamente, é mais adequado. Contudo, essa métrica deve ser complementada com
outras, como a sensibilidade e a especificidade. Também é possível adaptar o risco
para que cada tipo de erro seja penalizado de forma diferente. Vimos que o classifi-
cador de Bayes é o melhor classificador segundo o risco 0-1, o que motiva o uso de
classificadores plugin, que se baseiam em estimar a probabilidade de uma observa-
ção percentecer a uma classe dadas as covariáveis associadas a ela. Contudo, nem
todos os classificadores se baseiam nisso. Finalmente, vimos ferramentas para lidar
com situações de predição em que os dados não são i.i.d.
186
Parte III
Aprendizado não
supervisionado
187
Capítulo 10
Redução de Dimensionalidade e
Mudança de Representação
Métodos de redução de dimensionalidade buscam encontrar transformações das
covariáveis originais que capturam uma parte considerável das informações presen-
tes nelas, de modo a retirar redundâncias nas covariáveis e diminuir o número des-
sas. Existem diversas razões para isso, como, por exemplo, facilitar a visualização
dos dados e promover a criação de funções de predição com maior poder preditivo.
Veja, por exemplo, a Figura 10.1, que apresenta um diagrama de dispersão de duas
variáveis criadas a partir dos pixels das imagens de dígitos escritos a mão (como
na Figura 7.1) utilizando a técnica de componentes principais. Cada ponto é repre-
sentado pelo dígito correspondente. Note que 9’s e 7’s estão bastante sobrepostos,
indicando uma maior similaridade entre si.
189
10.1. Componentes Principais (PCA - Principal Component Analysis)
Figura 10.1: Diagrama de dispersão de duas variáveis criadas a partir dos pixels das
imagens de dígitos escritos a mão (veja a Figura 7.1). Cada ponto é representado
pelo dígito correspondente.
As técnicas de redução de dimensionalidade têm como objetivo a criação de um
número pequeno de variáveis Z1,Z2,... a partir de X1,X2,... que resumam bem as
informações presentes nelas. Neste capítulo estudamos diversas formas de se fazer
essa redução.
De forma mais geral, veremos também como alterar a representação das covariá-
veis originais (isto é, fazer uma mudança de coordenadas), mesmo que isso envolva
aumentar o número de variáveis. A nova representação pode ser útil para, posteri-
ormente, utilizar técnicas de aprendizado supervisionado.
10.1 Componentes Principais (PCA - Principal Compo-
nent Analysis)
Por simplicidade, nesta seção iremos assumir que as covariáveis estão normali-
zadas para ter média zero.
Na técnica de componentes principais, a informação de uma variável Zi é medida
através de sua variabilidade. Mais especificamente, ela é medida utilizando sua va-
riância. Além disso, a redundância entre duas variáveis Zi e Zj é medida através de
sua correlação. Finalmente, essa técnica se restringe a buscar por variáveis que sejam
190
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
combinações lineares das covariáveis originais.
Formalmente, o primeiro componente principal de X é a variável Z1 que
1. é combinação linear das variáveis X, isto é, pode ser escrito como
Z1 = φ11X1 + ... + φd1Xd (10.1)
2. tem a maior variância possível.
Assim, Z1 é a variável que pode ser representada pela Equação 10.1, em que
os coeficientes φ11,...,φd1 são tais que Z1 resultante possui a maior variabilidade
possível. Adiciona-se também a restrição de que ∑d
k=1 φ2
k1 = 1, caso contrário os
coeficientes φk1 teriam valor absoluto tão grande quanto se queira e, dessa forma,
poderia se aumentar a variância diretamente em função desses coeficientes.
Da mesma maneira, o segundo componente principal de X é a variável Z2 que
1. é combinação linear das variáveis X, isto é, pode ser escrito como
Z2 = φ12X1 + ... + φd2Xd
com a restrição: ∑d
k=1 φ2
k2 = 1
2. tem a maior variância possível.
3. tem correlação zero com Z1.
Em outras palavras, o segundo componente também deve ser função linear das
variáveis, deve ter a maior variância possível (para trazer o máximo de informação)
e deve ter correlação zero com o componente já calculado (de modo que não haja
informação redundante entre ambos).
De modo genérico, o i-ésimo componente principal de X, i  1, é a variável Zi
que
1. é combinação linear das variáveis X, isto é, pode ser escrito como
Zi = φ1iX1 + ... + φdiXd
com a restrição: ∑d
k=1 φ2
ki = 1
2. tem a maior variância possível.
191
10.1. Componentes Principais (PCA - Principal Component Analysis)
3. tem correlação zero com Z1,...,Zi−1.
Felizmente a solução para esse problema é simples. Ela consiste em primeira-
mente encontrar autovetores de C = X|X, que é matriz de variância-covariância das
covariáveis (a menos de um fator multiplicativo), pois estamos assumindo que elas
têm média zero. Seja U a matriz d × d em que a i-ésima coluna contém o i-ésimo
autovetor de C. U é justamente a matriz de cargas, i.e., o seu elemento i, j é dado pelo
coeficiente ótimo φij. Assim, Z = XU é a matriz n × d com as d novas covariáveis
para cada uma das n observações.
A Figura 10.2 apresenta uma ilustração dos dois primeiros componentes princi-
pais para um conjunto de dados simulados Nesse caso, o primeiro componente, z1,
representa a posição de cada ponto com relação ao eixo marcado de vermelho, que
é o eixo de maior variabilidade dos dados. Note que, sabendo o valor desta posição
(por exemplo, z1 = −1), pode-se ter uma noção do valor tanto de x1 quanto de x2.
Assim, de fato o primeiro componente captura o que é mais importante sobre os da-
dos. O segundo componente, z2 é a posição de cada ponto com relação ao eixo azul.
Essa informação complementa aquela dada pelo componente z1: com base em z1 e
z2 é possível reconstruir x1 e x2. Além disso, os eixos são ortogonais entre si. Isso
sempre ocorre devido ao fato que se exige que a correlação entre Z1 e Z2 seja zero.
Figura 10.2: Componentes principais encontrados para um conjunto de dados simu-
lado.
192
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
10.1.1 Interpretação alternativa: escalonamento multidimensional
Uma outra forma de motivar a utilização dos componentes principais é dada pelo
escalonamento multidimensional. Suponha que deseja-se encontrar as transforma-
ções lineares Z = (Z1,...,Zm), m  d de X = (X1,...,Xd) tais que
∑
i,j
(||xi − xj||2
− ||zi − zj||2
)
tenha o menor valor possível. Ou seja, deseja-se buscar a transformação linear das
variáveis originais tal que as distâncias euclidianas entre os pares de vetores origi-
nais, ||xi − xj|| sejam o mais próximas possíveis das distâncias euclidianas entre os
pares de novos vetores, ||zi − zj|| no sentido de minimizar
∑
i,j
||xi − xj||2
− ||zi − zj||2
.
A solução para esse problema consiste justamente em tomar Z como sendo o
vetor dos m primeiros componentes principais de x.
Exemplo 10.1. Considere o conjunto de dados Zip Code1, que contém a imagem de
dígitos escritos a mão.
Figura 10.3: Dois primeiros componentes principais encontrados para o conjunto
de dados de dígitos escritos à mão, juntamente com a imagem de um dígito outlier
(correspondente ao ponto circulado na primeira figura) e um dígito inlier.
1http://statweb.stanford.edu/~tibs/ElemStatLearn/.
193
10.1. Componentes Principais (PCA - Principal Component Analysis)
A Figura 10.3 ilustra o diagrama de dispersão dos dois primeiros componen-
tes principais, assim como a imagem de um dígito outlier (correspondente ao ponto
circulado na primeira figura) e um dígito inlier. Claramente o dígito outlier possui
características diferentes do que é esperado para um dígito 1 escrito à mão.
10.1.2 Aplicação: compressão de imagens
Seja X a matriz n × d com os dados observados. Em PCA, fazemos a decomposi-
ção SVD da matriz de covariâncias:
X|
X = UΣU|
,
em que U é uma matriz d × d cujas colunas contém os autovetores da matriz X|X
(a chamada matriz de cargas) e Σ é uma matriz diagonal com seus autovalores. Os
autovetores de U são ordenados de acordo com a magnitude do respectivo autovalor
de forma decrescente, ou seja, o primeiro autovetor corresponde ao maior autovalor.
A matriz Z = X|U (que é n × d) contém os valores das d novas covariáveis ava-
liadas em cada uma das n observações. Além disso, os dados X podem ser recons-
truídos calculando-se ZU|. Note que a i-ésima linha de ZU| é dada por
d
∑
k=1
zi,kuk,
em que zi,k = u|
k xi é o valor da k-ésima nova variável para a i-ésima amostra e uk é a
k-ésima coluna de U. É possível mostrar que
p
∑
k=1
zi,kuk ≈
d
∑
k=1
zi,kuk
para p  d, contanto que os autovalores da matriz de covariâncias decaiam rapida-
mente para zero.
Isso sugere aproximar xi truncando ∑
p
k=1 ci,kuk em um valor pequeno de p. A
vantagem de tal aproximação é que ela reduz o espaço necessário para armazenar xi.
Dessa forma, só é necessário armazenar o valor das p novas covariáveis (zi,1,...,zi,p)
194
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
e os p primeiros pesos u1,...,up. Matricialmente,
X ≈ ZpU|
p,
em que Zp contém as p primeiras colunas de Z e Up contém as p primeiras colunas
de U.
Nessa seção mostraremos como utilizar PCA para comprimir a seguinte imagem:
Figura 10.4: Figura que será comprimida via PCA.
A ideia central é tratar a imagem como sendo a coleção de três matrizes, uma para
cada canal de cor (red/green/blue). Primeiramente, faremos a leitura da imagem no
R. Note que o objeto imagem é um array 639 × 540 × 3. As duas primeiras dimensões
indicam o tamanho da imagem e a última dimensão indica as camadas de cor (nesse
caso, RGB).
library(jpeg)
library(gridExtra)
imagem - readJPEG(../Figures/izbicki.jpg, native = FALSE)
red - imagem[,,1]
green - imagem[,,2]
blue - imagem[,,3]
195
10.1. Componentes Principais (PCA - Principal Component Analysis)
rotate - function(x) t(apply(x, 2, rev))
# canal vermelho
image(rotate(red), col = grey.colors(300, 0, 1))
Aplicaremos a decomposição SVD na matriz de cada canal separadamente.
r_svd - svd(t(red) %*% red)
g_svd - svd(t(green) %*% green)
b_svd - svd(t(blue) %*% blue)
196
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
Com isso, iremos aplicar PCA para comprimir as imagens. Para comparar dife-
rentes níveis de compressão, utilizaremos diferentes opções para o número de com-
ponentes utilizados.
ncolunas - c(3, 5, 25, 100, 200, 300) # níveis
# de compressão
for(i in ncolunas) {
# (novas variaveis)
r_projecao - red %*% r_svd$u[, 1:i]
# (reconstrucao)
r_approx - r_projecao %*% t(r_svd$u[, 1:i])
g_projecao - green %*% g_svd$u[, 1:i]
g_approx - g_projecao %*% t(g_svd$u[, 1:i])
b_projecao - blue %*% b_svd$u[, 1:i]
b_approx - b_projecao %*% t(b_svd$u[, 1:i])
imagemFinal - array(NA, dim = c(nrow(red), ncol(red), 3))
imagemFinal[,,1] - r_approx
imagemFinal[,,2] - g_approx
imagemFinal[,,3] - b_approx
imagemFinal - ifelse(imagemFinal  0, 0,
ifelse(imagemFinal  1, 1, imagemFinal))
grid.raster(imagemFinal)
cat(Numero de componentes =, i, n,
Economia de espaço = ,
paste0(round(100 - (prod(dim(r_projecao)) +
prod(dim(r_svd$u[, 1:i])))/prod(dim(red))*
100, 2),%))
}
197
10.2. Kernel PCA (KPCA)
(a) 3 componentes; 98,9%
de compressão
(b) 5 componentes; 98,3%
de compressão
(c) 25 componentes;
91,46% de compressão
(d) 100 componentes;
65,8% de compressão
(e) 200 componentes;
31,2% de compressão
(f) 300 componentes; -
2,5% de compressão
Figura 10.5: Imagens recuperadas a partir dos componentes principais
10.2 Kernel PCA (KPCA)
Se restringir a transformações lineares das variáveis originais, como feito na seção
anterior, pode ser um fator muito limitante. Considere a Figura 10.6. Intuitivamente,
o primeiro componente principal deveria ser capaz de distinguir os grupos vermelho
e preto. No entanto, o primeiro componente, como mostrado na figura, não é capaz
de fazer isso. Contudo, Kernel PCA, a técnica descrita nesta seção, é capaz de fazê-lo.
A ideia do Kernel PCA é utilizar o truque do kernel (já utilizado na Seção 4.6.3.2
no contexto de regressão) de forma a considerar transformações não lineares das
covariáveis.
Lembre-se que a solução do PCA consiste em encontrar autovetores de C = X|X.
O fato fundamental para usar o truque do kernel é que Z também pode ser calculado
198
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
via o cálculo dos autovetores de
K = XX|
,
a matriz com os produtos internos entre cada par de observações. Note que essa
matriz é diferente de C. Mais especificamente, tem-se que
Z = U|
2 ,
em que U2 é a matriz de autovetores de K. Assim, para calcular as componentes
principais, basta saber os produtos internos entre as observações.
Figura 10.6: Primeiro componente da PCA e do KPCA encontrados para um con-
junto de dados simulado.
O truque do kernel na análise de componentes principais consiste em utilizar
199
10.2. Kernel PCA (KPCA)
outros produtos internos (kernels) ao invés de hxi,xji = ∑d
k=1 xi,kxj,k. Ou seja, ao
invés de calcular a autodecomposição de K = XX|, utilizamos outros kernels,
K =






K(x1,x1) K(x1,x2) ··· K(x1,xn)
K(x2,x1) K(x2,x2) ··· K(x2,xn)
.
.
.
.
.
.
...
.
.
.
K(xn,x1) K(xn,x2) ··· K(xn,xn)






,
em que K(xi,xj) corresponde ao produto interno de alguma transformação das co-
variáveis x. Lembre-se que o truque consiste no fato de que a transformação não
precisa ser calculada analiticamente (Seção 4.6.3.2).
No R, o KPCA (e, em particular, PCA) pode ser ajustado utilizando o pacote
kernlab.
library(kernlab)
# kernel polinomial (note que degree=1 corresponde a
# PCA usual):
kpc - kpca(dados, kernel = polydot,
kpar = list(degree = 2), features = 2)
# ou kernel gaussiano (sigma = 1/variancia):
kpc - kpca(dados, kernel = rbfdot,
kpar = list(sigma = 1), features = 2)
variaveis_novos_dadoss - predict(kpc, novos_dados)
Para kernels diferentes do kernel linear, o número de componentes criados pode
ser maior que d. Assim, essa técnica não necessariamente faz uma redução de di-
mensão; ela cria um novo sistema de coordenadas para os dados.
Observação 10.1. KPCA também pode ser motivada via escalonamento multidimen-
sional: fazer KPCA equivale a fazer escalonamento multidimensional com base na
distância d(xi,xj) =
q
2(1 − K(xi,xj)).
Na Seção 11.2 estudaremos outra técnica que também utilizar um kernel de Mer-
cer para criar uma nova representação dos dados.
200
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
10.3 Projeções Aleatórias
Uma estratégia alternativa para reduzir a dimensionalidade dos dados é o mé-
todo de projeções aleatórias. Nele, cada componente zi é criado de modo a ser uma
projeção linear das covariáveis originais com coeficientes escolhidos aleatoriamente.
Mais especificamente, seja S uma matriz com m linhas e d colunas cujas entradas são
amostras i.i.d. de normais com média zero e variância um. Seja si,j a entrada (i, j)
desta matriz. Definimos a k-ésima projeção aleatória de x como
zi =
d
∑
k=1
si,k
√
m
xk.
Seja zi = (zi,1,...,zi,m) o vetor composto pelas novas variáveis. O teorema a se-
guir mostra que, com probabilidade alta, tal transformação preserva distâncias, i.e.,
||xi − xj|| ≈ ||zi − zj|| para todos índices i e j.
Teorema 14 (Johnson-Lindenstrauss, (Johnson e Lindenstrauss, 1984)). Fixe e  0 e
seja m ≥ 32logn/e2. Então, com probabilidade ao menos 1 − e−me2/16, vale que
(1 − e)||xi − xj||2
≤ ||zi − zj||2
≤ (1 + e)||xi − xj||2
para todos i, j = 1,...,n.
Exemplo 10.2. Considere novamente o conjunto de dados Zip Code (Exemplo 10.1).
As Figuras 10.7 e 10.8 ilustram as duas e três primeiras projeções aleatórias calcula-
das. Note como imagens referentes aos mesmos dígitos tendem a se agrupar.
Figura 10.7: Duas primeiras projeções aleatórias calculadas no conjunto de dados de
dígitos escritos à mão.
201
10.4. Autoencoders
Figura 10.8: Três primeiras projeções aleatórias calculadas no conjunto de dados de
dígitos escritos à mão.
Além das aplicações de técnicas de redução de dimensionalidade já discutidas,
projeções aleatórias também podem ser utilizadas como forma de deixar diversos al-
goritmos mais rápidos. Isso ocorre pois esse método preserva distâncias (e produtos
internos) e é muito rápido de ser calculado. Isso permite que métodos de regressão e
classificação, que exigem apenas o cálculo do produto interno para serem implemen-
tados (como a regressão ridge e support vector machines), possam ser aproximados
sem grandes perdas de desempenho estatístico.
10.4 Autoencoders
Redes neurais podem ser utilizadas para reduzir a dimensão dos dados. Uma
maneira de fazer isso é através de autoeconders, que são redes com camada de saída
202
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
com o mesmo número de neurônios que a camada de entrada (Figura 10.9).
Em um autoencoder, a função de perda é dada por
1
n
n
∑
k=1
d
∑
i=1
xk,i − gβ;i(xk)
2
,
que incentiva que a saída da rede seja a mesma que a da entrada: como a camada
oculta tem menos neurônios que a camada de entrada, a saída deve recuperar a
entrada a partir de um número menor de variáveis. Assim, essa estrutura exige
que as camadas ocultas consigam capturar o máximo de informação sobre x em um
número pequeno de variáveis.
x1
x2
x3
x4
gβ;1(x)
gβ;2(x)
gβ;3(x)
gβ;4(x)
Camada
Oculta
Camada
de
entrada
Camada
de saída
Figura 10.9: Exemplo de autoencoder.
Quando há apenas uma camada oculta, esse processo leva essencialmente aos
mesmos resultados que PCA (Seção 10.1). Autoenconders, contudo, podem ter uma
estrutura muito mais geral, com várias camadas ocultas e outras arquiteturas.
Exemplo 10.3. Nesse exemplo apresentamos dados processados obtidos a partir
da página de dados estatísticos da Secretaria de Segurança Pública de São Paulo
(www.ssp.sp.gov.br/Estatistica) para o número de ocorrências registradas no ano de
2019. Utilizaremos os seguintes indicadores:
• homicídio doloso
• nº de vítimas em homicídio doloso
• homicídio doloso por acidente de
trânsito
203
10.4. Autoencoders
• nº de vítimas em homicídio doloso
por acidente de trânsito
• homicídio culposo por acidente de
trânsito
• homicídio culposo outros
• tentativa de homicídio
• lesão corporal seguida de morte
• lesão corporal dolosa
• lesão corporal culposa por acidente
de trânsito
• lesão corporal culposa - outras
• latrocínio
• nº de vítimas em latrocínio
• total de estupro
• estupro
• estupro de vulnerável
• total de roubo - outros
• roubo - outros
• roubo de veículo
• roubo a banco
• roubo de carga
• furto - outros
• furto de veículo
Utilizaremos uma rede com 23 unidades de entrada (o número de indicado-
res/covariáveis), três unidades na camada oculta e 23 unidades na camada de saída.
Assim, o erro observado será pequeno se não houver grande perda de informação
após a redução de dimensão dos dados com três unidades na camada oculta.
Para avaliar o desempenho da rede neural, faremos a reconstrução dos dados de
diversos municípios separados em um conjunto de teste e avaliaremos a diferença
absoluta de cada indicador. Essa diferença pode ser observada na Figura 10.10.
library(viridis)
library(tidyverse)
library(tidymodels)
library(keras)
dados - read_csv2(../dados/indicadores_ssp.csv)
# processamento dos dados --------------------------------
receita_prep - dados %%
204
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
select(-(municipio_cod:pop_19)) %%
recipe(~ .) %%
step_normalize(all_numeric()) %%
prep()
# treinamento e teste ------------------------------------
set.seed(314)
splits - juice(receita_prep) %%
initial_split(0.8)
treinamento - training(splits) %% as.matrix()
teste - testing(splits) %% as.matrix()
network - keras_model_sequential() %%
layer_dense(units = 3, activation = relu,
input_shape = 23) %%
layer_dense(units = 23)
network %%
compile(optimizer = adam,
loss = mean_squared_error)
network %%
fit(treinamento, treinamento,
epochs = 40,
batch_size = 16,
validation_split = 0.2)
preditos - predict(network, teste)
diferenca - data.frame(abs(teste - preditos))
tibble(id = 1:nrow(diferenca)) %%
bind_cols(diferenca) %%
pivot_longer(-id, names_to = indicador,
205
10.4. Autoencoders
values_to = diferenca) %%
ggplot(aes(id, indicador, fill = diferenca)) +
geom_tile() +
labs(x = município, y = ,
fill = diferença entre observado e predito) +
scale_fill_viridis(direction = -1) +
scale_x_continuous(expand = c(0, 0)) +
theme_minimal() +
theme(legend.position = top,
text = element_text(size = 8))
206
Capítulo 10. Redução de Dimensionalidade e Mudança de Representação
Figura 10.10: Erro de reconstrução da compressão dada pelo autoencoder em obser-
vações de um conjunto de teste.
207
10.4. Autoencoders
208
Capítulo 11
Análise de Agrupamento
Métodos de análise de agrupamento (análise de cluster) têm por finalidade divi-
dir a amostra em grupos. Essa divisão é feita de modo que os grupos sejam diferentes
uns dos outros, mas os elementos pertencentes ao mesmo grupo sejam parecidos en-
tre si. Esses métodos podem ser utilizados com diversas finalidades. Por exemplo,
uma loja de departamento pode utilizar análise de agrupamento para segmentar
seus clientes. Assim, pode decidir como deve agir em relação a cada grupo. Por
exemplo, a empresa poderá enviar um tipo diferente de publicidade para cada cli-
ente de acordo com o perfil do grupo que pertence. Outro exemplo são as resenhas
de usuários mostradas em sites de compras online quando um indivíduo busca por
um produto. Em geral, a empresa escolhe automaticamente duas ou três resenhas
bastante distintas, mas que ao mesmo tempo são representativas das milhares de
resenhas feitas sobre esse produto.
Formalmente, o objetivo de um método de clustering é criar uma partição C1,...,CK
dos elementos amostrais {1,...,n}. Isto é, devemos ter ao mesmo tempo
C1
[
C2
[
...
[
CK = {1,2...,n}
e
Ci

Cj = ∅ ∀i , j.
Neste capítulo apresentamos diversos métodos de análise de agrupamento com
diferentes heurísticas para criar tais partições.
Um conceito essencial a diversos métodos de agrupamento é como medir dissi-
209
11.1. K-Médias
milaridade (ou similaridade) entre dois elementos com covariáveis xi e xj. Existem
várias medidas possíveis. A seguir, listamos alguns exemplos:
• distância Euclidiana: d2(xi,xj) = ∑d
k=1(xi,k − xj,k)2;
• distância de Mahalanobis: d(xi,xj) = ∑d
k=1 |xi,k − xj,k|;
• distância cosseno: d(xi,xj) = 1 −
xi·xj
||xi|| ||xj||
;
• distância de Jaccard: d(xi,xj) = 1 −
∑d
k=1 xi,kxj,k
∑d
k=1 xi,k+∑d
k=1 xj,k−∑d
k=1 xi,kxj,k
, em que x as-
sume valores 0 e 1.
Cada distância apresentada é mais adequada em um tipo de contexto. Por exem-
plo, a distância cosseno é muito utilizada em aplicações de texto. Para aplicações de
exemplos reais com a distância de Jaccard, veja Fernandez e F. (2020).
Na próxima seção apresentaremos um método em que é necessário fixar previa-
mente o número de clusters.
11.1 K-Médias
O método das K-Médias assume que a medida de dissimilaridade usada é a dis-
tância Euclidiana. Para utilizá-lo, é necessário especificar de antemão o valor de K,
quantos clusters se deseja. Nesse algoritmo, buscar o melhor clustering é entendido
como buscar pela partição C1,...,CK da amostra tal que
K
∑
k=1
1
|Ck| ∑
i,j∈Ck
d2
(xi,xj)
seja o menor possível. Essa quantidade é a soma de quadrados dentro de cada clus-
ter.
Como há KN partições dos dados, não é possível minimizar essa função objetivo
de forma exata. Um método para aproximar a solução desse problema é um algo-
ritmo iterativo chamado Algoritmo de Lloyd. Embora não haja garantias de que a
melhor solução será de fato encontrada, esse método, frequentemente, leva a bons
resultados. O algoritmo consiste nos seguintes passos:
1. Escolha aleatoriamente k centróides c1,...,ck.
210
Capítulo 11. Análise de Agrupamento
Itere até obter convergência:
2. Atribuição: Defina o cluster Cj (j = 1,...,k) como sendo
Cj = {xi : argmin
r
d(xi,cr) = r}
3. Atualização: Calcule os novos centroides utilizando os grupos que foram cria-
dos:
cj ←−
1
|Cj| ∑
j:xj∈Cj
xj
A Figura 11.1 ilustra o algoritmo de Lloyd. Nela, os centróides são denotados
por círculos vazios, enquanto que dados observados têm cor sólida. Além disso, o
centróide atribuido a cada ponto é denotado por vermelho ou azul. Neste caso, o
algoritmo convergiu em apenas quatro interações.
O algoritmo de Lloyd depende de escolhas iniciais feitas no passo 1. Cada esco-
lha pode levar a um mínimo (local) diferente; veja os exemplos da Figura 11.2. Em
ambos os casos o algoritmo convergiu para um mínimo que não é global.
Uma forma de contornar esse problema é utlizar o algoritmo k-médias++ (Arthur
e Vassilvitskii, 2006), que é uma variação do algoritmo de Lloyd. Essa variação con-
siste em alterar a escolha dos pontos iniciais de forma a aumentar a chance de que o
mínimo global seja encontrado. Para tanto, no k-médias++ escolhe-se C, o conjunto
de pontos iniciais, da seguinte forma:
1. Escolha c1 aleatoriamente entre {x1,...,xn} e defina C = {c1}.
2. Para j = 2,...,k :
(a) Calcule D(xi) = min
c∈C
||xi − c|| para cada xi
(b) Escolha uma amostra xi aleatoriamente entre todas as amostras observa-
das com probabilidade
pi =
D2(xi)
∑n
j=1 D2(xj)
(c) Defina cj como sendo o ponto escolhido. Atualize
C ← C ∪ {cj}
211
11.1. K-Médias
A partir desses passos, o kmédias++ prossegue de forma similar ao K-médias.
No R, K-médias pode ser aplicado com a função kmeans. Já o K-médias++ pode
ser utilizado via a função kmeanspp do pacote LICORS.
Figura 11.1: Algoritmo de Lloyd.
212
Capítulo 11. Análise de Agrupamento
Figura 11.2: Exemplos em que o K-médias com Algoritmo de Lloyd não converge
para o mínimo global.
Exemplo 11.1. Neste exemplo iremos utilizar o K-médias para fazer um agrupa-
mento de pixels de uma imagem. O agrupamento será feito de acordo com as cores
do pixel. Cada pixel passará então a ser representado pelo centróide do cluster. As-
sim, o número de clusters será o número de cores de cada imagem.
library(jpeg)
imagem - readJPEG(../Figures/izbicki2.jpg)
# organiza a imagem em data frame
imagemRGB - tibble(
x = rep(1:dim(imagem)[2], each = dim(imagem)[1]),
y = rep(dim(imagem)[1]:1, dim(imagem)[2]),
R = as.vector(imagem[,, 1]),
G = as.vector(imagem[,, 2]),
B = as.vector(imagem[,, 3]))
k - 2 # especifique o valor de k
kMeans - kmeans(imagemRGB[, c(R, G, B)], centers = k)
imagemRGB %%
213
11.1. K-Médias
mutate(kColours = rgb(kMeans$centers[kMeans$cluster,])) %%
ggplot(aes(x = x, y = y, color = I(kColours))) +
geom_point(show.legend = FALSE) +
labs(title = paste(k-Means (k =, k, cores))) +
theme_minimal()
214
Capítulo 11. Análise de Agrupamento
11.2 Agrupamento Espectral
Métodos de agrupamento espectral são uma classe de algorítmos que fazem agru-
pamentos a partir de autovetores. Nessa seção introduziremos um método específico
215
11.2. Agrupamento Espectral
de agrupamento espectral, os mapas de difusão (Coifman e Lafon, 2006; Nadler et
al., 2006).
Seja K um kernel de Mercer (Definição 1) e K a matriz de Gram associada (Equa-
ção 4.11). A ideia chave de mapas de difusão é construir um passeio aleatório nos
dados a partir do qual é definida uma métrica entre as observações do banco. Vere-
mos que, em algumas situações, essa distância captura melhor a conectividade entre
esses pontos que a distância euclidiana.
O passeio aleatório utilizado é dado por uma cadeia de Markov no espaço de
estados A := {x1,...,xn} que tem matriz de transição
M := D−1
K,
em que D é a matriz diagonal cuja entrada (i,i) é dada por ∑n
j=1 K(xi,xj). Seja
pt(xi|xj) a probabilidade de o passeio visitar o estado xi daqui a t passos dado que
ele está atualmente no estado xj. A medida estacionária dessa cadeia é dada por
s(xi) :=
∑n
j=1 K(xi,xj)
∑n
i=1 ∑n
j=1 K(xi,xj)
.
A distância de difusão no tempo t entre xi e xj é dada por
Dt(xi,xj) = ∑
a∈A
pt(a|xi) − pt(a|xj)
2
s(a)
. (11.1)
Dois pontos serão próximos segundo Dt quando houver muitos pontos que são
facilmente acessíveis saindo de xi ou de xj. Ou seja, xi e xj são próximos se a cadeia
consegue facilmente transitar entre esses pontos em um dado tempo t. Quanto maior
t, mais próximos os pontos se tornam.
A Figura 11.3 mostra como a distância de difusão difere da distância euclidiana
em dois exemplos em que os dados foram simulados de forma a terem como do-
mínio dois círculos concêntricos. Em ambos os casos, mostramos os 75 pontos mais
próximos ao ponto marcado com um círculo preto. A distância de difusão tende a
considerar como próximos pontos que estão no mesmo círculo, enquanto a distância
euclidiana não leva em conta a geometria local.
Uma forma de usar mapas de difusão para fazer agrupamento é utilizando o al-
gorítmo k-médias. Para isso, inicialmente, transformaremos os dados para um novo
216
Capítulo 11. Análise de Agrupamento
espaço em que a distância euclidiana corresponde à distância de difusão no espaço
original, de modo que o k-médias possa ser implementado.
Figura 11.3: Em azul são mostradas as 75 observações mais próximas ao ponto preto
segundo a distância de difusão (acima) e segundo a distância euclidiana (abaixo) .
Para isso, denote por λ0,...,λn os autovalores de M ordenados de forma que
λ0 ≥ ... ≥ λn. Sejam ψ0,...,ψn ∈ Rn os autovetores à direta correspondentes. Pode-
se mostrar que
D2
t (xi,xj) =
n
∑
k=1
λ2t
k ψk(xi) − ψk(xj)
2
= ||Ψ(xi) − Ψ(xj)||2
, (11.2)
em que
Ψ(xi) := (λt
1ψ1(xi),...,λt
nψn(xi)).
A transformação Ψ é chamada de mapa (ou transformação) de difusão. Nesse novo
217
11.2. Agrupamento Espectral
espaço, a distância euclidiana pode ser mais apropriada que no espaço original. De
fato, a Equação 11.2 mostra que ela corresponde à distância de difusão no espaço
original.
O mapa de difusão também pode ser utilizado como uma técnica de mudança
de representação dos dados, como estudado no Capítulo 10. De fato, o Teorema de
Eckart-Young-Mirsky mostra que os primeiros componentes do mapa de difusão são
os mais importantes para aproximar a distância de difusão:
D2
t (xi,xj) ≈
K
∑
k=1
λ2t
k ψk(xi) − ψk(xj)
2
.
Isso motiva, por exemplo, a utilização das primeiras coordenadas desse mapa para
fazer visualização de dados.
Para ajustar mapas de difusão no R, podemos usar o seguinte código:
# distâncias Euclidianas:
distances - fields::rdist(dados,dados)
# tamanho da banda
eps - quantile(distances^2, probs = 0.02)
# kernel (gaussiano):
L - exp(-distances^2/eps)
D_inverse - diag(1/rowSums(L))
# matrix de Markov
M - D_inverse %*% L
# autovetores da direita:
eigen_decomp - eigen(M)
right_eigen_vectors - Re(eigen_decomp$vectors)
# autovetores da esquerda:
eigen_decomp - eigen(t(M))
left_eigen_vectors - Re(eigen_decomp$vectors)
# autovalores
values - Re(eigen_decomp$values)
218
Capítulo 11. Análise de Agrupamento
Figura 11.4: Clusters encontrados pelo k-médias (esquerda) e pelo agrupamento es-
pectral via mapas de difusão (direita).
# calcular o mapa (transformação) de difusão:
mapa - sweep(right_eigen_vectors, MARGIN = 2, values^50, '*')
distancias_difusao - fields::rdist(mapa, mapa)
A Figura 11.4 mostra os clusters encontrados pelo k-médias usual e pelo k-médias
aplicado no mapa de difusão. Esses agrupamentos foram obtidos via
library(LICORS)
cl - kmeanspp(data = dados, k = 2) # K-médias usual
cl_diff - kmeanspp(data = mapa, k = 2) # K-médias espectral
11.3 Métodos Hierárquicos
Um problema do método K-médias é que K deve ser especificado de antemão.
Métodos hierárquicos são uma alternativa ao K-médias que evitam isso. Esses mé-
todos se baseiam na aplicação do seguinte algoritmo (ou uma variação dele):
219
11.3. Métodos Hierárquicos
1. Atribua cada observação a um cluster diferente. Calcule cada uma das (n
2)
distâncias entre esses clusters.
2. Para i = n,n − 1,...,2:
(a) Procure entre todos os pares formados por dois dos i clusters aqueles mais
parecidos. Junte esses dois clusters em um só. A dissimilaridade entre
esses dois clusters indica a altura do dendrograma em que a junção será
feita.
(b) Calcule cada uma das distâncias entre os novos i − 1 clusters.
A Figura 11.5 ilustra esse procedimento passo a passo para um conjunto de dados
simulado.
Para fazer o agrupamento é necessário definir a distância entre dois clusters. Há
várias formas de se definir essas distâncias chamadas de linkages. Algumas formas
são:
• Complete: a maior das distâncias entre todos os pares de observações perten-
centes aos dois clusters.
• Single: a menor das distâncias entre todos os pares de observações pertencen-
tes aos dois clusters.
• Average: a média das distâncias entre todos os pares de observações perten-
centes aos dois clusters.
• Centroid: a distância entre os centroides dos dois clusters.
No R, clustering hierárquico pode ser ajustado com a função hclust, os agrupa-
mentos obtidos com a função cutreet e a visualização com a função plot.
dendrograma - hclust(dist(dados), method = ave)
plot(dendrograma)
# particionar os dados em 3 grupos:
clusters - cutree(dendrograma, k = 3)
220
Capítulo 11. Análise de Agrupamento
Figura 11.5: Exemplificação da construção do clustering hierárquico.
Uma alternativa para visualização pode ser obtida com a função fviz_dend
do pacote factoextra (Kassambara e Mundt, 2020). Esse pacote é uma excelente op-
ção para rotinas relacionadas a agrupamento, estatística multivariada e visualização,
como mostra a Figura 11.6.
fviz_dend(dendrograma, k = 3)
221
11.3. Métodos Hierárquicos
Figura 11.6: Dendrograma obtido a partir do processo acima.
222
Capítulo 12
Regras de Associação
Imagine que temos um banco de dados em que cada linha representa a ida de
uma pessoa a um supermercado e cada coluna indica se ela comprou ou não deter-
minado produto, como mostra a Tabela 12.1.
Tabela 12.1: Exemplo de banco de dados utilizado para criar regras de associação.
Produto
Compra Leite Pão Cerveja Refrigerante
1 0 1 1 0
2 1 1 0 0
3 0 0 1 1
O objetivo de regras de associação (market basket) é descobrir regras que ocorram
com alta frequência no banco de dados. Por exemplo,
• Quem compra leite em geral também compra pão”
• Quem compra cerveja e refrigerante em geral também compra carne”.
Com base nessas regras, o mercado pode, por exemplo, decidir a organização
dos produtos de forma a maximizar suas vendas ou melhorar a experiência de seus
clientes. Outro exemplo de aplicação de regras de associação se dá no contexto de
sites de vendas. Os administradores dos sites podem decidir, com base nessas regras,
quais produtos oferecer a um usuário com base no histórico de compras.
Note que, ainda que a tarefa abordada por regras de associação pareça simples
(a princípio basta investigar diversas tabelas de contingência), a chave do problema
223
.
é como fazer isso de forma eficiente. Os bancos de dados obtidos nessas aplicações,
geralmente, contém muitas covariáveis e, consequentemente, o número de tabelas a
serem investigadas é extremamente grande.
Nesta seção, vamos assumir que cada variável Xi do banco é binária (indicadora
do produto i ter sido comprado). A fim de tornar o problema de regras de associação
factível, nos restringiremos a regras que envolvam subconjuntos S das d variáveis
(por exemplo, S = {2,4,10}) tais que
P

i∈S
Xi = 1
!
(12.1)
é alto. Assim, nos restringiremos a regras que envolvam combinações de produtos
que são frequentemente comprados.
A probabilidade da Eq. 12.1 é chamada de suporte do conjunto de itens S e é
estimada utilizando-se 1
n ∑n
k=1 I(Xk,i = 1 ∀i ∈ S). Busca-se, portanto, entre todos
os subconjuntos de itens S, aqueles que tenham suporte maior ou igual a um corte
predefinido t.
Para tornar a busca por esses conjuntos eficiente, pode-se utilizar o algoritmo
Apriori (Agrawal et al., 1993). Para tanto, esse algoritmo explora o fato de que se
S0 ⊆ S1, então o suporte de S1 é necessariamente menor ou igual ao suporte de S0.
Isso limita o número de subconjuntos que devem ser investigados.
Após encontrar todos os subconjuntos S com suporte alto, o algoritmo Apriori
busca por regras do tipo
A ⇒ B,
em que A é chamado de antecedente e B de consequente. Dada uma regra deste
tipo, definem-se duas estatísticas que são úteis para descobrir regras de associação
interessantes:
• Confiança: uma estimativa de P(B|A) (entre os usuários que compraram A,
quantos compraram B?)
• Lift/Levantamento: Uma estimativa de
P(B|A)
P(B)
(quanto o usuário ter comprado
A aumenta a probabilidade dele comprar B?)
Assim, buscamos, entre todas as regras que têm suporte maior que t prefixado,
aquelas que têm levantamento ou confiança alta. Essa busca é factível, pois, em geral,
há poucas regras com suporte alto.
224
Capítulo 12. Regras de Associação
Regras de associação podem ser implementadas no R com o pacote arules.
library(arules)
library(arulesViz)
# carregar o conjunto de dadis
data(Groceries)
# encontrar Regras com suporte ao menos 0.005 e confianca 0.5:
# obs: maxlen = 3, no máximo 3 itens
regras - apriori(Groceries,
parameter = list(supp = 0.005,
conf = 0.5, maxlen = 3))
## Apriori
##
## Parameter specification:
## confidence minval smax arem aval originalSupport maxtime support minlen
## 0.5 0.1 1 none FALSE TRUE 5 0.005 1
## maxlen target ext
## 3 rules TRUE
##
## Algorithmic control:
## filter tree heap memopt load sort verbose
## 0.1 TRUE TRUE FALSE TRUE 2 TRUE
##
## Absolute minimum support count: 49
##
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s].
## sorting and recoding items ... [120 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 3 done [0.00s].
## writing ... [99 rule(s)] done [0.00s].
## creating S4 object ... done [0.00s].
225
.
arules::inspect(regras[1:5])
lhs rhs support confidence coverage lift count
baking powder = whole milk 0.01 0.52 0.02 2.05 91
other vegetables,oil = whole milk 0.01 0.51 0.01 2.00 50
root vegetables,onions = other vegetables 0.01 0.60 0.01 3.11 56
onions,whole milk = other vegetables 0.01 0.55 0.01 2.82 65
other vegetables,hygiene articles = whole milk 0.01 0.54 0.01 2.12 51
# reoderdenar por confianca:
regras - sort(regras, by = confidence, decreasing = TRUE)
arules::inspect(regras[1:5])
lhs rhs support confidence coverage lift count
butter,whipped/sour cream = whole milk 0.01 0.66 0.01 2.58 66
pip fruit,whipped/sour cream = whole milk 0.01 0.65 0.01 2.54 59
butter,yogurt = whole milk 0.01 0.64 0.01 2.50 92
root vegetables,butter = whole milk 0.01 0.64 0.01 2.50 81
tropical fruit,curd = whole milk 0.01 0.63 0.01 2.48 64
# reoderdenar por lift:
regras = sort(regras, by = lift, decreasing = TRUE)
arules::inspect(regras[1:5])
lhs rhs support confidence coverage lift count
tropical fruit,curd = yogurt 0.01 0.51 0.01 3.69 52
pip fruit,whipped/sour cream = other vegetables 0.01 0.60 0.01 3.12 55
root vegetables,onions = other vegetables 0.01 0.60 0.01 3.11 56
citrus fruit,root vegetables = other vegetables 0.01 0.59 0.02 3.03 102
tropical fruit,root vegetables = other vegetables 0.01 0.58 0.02 3.02 121
# buscar regras que envolvam cerveja no lado direto (rhs):
regras - apriori(data = Groceries,
parameter = list(supp = 0.001, conf = 0.08),
appearance = list(default = lhs,
rhs = bottled beer),
226
Capítulo 12. Regras de Associação
control = list(verbose = FALSE))
regras - sort(regras, by = lift, decreasing = TRUE)
arules::inspect(regras[1:5])
lhs rhs support confidence coverage lift count
liquor,red/blush wine = bottled beer 0 0.90 0.00 11.24 19
soda,liquor = bottled beer 0 0.57 0.00 7.10 12
liquor = bottled beer 0 0.42 0.01 5.24 46
herbs,bottled water = bottled beer 0 0.40 0.00 4.97 12
whole milk,soups = bottled beer 0 0.38 0.00 4.71 11
# buscar regras que involvam cerveja no lado esquedo (lhs):
regras - apriori(data = Groceries,
parameter = list(supp = 0.001, conf = 0.15,
minlen = 2),
appearance = list(default = rhs,
lhs = bottled beer),
control = list(verbose = FALSE))
arules::inspect(regras)
lhs rhs support confidence coverage lift count
bottled beer = bottled water 0.02 0.20 0.08 1.77 155
bottled beer = soda 0.02 0.21 0.08 1.21 167
bottled beer = rolls/buns 0.01 0.17 0.08 0.92 134
bottled beer = other vegetables 0.02 0.20 0.08 1.04 159
bottled beer = whole milk 0.02 0.25 0.08 0.99 201
Para visualizar interativamente as regras, pode-se utilizar
regras - apriori(Groceries,
parameter = list(supp = 0.001, conf = 0.8))
plot(regras[1:20], method = graph,
interactive = TRUE, shading = NA)
227
.
Em geral, utilizam-se matrizes esparsas para representar os dados binários, pois a ma-
triz de dados contém poucas entradas 1”. Dessa forma, a representação esparsa leva a uma
grande economia de memória. Veja mais detalhes na Seção A.3.
228
Capítulo 13
Sistemas de Recomendação
No Capítulo 12 vimos que regras de associação são uma maneira de indicar um produto a
um usuário a partir do seu histórico de compra. Neste capítulo, estudaremos algumas técnicas
de recomendação que funcionam em contextos mais gerais. Assuma que cada usuário pode
atribuir uma nota (avaliação) para cada produto. Por exemplo, no Netflix, podemos avaliar
cada filme como 1, 2, 3, 4 ou 5 estrelas.
De um ponto de vista formal, considere os conjuntos
U = {u1,...,um} e I = {i1,...,in},
em que U indica o conjunto de usuários e I indica o conjunto de produtos (itens). Seja Rj,k a
avaliação dada pelo usuário j ao produto k, como mostrado na Tabela 13.1.
Tabela 13.1: Estrutura dos dados para um problema sistemas de recomendação.
Usuário/Produto i1 i2 ... in
u1 R1,1 R1,2 ... R1,n
u2 R2,1 R2,2 ... R2,n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
um Rm,1 Rm,2 ... Rm,n
Normalmente diversas entradas dessa matriz são desconhecidas, pois muitos usuários
nunca atribuíram notas para uma grande quantidade de produtos. Uma questão central em
um problema de recomendação consiste em como imputar essas notas do modo a descobrir,
para cada usuário, produtos não avaliados por ele que provavelmente o agradarão.
Existem dois principais grupos de sistemas de recomendação:
229
13.1. Filtro Colaborativo Baseado no Usuário
• Sistemas baseados no conteúdo. Esses sistemas são baseados em características dos
produtos que o usuário gosta (por exemplo, diretores dos filmes, gêneros etc) e, com
base nesses produtos, busca-se descobrir outros produtos com as mesmas característi-
cas.
• Sistemas baseados em filtros colaborativos. Esses sistemas fornecem recomendações
baseadas somente na matriz de notas. Utilizando essa matriz, procura-se por padrões
(por exemplo, usuários parecidos com o usuário de interesse). A suposição básica de
filtros colaborativos é que usuários que concordaram no passado irão concordar no fu-
turo.
Sistemas baseados no conteúdo, em geral, são obtidos através de métodos de regressão já
estudados anteriormente. Assim, focaremos aqui em filtros colaborativos.
Observação 13.1 (Normalização das notas). É comum se observar um viés nas notas. Alguns
usuários tendem a dar notas muito altas para todos os produtos; outros tendem a dar notas
muito baixas. Para tentar levar isso em consideração, é comum normalizar as notas de cada
usuário antes de aplicar os métodos descritos nesse capítulo. Uma forma de se fazer isso é
trabalhar com as avaliações dadas por
e
Rj,k = Rj,k − R̄j,
em que R̄j é a média das notas dadas pelo usuário j.
Nas Seções 13.1-13.3 apresentaremos alguns filtros colaborativos comumente utilizados
enquanto na Seção 13.4 discutiremos como avaliar a performance desses métodos, bem como
fazer seleção de modelos.
13.1 Filtro Colaborativo Baseado no Usuário
Filtros colaborativos baseados no usuário funcionam de forma parecida com o método
KNN (Seções 4.3 e 8.6). Inicialmente, define-se uma medida de similaridade entre os usuários
que avalia a similaridade entre as notas por eles atribuídas. Uma medida usual é a correlação
de Pearson:
sim(ua,ub) = cor(R∗
ua,.,R∗
ub,.),
em que R∗
ua,. é o vetor de notas atribuídas pelo usuário ua aos produtos avaliados por ambos
ua e ub.
230
Capítulo 13. Sistemas de Recomendação
Seja k ≥ 1 fixo. Para estimar Rj,l, a nota que o usuário j daria para o produto l caso o
avaliasse, buscam-se os k usuários mais parecidos a j (isto é, os usuários com maior similari-
dade com j) que avaliaram o produto l. Calcula-se, então, as médias das notas dadas por esses k
usuários ao produto l
b
Rj,l =
1
k ∑
s∈Vj
Rs,l,
em que Vj é o conjunto dos k usuários mais similares ao usuário j.
O valor de k pode ser escolhido com a utilização de técnicas abordadas na Seção 13.4.
13.2 Filtro Colaborativo Baseado no Produto
Filtros colaborativos baseados no produto são muito parecidos com filtros colaborativos
baseados no usuário (Seção 13.1). A diferença básica entre ambos é que, para se estimar Rj,l,
a nota que o usuário j daria para o produto l caso o avaliasse, buscam-se agora os k produtos
mais parecidos ao item l (e não os k usuários mais parecidos com j).
Para medir a similaridade entre as notas atribuídas por cada um dos usuários ao produto
l com as notas atribuídas por cada um dos usuários aos outros produtos, pode-se, novamente,
utilizar a correlação de Pearson. Dessa vez, definida como:
sim(ia,ib) = cor(R∗
.,ia
,R∗
.,ib
),
em que R∗
.,ia
é o vetor de notas atribuídas para o produto ia por cada um dos usuários que
avaliaram ia e ib.
A predição para Rj,l é então dada pelas médias das notas dos k produtos mais parecidos a
l:
b
Rj,l =
1
k ∑
s∈Vl
Rj,s,
em que Vl é o conjunto dos k produtos mais similares ao produto l. Novamente, o valor de k
pode ser escolhido com a utilização de técnicas abordadas na Seção 13.4.
13.3 FunkSVD
Neste método, desenvolvido por Simon Funk em https://sifter.org/simon/journal/20061211.
html, cada usuário j é descrito por um vetor de variáveis latentes uj e cada produto l é des-
crito por um vetor de variáveis latentes vl. A ideia é modelar cada nota utilizando a seguinte
aproximação:
Rj,l ≈ u
|
j vl.
231
13.4. Seleção de Modelos
Os vetores latentes são estimados de forma a minimizar
∑
j
∑
l

Rj,l − u
|
j vl
2
,
em que a somatória é feita sob todos os índices referentes às avaliações feitas por cada usuário.
Essa minimização é feita utilizando-se um método de gradiente descendente estocástico, o que
torna o processo rápido e eficiente em termos de utilização de memória.
13.4 Seleção de Modelos
Para comparar modelos de sistemas de recomendação, utilizamos uma variação de data
splitting (Seção 1.5.1). Essa técnica permite também escolher parâmetros dos modelos utili-
zados (por exemplo, k no filtro colaborativo). Primeiramente, separamos os usuários em dois
conjuntos: treinamento e validação. Então, consideramos que algumas das notas dadas por
alguns dos usuários do conjunto de validação são desconhecidas e verificamos a capacidade
de previsão dos algoritmos utilizados para essas notas.
Seja K o conjunto de todos os pares usuário/produto para o qual a nota real Ri,j é conhe-
cida, mas não foi utilizada para treinar o modelo. Diversas medidas da capacidade preditiva
podem ser utilizadas, dentre as quais
• MSE:
∑(i,j)∈K(Ri,j−b
Ri,j)2
|K|
• RMSE:
√
EQM
• MAE:
∑(i,j)∈K |Ri,j−b
Ri,j|
|K|
.
Essas medidas avaliam o desempenho preditivo dos modelos e podem ser utilizadas para
fazer seleção de modelos. Contudo, podemos ter interesse apenas em medir se o método
está fornecendo boas recomendações, e não se as notas individuais são preditas de forma
satisfatória. Para tanto, outras medidas podem ser utilizadas. Assuma que recomendamos
para um dado usuário os N produtos com maior valor predito para a avaliação. Assuma
também que definimos o que é uma avaliação boa e o que é uma avaliação ruim (por exemplo,
uma avaliação boa é uma nota maior que 3).
Com base nas N recomendações feitas para cada usuário do conjunto de validação (isto é,
os N produtos com maior nota predita), podemos construir a matriz de confusão apresentada
na Tabela 13.2.
232
Capítulo 13. Sistemas de Recomendação
Tabela 13.2: Matriz de confusão para produtos recomendados.
Valor
Verdadeiro
Valor Predito
Ruim Bom
Ruim a b
Bom c d
A partir dessa tabela diversas medidas podem ser utilizadas para fazer seleção de mode-
los. Entre elas destacamos:
• Acurácia: a+d
a+b+c+d
• VPP/Precision: d
b+d
• Sensibilidade/Recall: d
c+d
Outra medidas de desempenho definidas na Seção 7.4 no contexto de classificação podem
também ser utilizadas. A Figura 13.1 ilustra algumas dessas medidas para três sistemas de
recomendação aplicados ao banco de dados MovieLense. Esses sistemas foram treinados
com a utilização do pacote recommenderlab:
library(recommenderlab, verbose = FALSE)
# dados de filmes
data(MovieLense)
# listar algoritmos utilizados atribuindo nomes
metodos - list(
item-based CF 1 = list(name = IBCF, param = list(k = 5)),
user-based CF 1 = list(name = UBCF, param = list(nn = 5)),
funkSVD = list(name = SVDF))
# definir o esquema do data splitting
esquema1 - evaluationScheme(MovieLense,
method = split,
train = 0.8,
given = 15)
# given: nº de avaliações já feitas
# por cada usuário do conjunto de teste
233
13.4. Seleção de Modelos
Figura 13.1: Valor verdadeiro positivo vs valor verdadeiro negativo para diferentes
métodos e N = 1, 5 e 10.
# parte 1: avaliar o quao bom sao as notas atribuidas
results1 - recommenderlab::evaluate(esquema1,
metodos,
type = ratings,
progress = FALSE)
# parte 2: avaliar o quao bom sao as recomendacoes top-N
esquema2 - evaluationScheme(MovieLense,
method = split,
train = 0.8,
given = 10,
goodRating = 3)
# goodRating: a partir de que nota consideramos que temos
# uma boa predicao?
results2 - recommenderlab::evaluate(esquema2, metodos,
n = c(1, 5, 10),
progress = FALSE)
# n: quantos produtos estamos recomendando
234
Parte IV
Apêndice
235
Apêndice A
Apêndice
A.1 Imagens
Este capítulo descreve brevemente como manipular imagens que têm formato do tipo ras-
ter, como por exemplo JPEG e PNG. Um formato é dito do tipo raster quando ele representa
uma dada imagem utilizando uma ou mais matrizes que contenham informações sobre os pi-
xels da figura. Para entender esse conceito, vamos começar com uma ideia simples: considere
a matriz binária
M =



1 1 0
1 1 0
0 0 0



A ideia chave é que podemos associar a essa matriz a imagem
Figura A.1: Imagem correspondente à matriz M.
Nessa representação uma entrada 1 na matriz simboliza que o pixel correspondente a esse
237
A.1. Imagens
elemento na imagem tem a cor preto enquanto o valor 0 simboliza um pixel de cor branca. A
partir dessa ideia podemos criar imagens como
Figura A.2: Imagem feita utilizando-se apenas uma matriz binária.
Note que, quanto mais pixels em uma imagem (i.e., quanto mais entradas há em uma
matriz), maior a resolução da imagem.
Essa ideia pode ser sofisticada. Ao invés de utilizar apenas 0 (branco) e 1 (preto), pode-
mos utilizar qualquer número entre 0 e 1 para denotar uma intensidade de cinza. Com isso,
podemos fazer imagens como
Figura A.3: Imagem feita utilizando-se uma matriz cujas entradas representam o
tom de cinza a ser utilizado.
A partir desse princípio podemos construir imagens coloridas. Qualquer cor pode ser des-
crita como uma combinação das cores vermelho, verde e azul. Assim, podemos representar
uma imagem com três matrizes simultaneamente:
• A primeira indica quanto vermelho vamos ter em cada pixel (cada elemento é um nú-
mero entre 0 e 1)
238
Apêndice A. Apêndice
• A segunda indica quanto verde vamos ter em cada pixel (cada elemento é um número
entre 0 e 1)
• A terceira indica quanto azul vamos ter em cada pixel (cada elemento é um número
entre 0 e 1)
Com isso, podemos fazer imagens como
Figura A.4: Imagem feita utilizando três matrizes cujas entradas representam a in-
tensidade de vermelho, verde e azul utilizada em cada pixel.
Essas matriz são as chamadas de RGB channels (RGB é a sigla em inglês para vermelho,
verde e azul). Cada matriz é chamada de um canal.
Note que utilizar o valor 0 para branco e 1 preto é apenas uma convenção. Formatos
diferentes utilizam convenções diferentes (por exemplo, alguns formatos atribuem 0 a branco
e 256 a preto). Em vários dos formatos também é feita uma compressão da imagem, de modo
que ela ocupe menos espaço. Nesse caso, leitores destes formatos devem saber também como
descomprimi-las (o que muitas vezes leva a uma pequena perda de resolução).
Para ler uma imagem no R, podemos utilizar o seguinte código.
m - matrix(c(1, 1, 0, 1, 1, 0, 0, 0, 0), 3, 3)
image(m[,3:1], col = c(white, black))
## Exemplo do simbolo da ufscar:
library(jpeg)
imagem - readJPEG(1024px-UFSCar.jpg) # ler a imagem
dim(imagem)
#[1] 746 1024 3 # 3 matrizes com 746*1024 pixels
image(t(imagem[746:1,, 3]),
col = grey.colors(1000, start = 0, end = 1))
# imagem em tons de cinza (utilizando apenas a terceira matriz)
rasterImage(imagem, 0, 0, 1, 1) # imagem colorida
239
A.2. Textos
A.2 Textos
Digamos que observamos diversos documentos de texto, como, por exemplo, o texto em
uma página de internet, o texto de um tweet ou de um post do facebook. Nesta seção descre-
veremos o método bag-of-words. Esse método é utilizado para criar uma representação vetorial
(ou seja, criar covariáveis) para cada texto. Considere os seguintes textos, retirados de uma
conta de e-email:
Texto 1: x1 = Poderoso Estimulante Natural - Esquente sua noite na cama.”
Texto 2: x2 = Olá professor, sou aluna de Mineração de Dados.”
Texto 3: x3 = Boa tarde professor Rafael, segue contato como pedido.”
Texto 4: x4 = Aumente sua performance na cama a noite usando esse estimulante. Es-
quente seu relacionamento!”
A ideia do bag-of-words (literalmente, sacola de palavras”) é listar todas as palavras que
aparecem nos documentos e registrar a frequência com que cada uma aparece. Esse processo
leva à seguinte matriz documento-termo:
Tabela A.1: Exemplo de matriz documento-termo
poderoso estimulante natural esquente sua noite na ... esse
Texto 1 1 1 1 1 1 1 1 ... 0
Texto 2 0 0 0 0 0 0 1 ... 0
Texto 3 0 0 0 0 0 0 0 ... 0
Texto 4 0 1 0 1 1 1 1 ... 1
Nessa matriz documentos próximos” têm uma representação mais parecida, pois utili-
zam palavras parecidas. Há algumas variações que podem ser feitas nessa matriz documento-
termo. Por exemplo, como documentos diferentes têm tamanhos diferentes, pode-se norma-
lizar esses vetores (por exemplo, dividindo-se as frequências absolutas pelo tamanho de cada
um dos documentos. Isso torna os diferentes documentos mais comparáveis.
Outra alteração comumente feita na representação bag-of-words consiste em remover pa-
lavras muito comuns, como artigos e preposições. Essas palavras são chamadas de stop words.
A maioria dos pacotes para trabalhar com texto (como o tm do R) já contém uma lista delas.
Finalmente, também pode-se juntar palavras que têm mesma raiz (um processo chamado de
stemming).
Um problema da representação da Tabela A.1 é que ela ignora completamente a ordem
das palavras. Uma maneira de contornar isso é adicionar termos que são bigramas. Bigra-
mas são conjuntos de duas palavras que aparecem simultaneamente, uma seguida da outra
(como poderoso estimulante” no exemplo). Cada bigrama pode também fazer parte da ma-
triz documento-termo. Essa ideia é generalizada para n-gramas.
240
Apêndice A. Apêndice
A.3 Matrizes esparsas
Matrizes esparsas são matrizes com muitas entradas 0. Elas ocorrem naturalmente em
diversas aplicações. Por exemplo, a matriz documento-termo descrita na Seção A.2 possui,
em geral, quase todas as entradas 0, uma vez que cada texto utiliza poucas palavras de todo
o dicionário. Analogamente, matrizes de dados utilizadas em algoritmos de regras de as-
sociação também costumam ser esparsas: a maior parte das compras de mercado envolvem
pouquíssimos produtos.
Matrizes esparsas podem ser armazenadas de forma mais eficiente. Por exemplo, consi-
dere a matriz






0 −5 0 0 0 0 0
0 0 10 0 0 0 0
0 0 0 0 0 0 5
0 0 9 0 8 0 0






Uma representação ingênua dessa matriz requer o armazenamento de 4 × 7 = 28 números,
um para cada entrada da matriz. Uma representação mais eficiente consiste em armazenar
apenas as entradas que são diferentes de zero. Assim, temos a seguinte representação nesse
caso:
Linha Coluna Valor
1 2 -5
2 3 10
3 7 5
4 3 9
4 5 8
Essa segunda representação, que é chamada de representação esparsa, exige armazenar ape-
nas 5 × 3 = 15 números. Assim, ela utiliza menos memória do computador, o que permite que
matrizes muito maiores possam ser armazenadas.
Tanto o pacote tm quando o arules fornecem matrizes com essa representação. Con-
tudo, nem todos os pacotes com algoritmos de aprendizado de máquina dão suporte para
matrizes com representação esparsa. Por exemplo, enquanto o pacote glmnet pode ajustar
uma regressão com uma matriz de covariáveis nesse formato, a função lm requer que a matriz
seja convertida para uma matriz em sua representação usual. Essa limitação é um obstáculo
para que algumas dessas funções possam ser utilizadas em bancos de dados grandes (mas
esparsos).
241
A.3. Matrizes esparsas
242
Índice Remissivo
Agrupamento espectral, 215
AIC, 34
Análise de agrupamento, 209
Análise discriminante, 147
Aprendizado não supervisionado, xiv
Aprendizado supervisionado, xiv
Atributos, 4
Autoencoders, 202
Backpropagation, 95
Bag-of-words, 240
Bagging, 82
Bayes ingênuo, 144
Boosting, 89, 159
Características (features), 4
Classificadores plug-in, 141
Classificação, 133
Clustering hierárquico, 219
Combinação de classificadores, 177
Componentes principais, 190
Conjunto de teste, 14
Conjunto de treinamento, 14
Conjunto de validação, 14
Convergência, 102
Covariate shift, 173
Curva ROC, 170
Data splitting, 14
Dataset shift, 172
Deep learning, 96
Densidade condicional, 124
Dimensão VC, 182
Escalonamento multidimensional, 193
Esparsidade, 109
ExplainableML, 119
Filtro colaborativo, 230, 231
Florestas aleatórias, 82, 85
FunkSVD, 231
Função de ativação, 92
Função de perda, 9
ICE, 122
Individual conditional expectation, 122
Inferência Conformal, 127
Interpretabilidade, 119
K-médias, 210
Kernel de Mercer, 64
Kernel de suavização, 59
Kernel PCA, 198
Kernel ridge regression, 67
Lasso, 37
LIME, 120
243
.
Lipschitz, 102
Maldição da dimensionalidade, 107
Mapas de difusão, 215
Matriz de Gram, 68
Matrizes esparsas, 241
Minimax, 106
Modelos aditivos, 74
Modelos aditivos esparsos, 115
Método de mínimos quadrados, 28
Nadaraya-Watson, 59
Oráculo, 29
Overfitting, 12
Paramétrica, 27
Partial dependence plot, 122
PDP, 122
Penalização, 21, 34
Perda 0-1, 134
Prior shift, 176
Projeções aleatórias, 201
Rótulo (label), 4
Redes neurais artificiais, 91, 161
Redundância, 110
Redução de dimensionalidade, 189
Regras de associação, 223
Regressão, 3
Regressão linear, 27
Regressão logística, 142
regressão polinomial local, 61
Regressão ridge, 40
Risco, 9, 134
Risco condicional, 11
Risco esperado, 11
Risco quadrático, 10
RKHS, 62
Seleção de variáveis, 42
Shattering number, 181
Sistemas de recomendação, 229
Smoothing splines, 68
Splines, 56
Stepwise, 35
Sub-ajuste, 12
Super-ajuste, 12
Support vector machines, 151
Support vector regression machine, 73
Séries ortogonais, 53
Teoria do aprendizado estatístico, 179
Truque do kernel, 69
Tuning parameters, 24
Underfitting, 12
Validação cruzada, 14
Variáveis explicativas, 4
Variável resposta, 4
Viés de seleção, 172
XGBoost, 91
Árvore de regressão, 77
Árvores de classificação, 156
244
Bibliografia
Agrawal, R., Imieliński, T.  Swami, A. (1993). Mining association rules between
sets of items in large databases, Em Proceedings of the 1993 ACM SIGMOD
international conference on Management of data.
Aronszajn, N. (1950). Theory of Reproducing Kernels. Transactions of the American
Mathematical Society, 68(3), 337–404.
Arthur, D.  Vassilvitskii, S. (2006). k-means++: The advantages of careful seeding (rel.
técn.). Stanford.
Aswani, A., Bickel, P., Tomlin, C. Et al. (2011). Regression on manifolds: estimation
of the exterior derivative. The Annals of Statistics, 39(1), 48–81.
Belkin, M., Hsu, D., Ma, S.  Mandal, S. (2019a). Reconciling modern machine-
learning practice and the classical bias–variance trade-off. Proceedings of the
National Academy of Sciences, 116(32), 15849–15854.
Belkin, M., Hsu, D. J.  Mitra, P. (2018). Overfitting or perfect fitting? Risk bounds
for classification and regression rules that interpolate, Em Advances in neural
information processing systems.
Belkin, M., Rakhlin, A.  Tsybakov, A. B. (2019b). Does data interpolation contra-
dict statistical optimality?, Em The 22nd International Conference on Artificial
Intelligence and Statistics.
Bellman, R. (1966). Dynamic programming. Science, 153(3731), 34–37.
Benedetti, J. K. (1977). On the nonparametric estimation of regression functions. Jour-
nal of the Royal Statistical Society. Series B (Methodological), 248–253.
Bengio, Y., Delalleau, O., Roux, N. L., Paiement, J.-F., Vincent, P.  Ouimet, M. (2004).
Learning eigenfunctions links spectral embedding and kernel PCA. Neural
computation, 16(10), 2197–2219.
Beran, R. (2000). REACT scatterplot smoothers: Superefficiency through basis eco-
nomy. Journal of the American Statistical Association, 95(449), 155–171.
245
.
Biau, G. (2012). Analysis of a Random Forests Model. JMLR, 13(1), 1063–1095.
Bickel, P. J.  Li, B. (2007). Local polynomial regression on unknown manifolds. Em
Complex datasets and inverse problems (pp. 177–186). Institute of Mathematical
Statistics.
Bishop, C. M. (2006). Pattern recognition and machine learning. Springer.
Botari, T., Izbicki, R.  de Carvalho, A. C. (2019). Local Interpretation Methods to
Machine Learning Using the Domain of the Feature Space, Em Joint European
Conference on Machine Learning and Knowledge Discovery in Databases. Sprin-
ger.
Breiman, L. (2001a). Statistical modeling: The two cultures. Statistical Science, 16(3),
199–231.
Breiman, L. (1996). Stacked regressions. Machine learning, 24(1), 49–64.
Breiman, L. (2001b). Random Forests. Machine Learning, 45(1), 5–32.
Chen, T.  Guestrin, C. (2016). Xgboost: A scalable tree boosting system, Em Procee-
dings of the 22nd acm sigkdd international conference on knowledge discovery and
data mining.
Chentsov, N. (1962). Evaluation of an unknown distribution density from observati-
ons. DOKLADY, 147(1), 1559–1562.
Cherkassky, V., Shao, X., Mulier, F. M.  Vapnik, V. N. (1999). Model complexity
control for regression using VC generalization bounds. IEEE transactions on
Neural Networks, 10(5), 1075–1089.
Cleveland, W. S. (1979). Robust locally weighted regression and smoothing scatter-
plots. Journal of the American statistical association, 74(368), 829–836.
Coifman, R. R.  Lafon, S. (2006). Diffusion maps. Applied and computational harmonic
analysis, 21(1), 5–30.
Cortes, C.  Vapnik, V. (1995). Support vector machine. Machine learning, 20(3), 273–
297.
Coscrato, V., de Almeida Inácio, M. H.  Izbicki, R. (2020). The NN-Stacking: Feature
weighted linear stacking through neural networks. Neurocomputing.
Coscrato, V., Inácio, M. H. d. A., Botari, T.  Izbicki, R. (2019). NLS: an accurate and
yet easy-to-interpret regression method. arXiv preprint arXiv:1910.05206.
Dalmasso, N., Pospisil, T., Lee, A. B., Izbicki, R., Freeman, P. E.  Malz, A. I. (2020).
Conditional density estimation tools in python and R with applications to
photometric redshifts and likelihood-free cosmological inference. Astronomy
and Computing, 100362.
246
Apêndice A. Bibliografia
De Boor, C., De Boor, C., Mathématicien, E.-U., De Boor, C.  De Boor, C. (1978). A
practical guide to splines (Vol. 27). Springer-Verlag New York.
DeGroot, M. H.  Schervish, M. J. (2012). Probability and statistics. Pearson Education.
Dietterich, T. G. (2000). Ensemble methods in machine learning, Em International
workshop on multiple classifier systems. Springer.
Diniz, M. A., Izbicki, R., Lopes, D.  Salasar, L. E. (2019). Comparing probabilistic
predictive models applied to football. Journal of the Operational Research Soci-
ety, 70(5), 770–782.
Drineas, P.  Mahoney, M. W. (2005). On the Nyström method for approximating a
Gram matrix for improved kernel-based learning. Journal of Machine Learning
Research, 6(Dec), 2153–2175.
Drucker, H., Burges, C. J., Kaufman, L., Smola, A. J.  Vapnik, V. (1997). Support vec-
tor regression machines, Em Advances in neural information processing systems.
Efromovich, S. (1999). Nonparametric Curve Estimation: Methods, Theory and Applica-
tion. Springer.
Fan, J. (1993). Local Linear Regression Smoothers and Their Minimax Efficiencies.
Annals of Statistics, 21, 196–216.
Fan, J.  Gijbels, I. (1996). Local polynomial modelling and its applications (Vol. 66). Mo-
nographs on statistics; applied probability 66, CRC Press.
Fan, J., Yao, Q.  Tong, H. (1996). Estimation of conditional densities and sensitivity
measures in nonlinear dynamical systems. Biometrika, 83(1), 189–206.
Fernandez, P.  F., P. C. M. (2020). Data Science, Marketing Business. Insper. https:
//datascience.insper.edu.br
Forman, G. (2006). Quantifying trends accurately despite classifier error and class
imbalance, Em Proceedings of the 12th ACM SIGKDD international conference
on Knowledge discovery and data mining.
Freeman, P. E., Izbicki, R.  Lee, A. B. (2017). A unified framework for constructing,
tuning and assessing photometric redshift density estimates in a selection
bias setting. Monthly Notices of the Royal Astronomical Society, 468(4), 4556–
4565.
Freund, Y.  Schapire, R. E. (1995). A desicion-theoretic generalization of on-line lear-
ning and an application to boosting, Em European conference on computational
learning theory. Springer.
Friedman, J., Hastie, T.  Tibshirani, R. (2010). Regularization paths for generalized
linear models via coordinate descent. Journal of statistical software, 33(1), 1.
247
.
Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine.
Annals of statistics, 1189–1232.
Gauss, C. (1809). Theoria motus corporum coelestium in sectionibus conicis solem ambien-
tium.
Goldstein, A., Kapelner, A., Bleich, J.  Pitkin, E. (2015). Peeking inside the black
box: Visualizing statistical learning with plots of individual conditional ex-
pectation. Journal of Computational and Graphical Statistics, 24(1), 44–65.
Goodfellow, I., Bengio, Y.  Courville, A. (2016). Deep learning. MIT press.
Greenshtein, E., Ritov, Y. Et al. (2004). Persistence in high-dimensional linear predic-
tor selection and the virtue of overparametrization. Bernoulli, 10(6), 971–988.
Györfi, L., Kohler, M., Krzyzak, A.  Walk, H. (2006). A distribution-free theory of non-
parametric regression. Springer Science  Business Media.
Hall, P., Racine, J. S.  Li, Q. (2004). Cross-Validation and the Estimation of Condi-
tional Probability Densities. Journal of the American Statistical Association, 99,
1015–1026.
Hastie, T.  Tibshirani, R. (1986). Generalized Linear Models (with Discussion). Sta-
tistical Science, 1(3), 297–318.
Hastie, T., Tibshirani, R.  Friedman, J. (2001). The Elements of Statistical Learning.
New York, NY, USA, Springer New York Inc.
Hoerl, A. E.  Kennard, R. W. (1970). Ridge regression: Biased estimation for no-
northogonal problems. Technometrics, 12(1), 55–67.
Hyndman, R. J., Bashtannyk, D. M.  Grunwald, G. K. (1996). Estimating and visua-
lizing conditional densities. Journal of Computational  Graphical Statistics, 5,
315–336.
Izbicki, R.  Lee, A. B. (2016). Nonparametric Conditional Density Estimation in a
High-Dimensional Regression Setting. Journal of Computational and Graphical
Statistics, 25(4), 1297–1316.
Izbicki, R.  Lee, A. B. (2017). Converting high-dimensional regression to high-dimensional
conditional density estimation. Electron. J. Statist., 11(2), 2800–2831.
Izbicki, R., Lee, A. B.  Freeman, P. E. (2017). Photo-z estimation: An example of non-
parametric conditional density estimation under selection bias. The Annals of
Applied Statistics, 11(2), 698–724.
Izbicki, R., Lee, A. B.  Pospisil, T. (2019). ABC–CDE: Toward approximate bayesian
computation with complex high-dimensional data and limited simulations.
Journal of Computational and Graphical Statistics, 28(3), 481–492.
248
Apêndice A. Bibliografia
Izbicki, R.  Musetti, M. (2020). Combinando Métodos de Aprendizado Supervi-
sionado para a Melhoria da Previsão do Redshift de Galáxias. TEMA (São
Carlos), 21(1), 117.
Izbicki, R., Shimizu, G.  Stern, R. B. (2020a). CD-split: efficient conformal regions in
high dimensions. arXiv preprint arXiv:2007.12778.
Izbicki, R., Shimizu, G. T.  Stern, R. B. (2020b). Distribution-free conditional predic-
tive bands using density estimators. Proceedings of Machine Learning Research
(AISTATS Track).
Izbicki, R.  Stern, R. B. (2013). Learning with many experts: model selection and
sparsity. Statistical Analysis and Data Mining: The ASA Data Science Journal,
6(6), 565–577.
James, G., Witten, D., Hastie, T.  Tibshirani, R. (2013). An introduction to statistical
learning (Vol. 112). Springer.
Johnson, W. B.  Lindenstrauss, J. (1984). Extensions of Lipschitz mappings into a
Hilbert space. Contemporary mathematics, 26(189-206), 1.
Kassambara, A.  Mundt, F. (2020). factoextra: Extract and Visualize the Results of Mul-
tivariate Data Analyses [R package version 1.0.7]. R package version 1.0.7.
https://CRAN.R-project.org/package=factoextra
Kimeldorf, G.  Wahba, G. (1971). Some results on Tchebycheffian spline functions.
Journal of Mathematical Analysis and Applications, 33(1), 82–95.
Kimeldorf, G. S.  Wahba, G. (1970). A correspondence between Bayesian estimation
on stochastic processes and smoothing by splines. The Annals of Mathematical
Statistics, 495–502.
Kpotufe, S. (2011). k-NN regression adapts to local intrinsic dimension, Em Advances
in Neural Information Processing Systems.
Krantz, S. G.  Parks, H. R. (2002). A primer of real analytic functions. Springer.
Lad, F. (1996). Operational subjective statistical methods: A mathematical, philosophical,
and historical introduction (Vol. 315). Wiley-Interscience.
Lee, A. B.  Izbicki, R. (2016). A spectral series approach to high-dimensional non-
parametric regression. Electronic Journal of Statistics, 10(1), 423–463.
Legendre, A. M. (1805). Nouvelles méthodes pour la détermination des orbites des comètes.
F. Didot.
Lei, J., G’Sell, M., Rinaldo, A., Tibshirani, R. J.  Wasserman, L. (2018). Distribution-
free predictive inference for regression. Journal of the American Statistical As-
sociation, 113(523), 1094–1111.
249
.
Lei, J.  Wasserman, L. (2014). Distribution-free prediction bands for non-parametric
regression. Journal of the Royal Statistical Society: Series B (Statistical Methodo-
logy), 76(1), 71–96.
Lundberg, S. M.  Lee, S.-I. (2017). A unified approach to interpreting model predic-
tions, Em Advances in neural information processing systems.
McCulloch, W. S.  Pitts, W. (1943). A logical calculus of the ideas immanent in
nervous activity. The bulletin of mathematical biophysics, 5(4), 115–133.
Minh, H. Q. (2010). Some properties of Gaussian reproducing kernel Hilbert spa-
ces and their implications for function approximation and learning theory.
Constructive Approximation, 32(2), 307–338.
Minh, H. Q., Niyogi, P.  Yao, Y. (2006). Mercer’s theorem, feature maps, and smo-
othing, Em International Conference on Computational Learning Theory. Sprin-
ger.
Molnar, C. (2019). Interpretable machine learning. Lulu.com.
Morettin, P. A.  Singer, J. M. (2019). Introdução à Ciência de Dados.
Nadaraya, E. A. (1964). On estimating regression. Theory of Probability  Its Applica-
tions, 9(1), 141–142.
Nadler, B., Lafon, S., Coifman, R. R.  Kevrekidis, I. G. (2006). Diffusion maps, spec-
tral clustering and reaction coordinates of dynamical systems. Applied and
Computational Harmonic Analysis, 21(1), 113–127.
Neter, J., Kutner, M. H., Nachtsheim, C. J.  Wasserman, W. (1996). Applied linear
statistical models.
Nosedal-Sanchez, A., Storlie, C. B., Lee, T. C.  Christensen, R. (2012). Reproducing
kernel hilbert spaces for penalized regression: A tutorial. The American Sta-
tistician, 66(1), 50–60.
Papadopoulos, H., Proedrou, K., Vovk, V.  Gammerman, A. (2002). Inductive confi-
dence machines for regression, Em European Conference on Machine Learning.
Springer.
Park, T.  Casella, G. (2008). The bayesian lasso. Journal of the American Statistical
Association, 103(482), 681–686.
Parzen, E. (1962). On estimation of a probability density function and mode. The
annals of mathematical statistics, 33(3), 1065–1076.
Pearce, N. D.  Wand, M. P. (2006). Penalized splines and reproducing kernel methods.
The american statistician, 60(3).
250
Apêndice A. Bibliografia
Pearl, J. (2014). Probabilistic reasoning in intelligent systems: networks of plausible infe-
rence. Elsevier.
Pontil, M. (2003). Learning with reproducing kernel Hilbert spaces: a guide tour.
Bulletin of the Italian Artificial Intelligence Association, AI* IA Notizie.
Ravikumar, P., Lafferty, J., Liu, H.  Wasserman, L. (2009). Sparse additive models.
Journal of the Royal Statistical Society: Series B, 71(5), 1009–1030.
Ribeiro, M. T., Singh, S.  Guestrin, C. (2016). Why should i trust you?Explaining
the predictions of any classifier, Em Proceedings of the 22nd ACM SIGKDD
international conference on knowledge discovery and data mining.
Ribeiro, M. T., Singh, S.  Guestrin, C. (2018). Anchors: High-precision model-agnostic
explanations, Em Thirty-Second AAAI Conference on Artificial Intelligence.
Rojas, R. (2013). Neural networks: a systematic introduction. Springer Science  Business
Media.
Rosenblatt, F. (1958). The perceptron: a probabilistic model for information storage
and organization in the brain. Psychological review, 65(6), 386.
Rosenblatt, M. (1969). Conditional probability density and regression estimators. Em
P. Krishnaiah (Ed.), Multivariate Analysis II.
Saerens, M., Latinne, P.  Decaestecker, C. (2002). Adjusting the outputs of a classifier
to new a priori probabilities: a simple procedure. Neural computation, 14(1),
21–41.
Schmidt, S. J., Malz, A. I., Soo, J. Y. H., Almosallam, I. A., Brescia, M., Cavuoti, S.,
Cohen-Tanugi, J., Connolly, A. J., DeRose, J., Freeman, P. E., Graham, M. L.,
Iyer, K. G., Jarvis, M. J., Kalmbach, J. B., Kovacs, E., Lee, A. B., Longo, G.,
Morrison, C. B., Newman, J. A., ... Izbicki, R. (2020). Evaluation of proba-
bilistic photometric redshift estimation approaches for The Rubin Observa-
tory Legacy Survey of Space and Time (LSST) [staa2799]. Monthly Notices of
the Royal Astronomical Society, https://academic.oup.com/mnras/advance-
article-pdf/doi/10.1093/mnras/staa2799/33745738/staa2799.pdf. https://
doi.org/10.1093/mnras/staa2799
Scholkopf, B.  Smola, A. (2002). Learning with kernels. MIT Press, 110–146.
Shi, T., Belkin, M., Yu, B. Et al. (2009). Data spectroscopy: Eigenspaces of convolution
operators and clustering. The Annals of Statistics, 37(6B), 3960–3984.
Stamey, T. A., Kabalin, J. N.  Ferrari, M. (1989). Prostate Specific Antigen in the
Diagnosis and Treatment of Adenocarcinoma of the Prostate. II. Radiation
Treated Patients. The Journal of urology, 141(5), 1084–1087.
251
.
Steinwart, I.  Christmann, A. (2008). Support vector machines. Springer Science 
Business Media.
Stone, C. J. (1977). Consistent nonparametric regression. The annals of statistics, 595–
620.
Stone, M. (1974). Cross-validatory choice and assessment of statistical predictions.
Journal of the Royal Statistical Society: Series B (Methodological), 36(2), 111–133.
Sugiyama, M., Lawrence, N. D.  Schwaighofer, A. (2017). Dataset shift in machine
learning. The MIT Press.
Sugiyama, M., Takeuchi, I., Suzuki, T., Kanamori, T., Hachiya, H.  Okanohara, D.
(2010). Conditional density estimation via least-squares density ratio esti-
mation, Em Proceedings of the Thirteenth International Conference on Artificial
Intelligence and Statistics.
Tenenbaum, J. B., De Silva, V.  Langford, J. C. (2000). A global geometric framework
for nonlinear dimensionality reduction. science, 290(5500), 2319–2323.
Tibshirani, R. (1996). Regression shrinkage and selection via the lasso. Journal of the
Royal Statistical Society: Series B (Methodological), 58(1), 267–288.
Tsybakov, A. B. (2008). Introduction to nonparametric estimation. Springer Science 
Business Media.
Vapnik, V. N. (1999). An overview of statistical learning theory. IEEE transactions on
neural networks, 10(5), 988–999.
Vaz, A. F., Izbicki, R.  Stern, R. B. (2019). Quantification Under Prior Probability
Shift: the Ratio Estimator and its Extensions. Journal of Machine Learning Re-
search, 20(79), 1–33.
Vovk, V. Et al. (2005). Algorithmic learning in a random world. Springer Science  Busi-
ness Media.
Vovk, V., Nouretdinov, I., Gammerman, A. Et al. (2009). On-line predictive linear
regression. The Annals of Statistics, 37(3), 1566–1590.
Wahba, G. (1990). Spline Models for Observational Data. SIAM.
Wasserman, L. (2006). All of Nonparametric Statistics (Springer, Ed.). Springer-Verlag
New York, Inc.
Watson, G. S. (1964). Smooth regression analysis. Sankhyā: The Indian Journal of Statis-
tics, Series A, 359–372.
252

AME.pdf

  • 3.
    Aprendizado de máquina: umaabordagem estatística
  • 4.
    Título: Aprendizado demáquina: uma abordagem estatística, 1a edição. Autores: Rafael Izbicki e Tiago Mendonça dos Santos. Capa: Leonardo M Borges & Kaori Nagata 20-36124 CDD-519.5 Dados Internacionais de Catalogação na Publicação (CIP) (Câmara Brasileira do Livro, SP, Brasil) Izbicki, Rafael Aprendizado de máquina : uma abordagem estatística [livro eletrônico] / Rafael Izbicki, Tiago Mendonça dos Santos. -- São Carlos, SP : Rafael Izbicki, 2020. PDF Bibliografia. ISBN 978-65-00-02410-4 1. Aprendizado do computador 2. Estatística 3. Inteligência artificial 4. Probabilidades I. Santos, Tiago Mendonça dos. II. Título. Índices para catálogo sistemático: 1. Aprendizado de máquina : Estatística : Matemática 519.5 Cibele Maria Dias - Bibliotecária - CRB-8/9427
  • 5.
    Rafael Izbicki & Tiago Mendonçados Santos Aprendizado de máquina: uma abordagem estatística
  • 7.
    Aos nossos avós ItaZajdens Leon Izbicki Rebecca Gassul Izbicki Hely Mendonça Malheiro Therezinha Giacomin Malheiro Maria Anita dos Santos
  • 9.
    Sumário Prefácio xiii I Regressão1 1 Introdução 3 1.1 Notação e Suposições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Predição versus Inferência: Por que estimar r(x)? . . . . . . . . . . . . 5 1.3 As Duas Culturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 A Função de Risco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5 Seleção de Modelos: Super e Sub-Ajuste . . . . . . . . . . . . . . . . . . 12 1.5.1 Data Splitting e Validação Cruzada . . . . . . . . . . . . . . . . . 14 1.5.1.1 Penalização: uma alternativa . . . . . . . . . . . . . . . 21 1.5.2 Balanço entre Viés e Variância . . . . . . . . . . . . . . . . . . . . 22 1.6 Tuning Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2 Métodos Paramétricos 27 2.1 O Método dos Mínimos Quadrados . . . . . . . . . . . . . . . . . . . . 28 2.1.1 Mínimos Quadrados quando a Suposição de Linearidade Falha 29 2.1.2 Regressão Linear no R . . . . . . . . . . . . . . . . . . . . . . . . 30 2.2 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3 Métodos Paramétricos em Altas Dimensões 33 3.1 Busca pelo Melhor Subconjunto de Covariáveis . . . . . . . . . . . . . . 33 3.2 Regressão Stepwise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3 Lasso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 vii
  • 10.
    . 3.3.1 Garantias Teóricas. . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4 Regressão Ridge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.5 Formulação Alternativa . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.6 Interpretação Bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.7 Regressão ridge e lasso no R . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.8 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.9 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4 Métodos Não Paramétricos 53 4.1 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.2 Splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.3 k Vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4 Nadaraya-Watson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.5 Regressão Polinomial Local . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.6 Métodos baseados em RKHSs . . . . . . . . . . . . . . . . . . . . . . . . 62 4.6.1 A matemática do RKHS . . . . . . . . . . . . . . . . . . . . . . . 64 4.6.2 Solução para o problema de otimização . . . . . . . . . . . . . . 66 4.6.3 Exemplo 1: Kernel Ridge Regression . . . . . . . . . . . . . . . . 67 4.6.3.1 Smoothing Splines . . . . . . . . . . . . . . . . . . . . . 68 4.6.3.2 O Truque do Kernel . . . . . . . . . . . . . . . . . . . . 69 4.6.3.3 Implementação eficiente da kernel ridge regression . . 72 4.6.4 Exemplo 2: Support Vector Regression Machine . . . . . . . . . 73 4.7 Modelos Aditivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.8 Árvores de Regressão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.9 Bagging e Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . 82 4.9.1 Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.10 Boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 4.11 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.11.1 Estimação: Backpropagation . . . . . . . . . . . . . . . . . . . . . 95 4.11.2 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.12 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.13 Um Pouco de Teoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.13.1 k-vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . . . . 102 4.13.2 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.14 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 viii
  • 11.
    Capítulo 0. Sumário 5Métodos Não Paramétricos em Altas Dimensões 107 5.1 Taxas de convergência e a maldição da dimensionalidade . . . . . . . . 107 5.1.1 Esparsidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.1.2 Redundâcia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.2 k Vizinhos Mais Próximos e Regressão Linear Local . . . . . . . . . . . 110 5.3 Support Vector Regression . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.4 Séries Ortogonais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.4.1 Bases espectrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.4.2 O estimador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.5 Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.6 SpAM - Modelos Aditivos Esparsos . . . . . . . . . . . . . . . . . . . . 115 5.7 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 6 Outros Aspectos de Regressão 119 6.1 Interpretabilidade (ExplainableML) . . . . . . . . . . . . . . . . . . . . 119 6.1.1 LIME - Local Interpretable Model-agnostic Explanations . . . . . . . 120 6.1.2 PDP e ICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.2 Estimação de Densidades Condicionais . . . . . . . . . . . . . . . . . . 124 6.3 Inferência Conformal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 II Classificação 131 7 Introdução 133 7.1 Função de Risco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 7.2 Estimação do Risco e Seleção de Modelos . . . . . . . . . . . . . . . . . 136 7.3 Balanço entre Viés e Variância . . . . . . . . . . . . . . . . . . . . . . . . 137 7.4 Outras medidas de desempenho . . . . . . . . . . . . . . . . . . . . . . 138 8 Métodos de classificação 141 8.1 Classificadores Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 8.1.1 Métodos de regressão . . . . . . . . . . . . . . . . . . . . . . . . 142 8.1.2 Regressão logística . . . . . . . . . . . . . . . . . . . . . . . . . . 142 8.1.3 Bayes Ingênuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 8.1.4 Análise Discriminante . . . . . . . . . . . . . . . . . . . . . . . . 147 8.1.4.1 Análise Discriminante Linear . . . . . . . . . . . . . . 147 ix
  • 12.
    . 8.1.4.2 Análise DiscriminanteQuadrática . . . . . . . . . . . . 149 8.2 Support Vector Machines (SVM) . . . . . . . . . . . . . . . . . . . . . . 151 8.3 Árvores de Classificação . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 8.4 Bagging e Florestas Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . 158 8.5 Boosting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 8.6 Método dos k Vizinhos Mais Próximos . . . . . . . . . . . . . . . . . . . 161 8.7 Redes Neurais Artificiais . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 8.8 Exemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 9 Outros Aspectos de Classificação 169 9.1 Assimetria na Função de Perda, Conjuntos de Dados Desbalanceados e Outros Cortes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 9.2 Classificação vs Estimação de Probabilidades . . . . . . . . . . . . . . . 172 9.3 Dataset Shift e Viés de Seleção . . . . . . . . . . . . . . . . . . . . . . . . 172 9.3.1 Covariate Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 9.3.2 Prior Shift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 9.4 Combinando Classificadores . . . . . . . . . . . . . . . . . . . . . . . . . 177 9.5 Teoria do Aprendizado Estatístico . . . . . . . . . . . . . . . . . . . . . 179 9.5.1 Prova do teorema VC . . . . . . . . . . . . . . . . . . . . . . . . 184 9.6 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 III Aprendizado não supervisionado 187 10 Redução de Dimensionalidade e Mudança de Representação 189 10.1 Componentes Principais (PCA - Principal Component Analysis) . . . . . 190 10.1.1 Interpretação alternativa: escalonamento multidimensional . . 193 10.1.2 Aplicação: compressão de imagens . . . . . . . . . . . . . . . . . 194 10.2 Kernel PCA (KPCA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 10.3 Projeções Aleatórias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 10.4 Autoencoders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 11 Análise de Agrupamento 209 11.1 K-Médias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 11.2 Agrupamento Espectral . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 11.3 Métodos Hierárquicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 x
  • 13.
    Capítulo 0. Sumário 12Regras de Associação 223 13 Sistemas de Recomendação 229 13.1 Filtro Colaborativo Baseado no Usuário . . . . . . . . . . . . . . . . . . 230 13.2 Filtro Colaborativo Baseado no Produto . . . . . . . . . . . . . . . . . . 231 13.3 FunkSVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 13.4 Seleção de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 IV Apêndice 235 A Apêndice 237 A.1 Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 A.2 Textos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 A.3 Matrizes esparsas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 xi
  • 14.
  • 15.
    Prefácio Aprendizado de máquina(AM) nasceu na década de 60 como um campo da in- teligência artificial que tinha o objetivo de aprender padrões com base em dados. Originalmente, as aplicações de AM eram de cunho estritamente computacional. Contudo, desde o final dos anos 90, essa área expandiu seus horizontes e começou a se estabelecer como um campo por si mesma. Em particular, as aplicações de AM começaram a ter muitas intersecções com as de estatística. A comunidade de AM é bastante interdisciplinar e utiliza ideias desenvolvidas em diversas áreas, sendo a estatística uma delas. Enquanto que até os anos 90 méto- dos criados pela comunidade estatística rapidamente começavam a ser incorporados em AM, mais recentemente o fortalecimento de AM fez com que a direção oposta co- meçasse a ficar cada vez mais comum: métodos desenvolvidos por AM começaram a ser usados em estatística. O objetivo deste livro é introduzir ideias de AM sob uma ótica estatística, que- brando barreiras entre essas duas áreas. Pretendemos, assim, contribuir para dimi- nuir alguns preconceitos existentes, de modo que o melhor de cada campo possa ser aproveitado. Este livro. Este livro é fruto de diversos cursos que demos ao longo dos últimos anos. Ele surgiu no formato de notas de aulas, que foram criadas em função da necessidade que vimos em ter um material que fizesse a ponte entre estatística e AM. Essas notas de aula foram feitas tanto para cursos de graduação quanto para cursos de pós-graduação. Assim, há capítulos mais práticos e capítulos com mais teoria matemática. Nosso objetivo é construir uma base para que o leitor consiga entender os paradigmas mais importantes desta área. O propósito deste livro não é fornecer todos os detalhes e variações que existem sobre os métodos estudados, mas sim introduzir a essência de cada um deles. xiii
  • 16.
    . Inicialmente, estudamos oproblema de aprendizado supervisionado, que con- siste em aprender a fazer predições a partir de um conjunto de dados em que os rótulos (ou seja, os valores da variável resposta) são observados. Tratamos tanto do problema de regressão (Parte I do livro) quanto do problema de classificação (Parte II do livro). Em seguida, estudamos o problema de aprendizado não supervisionado (Parte III), que consiste em aprender mais sobre a estrutura dos dados na ausência de rótulos. As técnicas aqui estudadas englobam métodos de transformação de variá- veis e redução de dimensionalidade, análise de agrupamento, análise de associação e sistemas de recomendação. No Apêndice (Parte IV), fazemos uma breve introdução sobre como manipular imagens e textos, além de como armazenar matrizes esparsas eficientemente. Recomendamos que a leitura do Capítulo 1 seja feita antes dos demais capítulos, pois ele apresenta a nomenclatura e principais paradigmas abordados no restante do livro. De forma geral, o entendimento da Parte II (métodos de classificação) é bastante facilitado pela leitura da Parte I (métodos de regressão). Requisitos. Assumimos que o leitor é familiarizado com fundamentos de proba- bilidade e inferência estatística. Uma ótima introdução ao tema no nível desejado é feita por DeGroot e Schervish (2012). Códigos em R. Ao longo do livro mostramos códigos em R que podem ser utiliza- dos para aplicar os métodos apresentados. De modo algum as funções aqui apresen- tadas constituem uma lista exaustiva com a melhor maneira de fazer essas análises. Isso seria impossível: a comunidade R é muito dinâmica, sendo criados novos paco- tes todos os dias. As funções utilizadas servem de guia para iniciar o leitor em cada método e permitir que ele reproduza os exemplos apresentados. Teoria. Neste livro, incluímos alguns resultados teóricos sobre os problemas e métodos investigados. A teoria é uma ferramenta poderosa para se investigar um problema. Quando bem feita, ela é capaz de trazer insights diferentes sobre, por exemplo, quando um método deve funcionar bem e até mesmo sobre como melhorá- lo. Desta forma, a teoria não é um fim, mas sim uma forma diferente de se estudar um problema. Esta perspectiva se adiciona a, por exemplo, aplicações e estudos de simulação, para fornecer um olhar mais amplo sobre cada método. As seções de teo- ria muitas vezes requerem uma matemática um pouco mais avançada para permitir seu amplo entendimento. Contudo, o leitor que deseja ter apenas um contato inicial xiv
  • 17.
    Capítulo 0. Prefácio comAM pode pular esses trechos sem grandes prejuízos para o entendimento do restante do conteúdo apresentado. Bancos de dados. Em http://www.rizbicki.ufscar.br/ame disponibilizamos ma- terial suplementar que pode ser utilizado pelo leitor, incluindo os bancos de dados usados nos exemplos deste livro. Atualizações do livro também estarão disponíveis nesta página. Agradecimentos. Muitos alunos, orientandos e colegas fizeram sugestões que contribuíram para melhorar a qualidade deste trabalho Agradecemos profundamente as sugestões de Afonso Fernandes Vaz, Afrânio M. C. Vieira, Ana Paula Jorge do Espirito Santo, Danilo Tadeschi, Davi Keglevich Neiva, Deborah Bassi Stern, Gil- son Shimizu, João Marcos Alves Matos, Lucas Leite Cavalaro, Lucas Pereira Lopes, Luiz Gabriel Fernandes Cotrim, João Carlos Poloniato Ferreira, João Flávio Andrade Silva, Juliana Maia, Julio M. Stern, Luciana Morita Ishihara, Luís Ernesto Salasar, Marcela Musetti, Marcia Maria Barbosa da Silva, Marco Henrique de Almeida Ina- cio, Maurício Najjar da Silveira, Michel Helcias Montoril, Paula Ianishi, Rafael Bassi Stern, Sarah Izbicki, Taís Roberta Ribeiro, Victor Cândido Reis e Victor Vinicius Fer- nandes. Um agradecimento especial vai para Leonardo M. Borges e Kaori Nagata, que fizeram uma capa incrível e deram valiosas sugestões que deixaram o livro mais bem formatado e agradável de ser lido, assim como Lea Veras, que deu todo apoio necessário para conseguirmos concluir esse trabalho. Finalmente, agradecemos à CAPES, CNPq, FAPESP, Insper e UFSCar por tornarem esse trabalho possível. Erros. Ainda que esta versão do livro tenha sido bastante revisada, ela certa- mente ainda tem diversos erros. Caso você encontre erros (sejam eles de português ou de matemática) ou tenha outras sugestões, por favor envie um email para rafae- lizbicki (em) gmail.com. xv
  • 18.
  • 19.
  • 21.
    Capítulo 1 Introdução Your assumptionsare your windows on the world. Scrub them off every once in a while, or the light won’t come in. Isaac Asimov Métodos de regressão surgiram há mais de dois séculos com Legendre (1805) e Gauss (1809), que exploraram o método dos mínimos quadrados com o objetivo de prever órbitas ao redor do Sol. Hoje em dia, o problema de estimação de uma função de regressão possui papel central em estatística. Apesar de as primeiras técnicas para solucionar esse problema datarem de ao menos 200 anos, os avanços computacionais recentes permitiram que novas meto- dologias fossem exploradas. Em particular, com a capacidade cada vez maior de ar- mazenamento de dados, métodos com menos suposições sobre o verdadeiro estado da natureza ganham cada vez mais espaço. Com isso, vários desafios surgiram: por exemplo, métodos tradicionais não são capazes de lidar de forma satisfatória com bancos de dados em que há mais covariáveis que observações, uma situação muito comum nos dias de hoje. Similarmente, são frequentes as aplicações em que cada observação consiste em uma imagem ou um documento de texto, objetos complexos que levam a análises que requerem metodologias mais elaboradas. Aqui apresenta- mos diversos avanços recentes na área de regressão sob uma ótica preditivista, assim como uma revisão de modelos tradicionais sob esta mesma perspectiva. De modo geral, o objetivo de um modelo de regressão é determinar a relação 3
  • 22.
    1.1. Notação eSuposições entre uma variável aleatória Y ∈R e um vetor x = (x1,...,xd)∈Rd. Mais especifica- mente, busca-se estimar a função de regressão r(x) := E[Y|X = x] como forma de descrever tal relação. Quando Y é uma variável quantitativa, temos um problema de regressão (Parte I do livro). Para as situações em que Y é qualitativa temos um problema de classificação (Parte II desse livro). 1.1 Notação e Suposições Independence is happiness. Susan B. Anthony A variável Y frequentemente recebe o nome de variável resposta, variável depen- dente ou rótulo (label em inglês). Já as observações contidas em x = (x1,...,xd) são, em geral, chamadas de variáveis explicativas, variáveis independentes, característi- cas, atributos (features em inglês), preditores ou covariáveis. O objetivo da Parte I deste livro é descrever algumas técnicas para estimar (ou treinar, como dito na lite- ratura de aprendizado de máquina) r(x). Vamos assumir em todo o livro, a menos que seja dito o contrário, que a esti- mação será feita com base em uma amostra de observações i.i.d. (independentes e identicamente distribuídas) (X1,Y1),...,(Xn,Yn) ∼ (X,Y). A Seção 9.3 lida com algu- mas situações em que essa suposição não é razoável. Denotamos por xi,j o valor da j-ésima covariável na i-ésima amostra, ou seja, xi = (xi,1,...,xi,d), i = 1,...,n (veja a notação utilizada na Tabela 1.1). Tabela 1.1: Notação utilizada no livro para as variáveis envolvidas em um problema de regressão. Resposta Covariáveis Y1 X1,1 ... X1,d (= X1) . . . . . . ... . . . Yn Xn,1 ... Xn,d (= Xn) 4
  • 23.
    Capítulo 1. Introdução Figura1.1: PIB per capita e expectativa de vida de 211 países. 1.2 Predição versus Inferência: Por que estimar r(x)? Either you run from it (the past) or you learn from it! Rafiki, The Lion King A seguir veremos alguns exemplos reais nos quais a estimação de r(x) possui papel central. Exemplo 1.1. [Expectativa de vida e PIB per Capita] A Figura 1.1 mostra o PIB per Capita e Expectativa de vida em 211 países em 20121. Uma pergunta de interesse é como podemos usar esses dados para estabelecer uma relação entre essas duas variáveis. Esta relação pode ser utilizada para estimar a expectativa de vida de países cujo PIB per Capita é conhecido, mas a esperança não o é. Para tanto, pode-se estimar E[Y|x], em que Y é a expectativa de vida em um dado país e x é seu PIB per Capita. Uma estimativa de E[Y|x] também pode ser utilizada para testar a hipótese de que não há relação entre essas duas variáveis. 1Dados obtidos em http://data.worldbank.org/ 5
  • 24.
    1.2. Predição versusInferência: Por que estimar r(x)? Exemplo 1.2. [Distância de uma galáxia até a Terra] Em cosmologia, uma variável de extrema importância é o desvio para o vermelho (redshift, em inglês) de uma galá- xia, que quantifica o quão longe este objeto encontra-se da Terra. A espectroscopia permite que o desvio para o vermelho seja determinado com grande acurácia, con- tudo ela é extremamente cara e demanda muito tempo para ser feita. Assim, um grande interesse na atualidade é como estimar essa quantidade utilizando-se apenas imagens das galáxias ao invés da espectroscopia (Dalmasso et al., 2020; Schmidt et al., 2020) (veja a Figura 1.2 para um exemplo). Para tanto, pode-se usar uma amostra (X1,Y1),...,(Xn,Yn), em que Xi é a imagem da i-ésima galáxia e Yi seu respectivo des- vio para o vermelho obtido via espectroscopia, para estimar a função de regressão r(x). A partir dessa função é possível predizer as respostas em imagens de novas galáxias cujas distâncias até a Terra são desconhecidas. Veja o Apêndice A.1 para uma breve exposição sobre como trabalhar com imagens. Figura 1.2: Acima: representação gráfica do universo e sua expansão. Abaixo: ima- gem de uma galáxia (crédito das imagens: ESA/Hubble). 6
  • 25.
    Capítulo 1. Introdução Exemplo1.3. [Isomap face data] Neste conjunto de dados, proveniente de Tenen- baum et al. (2000), o objetivo é estimar a direção para a qual uma pessoa está olhando (a resposta y) com base em uma imagem desta pessoa (covariáveis x). Uma forma de se fazer isso é estimando a função de regressão r(x) com base em uma amostra. Uma vez ajustada, r(x) pode ser utilizada para predizer a direção em novas imagens definidas por covariáveis x. Figura 1.3: Isomap face data: cada observação consiste na imagem de um indivíduo que compõe um objeto x juntamente com a direção para a qual ele está olhando (y). Exemplo 1.4. [Predição do ano de lançamento de músicas] Os dados do YearPre- dictionMSD2 contém informações de diversas covariáveis sobre certas músicas do banco Million Song Dataset (por exemplo, informações sobre timbre, o "quão energé- tica" é cada uma das músicas, o "quão dançáveis” elas são etc), assim como o ano de lançamento de cada uma delas. Com esse banco de dados, é possível utilizar uma estimativa de r(x) (em que x são as covariáveis medidas e Y é o ano de lançamento de uma dada música) para (i) predizer o ano de lançamento de músicas com base apenas nas covariáveis e (ii) entender quais covariáveis estão relacionadas ao ano de lançamento e como se dá essa relação (por exemplo, nos anos 70 as músicas eram mais "dançáveis”?). Os objetivos desses exemplos, resumidamente, podem ser divididos em duas classes: 2https://archive.ics.uci.edu/ml/datasets/YearPredictionMSD. 7
  • 26.
    1.3. As DuasCulturas • Objetivo inferencial: Quais preditores são importantes? Qual a relação entre cada preditor e a variável resposta? Qual o efeito da mudança de valor de um dos preditores na variável resposta? • Objetivo preditivo: Como podemos criar uma função g : Rd −→ R que tenha bom poder preditivo? Isto é, como criar g tal que, dadas novas ob- servações i.i.d. (Xn+1,Yn+1),...,(Xn+m,Yn+m), tenhamos g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m? Enquanto em alguns dos problemas o objetivo é claramente inferencial ou predi- tivo, em outros temos uma mistura de ambos. Por exemplo, no Exemplo 1.3 temos um problema claramente preditivo: a relação entre cada pixel da imagem e a res- posta em geral não é de interesse imediato. Já no Exemplo 1.4 temos um objetivo misto: desejamos criar uma função para descobrir o ano de lançamento de músicas com base em suas covariáveis e ao mesmo tempo também queremos entender como o perfil de músicas mudou ao longo dos anos. 1.3 As Duas Culturas We never look beyond our assumptions and what’s worse, we have given up trying to meet others; we just meet ourselves. Muriel Barbery Breiman (2001a) argumenta que existem duas culturas no uso de modelos esta- tísticos (em especial modelos de regressão). Grosso modo, a primeira cultura, cha- mada de data modeling culture por Breiman, é a que domina a comunidade estatís- tica. Em geral, nela se assume que o modelo utilizado para r(x) – por exemplo, r(x) = β0 + ∑d i=1 βixi – é correto. Isso ocorre pois o principal objetivo está na inter- pretação dos parâmetros envolvidos no modelo (nesse caso, βi’s); em particular há interesse em testes de hipóteses e intervalos de confiança para esses parâmetros. Sob 8
  • 27.
    Capítulo 1. Introdução essaabordagem, testar se as suposições do modelo (por exemplo, normalidade dos erros, linearidade, homocedasticidade etc) são válidas é de fundamental importân- cia. Ainda que predição muitas vezes faça parte dos objetivos, o foco em geral está na inferência. A segunda cultura, chamada de algorithmic modeling culture por Breiman, é a que domina a comunidade de aprendizado de máquina (machine learning). Neste meio, o principal objetivo é a predição de novas observações. Não se assume que o modelo utilizado para os dados é correto; o modelo é utilizado apenas para criar bons algo- ritmos para prever bem novas observações. Muitas vezes não há nenhum modelo probabilístico explícito por trás dos algoritmos utilizados. Observação 1.1. Mesmo que o objetivo primordial de uma problema de predição seja obter um bom poder preditivo, a interpretabilidade do modelo final também é importante por diversas razões. Na Seção 6.1 discutimos algumas dessas razões, assim como formas de interpretar as predições dadas por modelos complexos. O foco deste livro está na segunda abordagem. Buscaremos estimar r(x) sem assumir que os modelos contenham a verdadeira função de regressão. Apesar dessa divisão de culturas, Breiman foi um estatístico que fez um grande trabalho para unir a área de estatística com aprendizado de máquina. Devido à grande importância desse estatístico nessa tarefa, um prêmio concedido em sua ho- menagem foi criado pela American Statistical Association. Essa união entre as áreas é mutuamente benéfica e, portanto, esse livro visa unir as duas culturas. 1.4 A Função de Risco O primeiro passo para construir boas funções de predição é criar um critério para medir o desempenho de uma dada função de predição g : Rd −→ R. Em um contexto de regressão, faremos isso através de seu risco quadrático, embora essa não seja a única opção: Rpred(g) = E h (Y − g(X))2 i , em que (X,Y) é uma nova observação que não foi usada para estimar g. Quanto menor o risco, melhor é a função de predição g. Mais detalhes sobre essa esperança serão apresentados na Observação 1.3. 9
  • 28.
    1.4. A Funçãode Risco Observação 1.2. A função L(g(X);Y) = (Y − g(X))2 é chamada de função de perda quadrática. Outras funções de perda podem ser utilizadas, como por exemplo a fun- ção de perda absoluta; L(g(X);Y) = |Y − g(X)|. Em geral, o risco é definido como a esperança de uma função de perda. Quando medimos a performance de um estimador com base em seu risco qua- drático, criar uma boa função de predição g : Rd −→ R equivale a encontrar um bom estimador para a função de regressão r(x). Assim, responder à pergunta do porquê estimar a função de regressão é, nesse sentido, o melhor caminho para se criar uma função para predizer novas observações Y com base em covariáveis observadas x. Isso é mostrado no seguinte teorema: Teorema 1. Suponha que definimos o risco de uma função de predição g : Rd −→ R via perda quadrática: Rpred(g) = E (Y − g(X))2 , em que (X,Y) é uma nova observação que não foi usada para estimar g. Suponhamos também que medimos o risco de um estimador da função de regressão via perda quadrática: Rreg(g) = E (r(X) − g(X))2 . Então Rpred(g) = Rreg(g) + E[V[Y|X]]. Demonstração. E h (Y − g(X))2 i = E h (Y − r(X) + r(X) − g(X))2 i = E h (r(X) − g(X))2 i + E[(Y − r(X))2 ] + 2E[(r(X) − g(X))(Y − r(X))] = E h (r(X) − g(X))2 i + E[V[Y|X]], em que o último passo segue do fato que E[(r(X) − g(X))(Y − r(X))] = E[E[(r(X) − g(X))(Y − r(X))|X]] = 0 e E[(Y − r(X))2 ] = E[E[(Y − r(X))2 |X]] = E[V[Y|X]], pois r(X) = E[Y|X]. 10
  • 29.
    Capítulo 1. Introdução Assim,visto que o termo E[V[Y|X]]3 não depende de g(x), estimar bem a função de regressão r(x) é fundamental para se criar uma boa função de predição sob a ótica do risco quadrático, já que a melhor função de predição para Y é a função de regressão r(x): argmin g Rpred(g) = argmin g Rreg(g) = r(x). Observação 1.3. A função g no Teorema 1 pode ser entendida tanto como sendo fixa (neste caso R(g) é chamado de risco condicional) quanto como sendo aleatória (função dos dados). Neste último caso, a esperança é tomada com relação à obser- vação (X,Y) e à amostra (X1,Y1),...,(Xn,Yn), e o risco é chamado de risco esperado. Em outras palavras, o risco esperado é a esperança do risco condicional sob todas as possíveis amostras usadas para criar g. Assim, ele pode ser entendido como uma garantia sobre o processo de criação de g ao invés de uma garantia sobre a particular função g criada para um dado problema. Por exemplo, se o risco esperado de uma regressão linear vale C em um dado problema, isso implica que, em média, uma re- gressão linear para dados que seguem a mesma distribuição desse conjunto e com o mesmo tamanho amostral possui risco condicional C. Dependendo do contexto, utilizaremos uma ou outra definição. Daqui em diante, denotaremos por R o risco preditivo Rpred. Em um contexto de predição, a definição de risco condicional (isto é, conside- rando g fixo; veja a Observação 1.3) possui grande apelo frequentista. Digamos que observamos um novo conjunto, (Xn+1,Yn+1),...,(Xn+m,Yn+m), i.i.d à amostra obser- vada. Então, pela lei dos grandes números, sabemos que, se m é grande, 1 m m ∑ i=1 (Yn+i − g(Xn+i))2 ≈ R(g) := E h (Y − g(X))2 i . Em outras palavras, se R(g) possui valor baixo, então g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m, e, portanto, teremos boas predições em novas observações. Note que essa conclusão 3Para uma interpretação deste termo, veja a Seção 1.5.2. 11
  • 30.
    1.5. Seleção deModelos: Super e Sub-Ajuste vale para qualquer função de perda L utilizada para definir o risco, uma vez que 1 m m ∑ i=1 L(g(Xn+i);Yn+i)) ≈ R(g) := E[L(g(X);Y))]. O objetivo dos métodos de regressão sob a ótica preditivista é, portanto, fornecer, em diversos contextos, métodos que apresentem bons estimadores de r(x), isto é, estimadores com risco baixo. 1.5 Seleção de Modelos: Super e Sub-Ajuste The best preparation for tomorrow is doing your best today. H. Jackson Brown Jr Em problemas práticos, é comum ajustar vários modelos para a função de regres- são r(x) e buscar qual deles possui maior poder preditivo, isto é, qual possui menor risco. Isto é exemplificado a seguir. Exemplo 1.5. [Expectativa de vida e PIB per Capita] Revisitamos aqui o Exemplo 1.1. A Figura 1.4 mostra o ajuste de três modelos distintos para a funçaõ de predição: g(x) = β0 + p ∑ i=1 βixi , para p ∈ {1,4,50}. Em outras palavras, ajustamos três regressões polinomiais: uma de 1o grau, uma de 4o grau e uma de 50o grau. Os ajustes foram feitos (ou seja, βi foram estimados) por meio do método dos mínimos quadrados (Capítulo 2). Enquanto o modelo de 1o grau é simplista demais para os dados, o modelo com p = 50 (ou seja, do 50o grau) é extremamente complexo e parece fornecer uma função g que não produzirá boas predições em novas observações. O modelo com p = 4 parece ser o mais razoável nesse caso. Dizemos que o modelo com p = 1 sofre de sub-ajuste, ou underfitting (não é suficiente para explicar bem os dados), enquanto o modelo com p = 50 sofre de super-ajuste, ou overfitting (ele se ajusta demais a esta amostra específica, mas possui baixo poder de generalização). O objetivo desta seção é descrever um método para escolher o modelo intermediário entre sub-ajuste e super-ajuste. Nesse exemplo, queremos um método que escolha p = 4 automaticamente. 12
  • 31.
    Capítulo 1. Introdução Figura1.4: Comparação dos modelos g(x) = β0 + ∑ p i=1 βixi, para p ∈ {1,4,50} nos dados de esperança de vida (Y) versus PIB per Capita (X). Observação 1.4. Um modelo pode interpolar os dados e, ainda assim, não apresen- tar super-ajuste (Belkin et al., 2019b). Em outras palavras, mesmo que ocorra inter- polação, uma função de predição pode ter bom poder preditivo. Esse fenômeno é frequentemente observado em redes neurais (Seção 4.11). Veja, por exemplo, Belkin et al. (2019a) e Belkin et al. (2018) para uma discussão mais aprofundada. O objetivo de um método de seleção de modelos é selecionar uma boa função g. Nesse caso, utilizaremos o critério do risco quadrático para avaliar a qualidade da função. Logo, queremos escolher uma função g dentro de uma classe de can- didatos G que possua bom poder preditivo (baixo risco quadrático). Dessa forma, queremos evitar modelos que sofram de sub ou super-ajuste. Uma vez que R(g) é desconhecido, é necessário estimá-lo para avaliar a função g ∈ G. Na próxima seção apresentaremos métodos para estimar esse risco. 13
  • 32.
    1.5. Seleção deModelos: Super e Sub-Ajuste 1.5.1 Data Splitting e Validação Cruzada O risco observado (também chamado de erro quadrático médio no conjunto de treinamento), definido por EQM(g) := 1 n n ∑ i=1 (Yi − g(Xi))2 (1.1) é um estimador muito otimista do real risco. Se usado para fazer seleção de modelos, ele leva ao super-ajuste, um ajuste perfeito dos dados. Isto ocorre pois g foi escolhida de modo a ajustar bem (X1,Y1),...,(Xn,Yn). Uma maneira de solucionar este problema é dividir o conjunto de dados em duas partes, treinamento e validação: Treinamento (por exemplo, 70%) z }| { (X1,Y1),(X2,Y2),...,(Xs,Ys) , Validação (por exemplo, 30%) z }| { (Xs+1,Ys+1),...,(Xn,Yn). Usamos o conjunto de treinamento exclusivamente para estimar g (por exemplo, estimar os coeficientes da regressão linear) e o conjunto de validação apenas para estimar R(g) via R̂(g) = 1 n − s n ∑ i=s+1 (Yi − g(Xi))2 := b R(g), (1.2) isto é, avaliamos o erro quadrático médio no conjunto de validação. Uma boa prática para escolher quais amostras serão utilizadas para compor o conjunto de treinamento e quais serão utilizadas para compor o conjunto de va- lidação é fazê-lo aleatoriamente. Dessa forma, utiliza-se um gerador de números aleatórios para escolher quais amostras serão usadas para o treinamento e quais se- rão usadas para a validação. Esse procedimento evita problemas quando o banco de dados está previamente ordenado de acordo com alguma covariável (por exem- plo, quem coletou o banco pode ter ordenado as observações em função de alguma variável). Como o conjunto de validação não foi usado para estimar os parâmetros de g, o estimador da Equação 1.2 é consistente pela lei dos grandes números. 14
  • 33.
    Capítulo 1. Introdução Parauma função de perda L qualquer, o risco pode ser aproximado por R(g) ≈ 1 n − s n ∑ i=s+1 L(g(Xi);Yi) := b R(g). O procedimento de dividir os dados em dois e utilizar uma parte para estimar o risco é chamado de data splitting. Uma variação deste método é a validação cruzada, que faz uso de toda a amostra. Por exemplo, no leave-one-out cross validation (LOOCV) (Stone, 1974), o estimador usado é dado por R̂(g) = 1 n n ∑ i=1 (Yi − g−i(Xi))2 , em que g−i é ajustado utilizando-se todas as observações exceto a i-ésima delas, ou seja, utilizando-se (X1,Y1),...,(Xi−1,Yi−1),(Xi+1,Yi+1),...,(Xn,Yn). Alternativamente, pode-se usar o k-fold cross validation. Nessa abordagem divide- se os dados aleatoriamente em k-folds (lotes) disjuntos com aproximadamente o mesmo tamanho, como mostra a Figura 1.5 para um cenário com 20 observações separa- das em 5 lotes. Sejam L1,..., Lk ⊂ {1,...,n} os índices associados a cada um dos lotes. A ideia do k-fold cross validation é criar k estimadores da função de regres- são, ĝ−1,...,ĝ−k, em que ĝ−j é criado usando todas as observações do banco menos aquelas do lote Lj. O estimador do risco é dado por R̂(g) = 1 n k ∑ j=1 ∑ i∈Lj (Yi − g−j(Xi))2 . Note que quando k = n, recuperamos o LOOCV. Para mais detalhes, veja Wasserman (2006). Observação 1.5. Segue, da lei dos grandes números, que a estimação do risco base- ada na divisão treinamento versus validação fornece um estimador consistente para o erro condicional. Por outro lado, o leave-one-out cross validation é aproximadamente não-viesado para o erro esperado (o risco descrito na Observação 1.3). De fato, se R(g) 15
  • 34.
    1.5. Seleção deModelos: Super e Sub-Ajuste é o erro esperado do método de construção de g, então E 1 n + 1 n+1 ∑ i=1 (Yi − g−i(Xi))2 # = 1 n + 1 n+1 ∑ i=1 E h (Yi − g−i(Xi))2 i = 1 n + 1 n+1 ∑ i=1 R(g) = R(g), em que a segunda igualdade segue do fato que g−i tem a mesma distribuição de g. Assim, o estimador leave-one-out cross validation, calculado em um conjunto com n + 1 observações, é não viesado para o erro esperado do estimador obtido com n amostras. Figura 1.5: Esquema de validação cruzada para uma situação com 20 observações e 5 lotes. Utilizando a validação cruzada para estimar R(g) para cada g ∈ G nos permite escolher g com menor risco estimado. Treino versus Validação versus Teste. Do mesmo modo que o EQM no conjunto de treinamento é muito otimista pois cada g ∈ G é escolhida de modo a (aproximada- 16
  • 35.
    Capítulo 1. Introdução mente)minimizá-lo, o EQM no conjunto de validação avaliado na g com menor EQM no conjunto de validação também é otimista, principalmente se muitos métodos de pre- dição forem avaliados no conjunto de validação. Isso pode levar a um super-ajuste ao conjunto de validação, isto é, pode levar à escolha de uma função g que tem bom desempenho no conjunto de validação, mas não em novas observações. Uma forma de contornar esse problema é dividir o conjunto original em três partes: treinamento, validação e teste. Os conjuntos de treinamento e validação são usados como descrito anteriormente. Já o conjunto de teste é usado para estimar o erro do melhor esti- mador da regressão determinado com a utilização do conjunto de validação. Assim, poderemos saber se o risco da melhor g encontrada de fato é pequeno. Diversas variações dessa ideia podem ser usadas. Por exemplo, digamos que queremos comparar uma regressão polinomial com um lasso (Seção 3.3). Um pro- cedimento razoável é: (i) escolher o melhor grau do polinômio e o tuning parameter λ do lasso usando data-splitting dentro do treinamento (isto é, dividindo o treina- mento em duas partes: treinamento e validação) e (ii) comparar o desempenho da melhor regressão polinomial com o melhor lasso (segundo o critério (i)) no conjunto de teste. Assim, o teste será usado para comparar apenas dois modelos. Alternati- vamente, podemos trocar (i) por uma validação cruzada dentro do treino. De forma geral, idealmente usamos uma das divisões (a validação) para escolher os tuning pa- rameters de cada um dos métodos e a outra (o teste) para comparar a melhor versão de cada método. Veja a Seção 7.2 para mais detalhes no contexto de classificação. Intervalos de confiança para o risco. Utilizando o conjunto de teste, podemos também fazer um intervalo de confiança para o risco. Denote por (X̃1,Ỹ1),...,(X̃m,Ỹm) os elementos do conjunto de teste (ou seja, não foram utilizados para treinamento ou validação do modelo). Um estimador não viesado para o risco de g (que foi estimada com base nos conjuntos de treinamento e validação) é dado por b R(g) = 1 m m ∑ k=1 Ỹk − g(X̃k) 2 | {z } Wk . Como b R(g) é uma média de variáveis i.i.d., o Teorema do Limite Central implica que b R(g) ≈ Normal R(g), 1 m V[W1] . 17
  • 36.
    1.5. Seleção deModelos: Super e Sub-Ajuste Como W1,...,Wm são i.i.d.’s, podemos estimar V[W1] com b σ2 = 1 m m ∑ k=1 Wk − W 2 , em que W = 1 m ∑m k=1 Wk. Assim, um intervalo de confiança (IC) aproximado de 95% para R(g) é dado por b R(g) ± 2 r 1 m b σ2. (1.3) A Equação 1.3 também nos dá um insight sobre como escolher o tamanho da di- visão entre treino e validação. Podemos escolher o menor m tal que o tamanho do intervalo de confiança para o risco seja tão pequeno quanto queremos. Essa ideia é especialmente interessante se o tamanho amostra é grande. Neste caso, o tama- nho do conjunto de validação pode ser bastante menor que o do conjunto de treino, uma vez que estimar o risco é uma tarefa muito mais fácil que criar uma função de predição. Exemplo 1.6. [Expectativa de vida e PIB per Capita] Revisitamos os Exemplos 1.1 e 1.5. Aqui nosso objetivo é selecionar o melhor estimador dentro da classe G = ( g(x) : g(x) = β0 + p ∑ i=1 βixi , para p ∈ {1,2,...,50} ) . A Figura 1.6a mostra o erro quadrático médio no conjunto de treinamento para cada g ∈ G. Observamos que, quanto maior o número de parâmetros, menor o erro qua- drático médio no conjunto de treinamento. Por outro lado, a Figura 1.6b mostra o risco estimado para cada g ∈ G via EQM no conjunto de validação; como os riscos para p 11 são demasiadamente altos, mostramos apenas o comportamento para p ≤ 11. Vemos que o menor erro no conjunto de treinamento pode não levar ao me- nor erro no conjunto de validação. Isso acontece devido ao superajuste no conjunto de treinamento. Os gráficos da Figura 1.7 mostram que, de fato, minimizar o erro no conjunto de validação (gráfico da direita) leva a um melhor ajuste do que minimizar o erro no conjunto de treinamento (gráfico da esquerda). Assim, o data splitting nos leva à escolha de um modelo adequado para predizer novas observações. 18
  • 37.
    Capítulo 1. Introdução (a)(b) Figura 1.6: Comparação dos modelos g(x) = β0 + ∑ p i=1 βixi, para p ∈ {1,2,...,50} nos dados de esperança de vida (Y) versus PIB per Capita (X). EQM do conjunto de treinamento (esquerda) e EQM do conjunto de validação (direita). A primeira forma de fazer a seleção de modelos leva ao superajuste. Figura 1.7: Comparação dos modelos ajustados segundo melhor EQM do conjunto de treinamento (esquerda) e segundo EQM do conjunto de validação (direita). Exemplo 1.7. [A especificação do modelo estar correta não garante melhor poder 19
  • 38.
    1.5. Seleção deModelos: Super e Sub-Ajuste preditivo.] Dentro da cultura do data modeling, é comum checar se as suposições fei- tas por um modelo estão corretas. Contudo, a especificação do modelo estar correta não garante melhor poder preditivo. Isto é, um modelo especificado incorretamente em relação ao modelo que gerou os dados pode ter melhor desempenho. Nesta se- ção isso é ilustrado via um exemplo simulado. Os dados são gerados de modo que Y|x ∼ N(β|x,1), com β = (0,3,2,0.2,0.1,0.1) e x = (1,x,x2,...,x5). Portanto, a re- gressão real é um polinômio de quinto grau. Ajustamos então um polinômio de quinto grau e um polinômio de segundo grau. A Figura 1.8 indica que, apesar de o modelo correto ser um polinômio de quinto grau, um ajuste de segundo grau leva a melhores resultados. Isso ocorre pois o modelo mais simples possui variância muito menor (ainda que ele seja viesado) e, assim, evita o overfitting. Figura 1.8: Neste exemplo, apesar de o modelo correto ser um polinômio de quinto grau, um ajuste de segundo grau levou a um resultado melhor. A Tabela 1.2 mostra os erros estimados ao replicar o experimento acima para 1000 conjuntos de treinamento diferentes. O erro esperado do modelo com 2 graus, de fato, é menor do que o erro esperado do modelo especificado corretamente (isto é, com 5 graus). Além disso, para a grande maioria dos conjuntos de treinamento, o risco condicional do modelo mais simples é menor. Essa proporção observada foi de 20
  • 39.
    Capítulo 1. Introdução 97,8%. Tabela1.2: Risco de cada um dos modelos ajustados. 2 graus 5 graus Risco 1.7 22354.08 1.5.1.1 Penalização: uma alternativa Life is sometimes like knockout football; if you have no goal, invite penalty! Abhijit Kar Gupta Uma forma alternativa de se estimar o risco de um certo modelo g é utilizando uma medida de penalização ou complexidade. Quanto mais parâmetros no modelo, mais o erro quadrático médio observado, EQM(g) (Eq. 1.1), subestima R(g), isto é, maior a diferença entre EQM(g) e R(g). A ideia por trás de métodos de penalização é criar uma medida de complexidade para g, P(g), que é utilizada para corrigir essa diferença. Por exemplo, P(g) pode ser o número de parâmetros que há no modelo. Podemos então compensar o quão subestimado R(g) é adicionando estas duas quantidades: R(g) ≈ EQM(g) + P(g). Existem diversas funções de penalização, com diferentes motivações teóricas. Dois exemplos populares são: • P(g) = 2 npb σ2 (conhecido como AIC); • P(g) = log(n) npb σ2 (conhecido como BIC). Aqui, p é o número de parâmetros de g e b σ2 é uma estimativa de V[Y|x]. 21
  • 40.
    1.5. Seleção deModelos: Super e Sub-Ajuste Figura 1.9: Comparação via AIC dos modelos g(x) = β0 + ∑ p i=1 βixi, para p ∈ {1,2,...,50} nos dados de esperança de vida versus PIB per Capita. Note que, se g tem muitos parâmetros, EQM(g) é em geral muito baixo (devido ao super-ajuste), mas em compensação P(g) é alto. Analogamente, se g tem poucos parâmetros, EQM(g) é em geral muito alto (devido ao sub-ajuste), mas em compen- sação P(g) é baixo. Assim, espera-se que EQM(g) + P(g) seja uma boa estimativa para R(g). A Figura 1.9 ilustra o uso do AIC para seleção de modelos no Exemplo 1.6. Note como o comportamento deste gráfico é similar ao da Figura 1.6b. Em particular, os melhores valores encontrados para p em ambos são muito próximos. 1.5.2 Balanço entre Viés e Variância Simplicity is an exact medium between too little and too much. Sir Joshua Reynolds Um grande apelo para o uso do risco quadrático é sua grande interpretabilidade: o risco quadrático (condicional no novo x observado) pode ser decomposto como E h (Y − b g(X))2 |X = x i = V[Y|X = x] + (r(x) − E[b g(x)])2 + V[b g(x)]. 22
  • 41.
    Capítulo 1. Introdução Noteque estamos trabalhando com o erro esperado (veja a Observação 1.3), em que a aleatoriedade está tanto em Y quanto na amostra de treinamento e, por essa razão, estamos utilizando a notação b g para enfatizar que g é função dos dados. Assim, o risco pode ser decomposto em três termos: • V[Y|X = x] é a variância intrínseca da variável resposta, que não depende da função b g escolhida e, assim, não pode ser reduzida; • (r(x) − E[b g(x)])2 é o quadrado do viés do estimador b g e • V[b g(x)] é a variância do estimador b g. É importante observar que os valores dos dois últimos itens podem ser reduzidos se escolhermos b g adequado. Grosso modo, modelos com muitos parâmetros possuem viés relativamente baixo, mas variância alta, já que é necessário estimar todos eles. Já modelos com poucos pa- râmetros possuem variância baixa, mas viés muito alto, já que são demasiado sim- plistas para descrever o modelo gerador dos dados. Assim, com a finalidade de obter um bom poder preditivo, deve-se escolher um número de parâmetros nem tão alto, nem tão baixo. A Figura 1.10 mostra qualitativamente o balanço (também chamado de tradeoff) entre viés e variância. Figura 1.10: O balanço entre viés e variância. 23
  • 42.
    1.7. Resumo Este tradeoffé justamente o que ocorre no Exemplo 1.5: enquanto p = 50 induz um modelo com viés relativamente baixo, mas variância alta (há muitos parâmetros para serem estimados); p = 1 leva a um viés extremamente alto, mas variância muito baixa. Ao se selecionar o melhor modelo utilizando, por exemplo, data splitting (veja Figura 1.6b) estamos justamente buscando a melhor combinação viés-variância de modo a obter um modelo com um risco baixo. Note que, enquanto em inferência paramétrica tradicionalmente buscam-se es- timadores não viesados para os parâmetros de interesse, em inferência preditiva é comum abrir mão de se ter um estimador viesado para, em troca, conseguir-se uma variância menor e, assim, um risco menor. 1.6 Tuning Parameters A função do parâmetro p (grau do polinômio) no Exemplo 1.6 é controlar o ba- lanço entre viés e variância. O valor ótimo de p depende de n e de r(x). O parâmetro p é chamado de tuning parameter (isto é, um parâmetro de sintonização). Vários dos métodos de regressão possuem um ou mais tuning parameters. Nesse livro, como feito no Exemplo 1.6, sempre iremos escolhê-los via validação cruzada ou data splitting, ainda que essas não sejam as únicas maneiras de fazer essa seleção (veja por exemplo Wasserman 2006). 1.7 Resumo Nesse capítulo vimos que há ao menos dois motivos para se fazer uma análise de regressão: o motivo inferencial, no qual estamos interessados em tirar conclusões sobre a população à qual os dados pertencem, e o motivo preditivista, no qual estamos interessados em ter boas predições. Vimos também que existem duas culturas em análise de dados: data modeling culture e algorithmic modeling culture. Enquanto na primeira há uma preocupação em se testar suposições dos modelos utilizados, na segunda o foco está em se obter modelos com bom poder preditivo. Mostramos também que nosso objetivo na Parte I deste livro é mostrar diver- sos métodos que permitam estimar funções g(x) com risco R(g) = E (Y − g(X))2 baixo. Vimos que encontrar g com risco baixo equivale a encontrar uma boa estima- 24
  • 43.
    Capítulo 1. Introdução tivada função de regressão. Vimos também que o risco pode ser decomposto em viés e variância. Modelos complexos possuem variância alta, mas viés baixo, enquanto modelos simples possuem variância baixa, mas viés alto. Nosso objetivo é encontrar a complexidade que equilibre este balanço, de modo a termos um risco baixo. Finalmente, estudamos dois métodos para estimar o risco de uma dada função g: a validação cruzada/data splitting e a penalização. Estes métodos podem ser utiliza- dos para fazer seleção de modelos e, assim, equilibrar o balanço entre viés e variân- cia. 25
  • 44.
  • 45.
    Capítulo 2 Métodos Paramétricos Natureis pleased with simplicity. And nature is no dummy. Sir Isaac Newton Métodos paramétricos assumem que a função de regressão pode ser parametri- zada com um número finito de parâmetros. Neste capítulo iremos nos restringir apenas a modelos de regressão linear. Assumimos que a maior parte do conteúdo apresentado aqui é uma revisão de conceitos já conhecidos, mas sob uma perspectiva possivelmente diferente. A regressão linear utiliza uma forma linear para a função de predição, ou seja, a função de predição usada pode ser escrita como g(x) = β| x = β0x0 + β1x1 + ... + βdxd, (2.1) em que adotamos a convenção x0 ≡ 1, e onde β = (β0,...,βd). Note que xi não é necessariamente a i-ésima variável original; podemos criar novas covariáveis que são funções das originais (ex: x2 i ,xixj etc; veja também a Seção 4.1 e Exemplo 1.5). 27
  • 46.
    2.1. O Métododos Mínimos Quadrados 2.1 O Método dos Mínimos Quadrados Uma forma de estimar os coeficientes β da regressão linear é utilizando o método dos mínimos quadrados, isto é, b β = argmin β n ∑ i=1 (Yi − β0 − β1xi,1 − ... − βdxi,d)2 . (2.2) A solução para este problema é dada por b β = (b β0, b β1,..., b βd) = (X| X)−1 X| Y, (2.3) em que X =     X1,0 ... X1,d . . . ... . . . Xn,0 ... Xn,d     e Y = (Y1,...,Yn) (aqui usamos a convenção de que um vetor, quando utilizado como matriz, é um vetor coluna). Assim, a função de regressão é estimada por g(x) = b β| x. Boa parte da literatura estatística é voltada para a justificativa do método dos mí- nimos quadrados sob um ponto de vista de estimadores de máxima verossimilhança, assim como para testes de aderência e métodos para a construção de intervalos de confiança para os parâmetros βi. Indicamos para o leitor interessado nestes aspectos os livros Morettin e Singer (2019) e Neter et al. (1996). Em geral, assumir que a verdadeira regressão é, de fato, linear é uma suposição muito forte. Existe, contudo, uma literatura substancial que tenta justificar o método dos mínimos quadrados para estimar os coeficientes mesmo quando a regressão real r(x) não satisfaz essa suposição. Na seção que segue mostramos uma dessas ideias. 28
  • 47.
    Capítulo 2. MétodosParamétricos 2.1.1 Mínimos Quadrados quando a Suposição de Linearidade Fa- lha Being entirely honest with oneself is a good exercise. Sigmund Freud A suposição de que a regressão real r(x) é linear muitas vezes não é válida. Con- tudo, mesmo quando esta suposição falha, frequentemente existe um vetor β∗ tal que gβ∗ (x) = β| ∗ x tem bom poder preditivo. Neste caso, o método dos mínimos qua- drados tende a produzir estimadores com baixo risco. Isto ocorre pois b β converge para o melhor preditor linear, β∗ = argmin β R(gβ) = argmin β E h (Y − β| X)2 i , (2.4) em que (X,Y) é uma nova observação, mesmo quando a verdadeira regressão r(x) não é linear. Além disso, o risco associado a b β converge para o risco associado a β∗.1 Isto é mostrado no teorema a seguir. Teorema 2. Seja β∗ o melhor preditor linear (Equação 2.4), e b β o estimador de mínimos quadrados (Equação 2.3). Assuma que Σ = E[XX|] está bem definida. Então b β P − −−− → n−→∞ β∗ e R gb β P − −−− → n−→∞ R gβ∗ Demonstração. Primeiramente, notamos que se minimizamos E (Y − β|X)2 , obte- mos que β∗ = Σ−1 α, em que α = (E[YX0],...,E[YXd]). Também notamos que podemos reescrever b β como b β = b Σ−1 b α, em que b Σ = n−1 ∑n i=1 XiX| i e b α = (b α0,...,b αd), com b αj = n−1 ∑n i=1 YiXi,j. Pela lei fraca dos grandes números, temos que b Σ P − −−− → n−→∞ Σ 1β∗ é chamado de oráculo. 29
  • 48.
    2.1. O Métododos Mínimos Quadrados e b α P − −−− → n−→∞ α, de modo que, pelo Teorema de Mann-Wald, b β P − −−− → n−→∞ β∗ e, assim, novamente pelo Teorema de Mann-Wald, R(gb β ) P − −−− → n−→∞ R gβ∗ O teorema anterior mostra, portanto, que b β converge para o melhor preditor li- near, β∗. Pode-se também derivar a taxa desta convergência, isto é, o quão rápido ela ocorre; veja por exemplo Györfi et al. (2006). 2.1.2 Regressão Linear no R Seja dados é um data frame com o banco de dados, o estimador de mínimos qua- drados considerando duas preditoras (explicativa_1 e explicativa_2) pode ser calculado utilizando ajuste - lm(resposta ~ explicativa_1 + explicativa_2, data = dados) O padrão dessa função considera a inclusão de um intercepto. Para ajustar a regressão com todas as covariáveis no banco de dados, é possível utilizar o atalho ajuste - lm(resposta ~ ., data = dados) Uma vez que o modelo foi ajustado, é possível fazer previsões para um novo banco de dados (novos_dados) com a função predict: previsoes - predict(ajuste, newdata = novos_dados) Note que novos_dados deve ser um dataframe com o mesmo formato (incluindo nomes das variáveis) que dados. 30
  • 49.
    Capítulo 2. MétodosParamétricos 2.2 Resumo Vimos neste capítulo que uma regressão linear assume que a função de regressão pode ser escrita como uma expansão da forma g(x) = β|x = β0 + β1x1 + ... + βdxd. O vetor x pode representar as covariáveis originais ou transformações dessas. Es- tudamos o método dos mínimos quadrados, uma forma de se estimar o vetor β, e mostramos que, mesmo quando a verdadeira regressão não é linear, esse estimador converge para β∗, o melhor preditor linear de y com base em x. Infelizmente, quando há muitas covariáveis, o método dos mínimos quadrados não leva a bons resultados devido ao super-ajuste e à variância extremamente alta (Seção 1.5). Quando d n, o estimador não está bem definido, pois a matriz X|X utilizada para estimar β (Eq. 2.3) não é invertível. No próximo capítulo mostramos algumas abordagens para contornar esse problema. 31
  • 50.
  • 51.
    Capítulo 3 Métodos Paramétricosem Altas Dimensões O estimador de mínimos quadradados, quando há muitas covariáveis (isto é, d é grande), possui baixo desempenho devido ao super-ajuste. Há muitos parâmetros a serem estimados e, portanto, a função de regressão estimada possui baixo poder preditivo. Em outras palavras, a variância do estimador resultante é alta pois muitos parâmetros devem ser estimados1. Neste capítulo investigamos alguns métodos que podem ser usados para contornar esse problema. 3.1 Busca pelo Melhor Subconjunto de Covariáveis Uma solução para esse problema consiste em retirar algumas variáveis da re- gressão de modo a diminuir a variância da função de predição estimada. Em outras palavras, essa solução consiste em aumentar o viés do estimador da regressão real r(x) e, em troca, esperar que isso resulte em uma diminuição substancial de sua va- riância. Caso algumas covariáveis observadas não estão associadas (ou têm pouca associação) à resposta Y, o aumento do viés será pequeno, de modo que o poder preditivo irá aumentar. Uma maneira de retirar algumas variáveis da regressão é buscar a estimativa 1Se d n, o método de mínimos quadrados nem pode ser implementado, uma vez que X|X não é invertível! 33
  • 52.
    3.1. Busca peloMelhor Subconjunto de Covariáveis dada por b βL0 = arg min β0∈R,β∈Rd n ∑ k=1 yk − β0 − d ∑ i=1 βixk,i !2 + λ d ∑ i=1 I(βi , 0). (3.1) A penalização ∑d i=1 I(βi , 0) induz modelos com poucas covariáveis, em particu- lar se λ é alto. Por exemplo, quando λ −→ ∞, a solução de 3.1 é b βL0 ≡ (ȳ,0), ou seja, um vetor de zeros para os coeficientes angulares (isto é, a penalização alta descarta todas as covariáveis do modelo). É importante notar que não há penalização para β0. No outro extremo, quando λ = 0, temos que b βL0 é o estimador de mínimos qua- drados (isto é, nenhuma variável é descartada sem penalização). Quando λ = 2 n b σ2, encontrar a solução da Equação 3.1 equivale a uma busca entre os 2d modelos na classe G = {g(x) = b β0, g(x) = b β0 + b β1x1, g(x) = b β0 + b β2x2, ... g(x) = b β0 + b βdxd, g(x) = b β0 + b β1x1 + b β2x2, g(x) = b β0 + b β1x1 + b β3x3, ... g(x) = b β0 + b β1x1 + b β2x2 + ... + b βdxd}, em que se utiliza o critério AIC para determinar o melhor modelo. Em outras pa- lavras, quando λ = 2 n b σ2, encontrar a solução da Equação 3.1 é equivalente a ajustar cada um dos 2d modelos via mínimos quadrados e estimar o risco R(g) para cada um deles via AIC (Seção 1.5.1.1). O modelo escolhido é aquele com menor risco estimado. De um ponto de vista teórico, estimar β com base na Equação 3.1 resolve o pro- blema, isto é, conseguimos descartar várias das variáveis e, assim, obter um estima- dor com variância (e erro preditivo) menor. Em contrapartida, há um aumento no viés do estimador, já que nem todas as variáveis são utilizadas. Como explicado na 34
  • 53.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Seção 1.5.2, quando o aumento no viés é pequeno se comparado à diminuição na va- riância, o modelo resultante tem poder preditivo maior. Contudo, do ponto de vista prático, resolver a Equação 3.1 é computacionalmente trabalhoso quando há muitas covariáveis, uma vez que há 2d modelos para serem ajustados. A Figura 3.1 ilustra como o número de modelos cresce à medida que d aumenta. Figura 3.1: Número de subconjuntos de d covariáveis como função de d. Uma vez que esse método é impráticavel em diversas situações, é interessante utilizar alguma heurística que reduza o número de modelos que devem ser ajustados e, ainda assim, apresentem um risco pequeno. Isto é, ao invés de resolver a Equação 3.1, busca-se por uma aproximação desta solução. Um desses métodos é descrito na próxima seção. 3.2 Regressão Stepwise Uma série de algoritmos que consistem em heurísticas que consideram um nú- mero reduzido de modelos (em relação aos 2d do melhor subconjunto) é chamada de stepwise regression (James et al., 2013). Um exemplo desta heurística é o forward stepwise, um algoritmo sequencial no qual a cada passo apenas uma variável é adici- 35
  • 54.
    3.2. Regressão Stepwise onada: 1.Para j = 1,...,d, ajuste a regressão de Y na j-ésima variável Xj. Seja b R(gj) o risco estimado desta função (usando AIC ou validação cruzada). Defina b j = argmin j b R(gj) e S = {b j}. 2. Para cada j ∈ Sc, ajuste a regressão de Y = βjXj + ∑s∈S βsXs + e, e seja b R(gj) o risco estimado desta função (usando AIC ou validação cruzada). Defina b j = argmin j∈Sc b R(gj) e atualize S ←− S ∪ b j. 3. Repita o passo anterior até que todas as variáveis estejam em S ou até que não seja possível mais ajustar a regressão 4. Selecione o modelo com menor risco estimado. Note que, no forward stepwise, ao invés de buscarmos um entre 2d modelos, é ne- cessário investigar somente 1 + d(d + 1)/2 modelos. A Figura 3.2 ilustra a diferença na magnitude do números de modelos ajustados em cada método. Figura 3.2: Número de modelos utilizando abordagem de melhor subconjunto e forward stepwise como função do número d. 36
  • 55.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Uma segunda maneira de encontrar um estimador linear da regressão com bom risco quando há muitas covariáveis é o lasso. Descrevemos esse método a seguir. 3.3 Lasso The penalty may be removed, the crime is eternal. Ovid O lasso, desenvolvido por Tibshirani (1996), tem como finalidade encontrar um estimador de uma regressão linear que possui risco menor que o de mínimos qua- drados. O lasso possui duas grandes vantagens em relação à heurísticas stepwise: sua solução é mais rápida e possui mais garantias teóricas. Assim como no método baseado na Equação 3.1, o lasso consiste em encontrar uma solução β que minimize a soma de seu erro quadrático médio com uma medida de complexidade de β. Novamente, a ideia é reduzir a variância do estimador de mínimos quadrados. Contudo, ao invés de medir a complexidade de um modelo como uma função do número de parâmetros (isto é, ∑d i=1 I(βi , 0), a norma L0), no lasso essa complexidade é medida pela norma L1 desse vetor, ∑d j=1 |βj|. Assim como a norma L0, a norma L1 é menor para modelos com muitos coeficientes iguais a zero. Contudo, ao contrário da norma L0, a norma L1 captura a ideia de que uma pequena mudança nos valores de β não altera demasiadamente a complexidade do modelo resultante (já que suas predições serão praticamente as mesmas). Isso fica evidente na Tabela 3.1: as duas primeiras linhas mostram coeficentes que levam a modelos preditivos parecidos, contudo, enquanto a norma L1 dos dois modelos é próxima, a norma L0 é muito diferente. Analogamente, os modelos da linha dois e três levam a predições muito diferentes (por exemplo, uma pequena alteração em xi resultará em grande alteração na predição dada pelo segundo o modelo da terceira, mas não no modelo da segunda linha), mas a norma L0 dois dois é a mesma. Formalmente, no lasso, buscamos por b βL1,λ = argmin β n ∑ k=1 yk − β0 − d ∑ j=1 βjxk,j !2 + λ d ∑ j=1 |βj|, (3.2) em que L1 indica o fato de que estamos medindo a esparsidade de um vetor β usando 37
  • 56.
    3.3. Lasso sua normaem L1, ||β||L1 = ∑d j=1 |βj|. Tabela 3.1: Diferentes medidas de esparsidade/penalização. Penalidade β ∑d j=1 I(βj , 0) ∑d j=1 |βj| ∑d j=1 β2 j (0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 0 0 0.0 (0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1) 10 1 0.1 (1, 1, 1,1, 1, 1, 1, 1, 1,1) 10 10 10.0 Note que cada valor do parâmetro λ (tuning parameter) leva a um conjunto de coeficientes estimados b βL1,λ diferentes. Assim como ocorre quando usamos a penali- zação da Equação 3.1, quando λ = 0, minimizar a Eq. 3.2 é equivalente a minimizar a Eq. 2.2, ou seja, o lasso torna-se idêntico ao estimador de mínimos quadrados, com todos coeficientes diferentes de zero. Por outro lado, quando λ é grande, n ∑ k=1 yk − β0 − d ∑ j=1 βjxk,j !2 + λ d ∑ j=1 |βj| ≈ λ d ∑ j=1 |βj|, e portanto o estimador dos coeficientes é tal que b β1 = 0,..., b βd = 0. Assim, para λ grande, o estimador dado pelo lasso tem variância próxima a zero, mas um viés muito alto. Desta maneira, adicionar a penalização λ∑d j=1 |βj| também induz estima- dores com variância menor que aqueles dados pelo método de mínimos quadrados. A escolha de λ é em geral feita pela validação cruzada. Isto é, estimamos R(gλ) para cada λ de interesse2 e, posteriormente, selecionamos λ que leva ao melhor mo- delo selecionado, como mostra a Figura 3.3. Além da penalização L1 capturar a complexidade de forma que muitas vezes é mais razoável que a L0, o lasso também possui duas outras características positivas: • É extremamente rápido calcular b βL1,λ para todos os λ simultaneamente. Diver- sos algoritmos foram desenvolvidos nos últimos anos para fazer esta tarefa, sendo o LARS um dos primeiros desses algoritmos. Para mais detalhes, veja Friedman et al. (2010). Em particular, por ser um problema convexo, resolver o 2A cada λ corresponde um b βL1,λ, que por sua vez corresponde uma função de predição g(x). 38
  • 57.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Figura 3.3: Processo de escolha de λ via validação cruzada. O risco para cada valor de λ é estimado usando-se validação cruzada. problema de otimização do lasso é muito mais rápido que buscar pelo melhor subconjunto de covariáveis como na Equação 3.1. • A solução induzida pela Equação 3.2 possui muitos zeros (isto é, o vetor b βL1,λ é esparso). Assim, o modelo resultante é de fácil interpretação. Note que o fato de b βL1,λ ser esparso não é trivial (ao contrário do que ocorre com a penalização ∑d j=1 I(βj , 0)). Para mais detalhes sobre esse aspecto veja, por exemplo, Hastie et al. 2001. 3.3.1 Garantias Teóricas O lasso apresenta algumas garantias teóricas interessantes. Mesmo quando a regressão não é, de fato linear, o estimador converge para o oráculo esparso. Mais especificamente, temos o seguinte teorema: Teorema 3. (Greenshtein, Ritov et al., 2004) Seja βL ∗ = argmin β E[(Y − β| X)2 ] sujeito a ||β||1 ≤ L o melhor preditor linear esparso com norma menor ou igual a L. Se (X1,Y1),...,(Xn,Yn) são 39
  • 58.
    3.4. Regressão Ridge i.i.d.’se |Y|,|X1|,...,|Xn| ≤ B para algum B 0, então b βL = argmin β 1 n n ∑ i=1 (Yi − β| Xi)2 sujeito a ||β||1 ≤ L (veja na Equação 3.5 que este é justamente o estimador dado pelo lasso) é tal que, com proba- bilidade ao menos 1 − δ, R(gb βL ) − R(gβL ∗ ) ≤ v u u t16(L + 1)4B2 n log √ 2d √ δ ! . Note que, quanto menor o valor de L no Teorema 3, mais próximo o risco do estimador do lasso, b βL, fica do risco do oráculo βL ∗ . Ou seja, mais fácil é se recuperar o melhor β com norma menor que L. Por outro lado, quanto menor o valor de L, pior é esse oráculo; aumentar L necessariamente melhora o oráculo, pois a minimização do risco (teórico) é feita em um espaço maior . 3.4 Regressão Ridge Uma alternativa ao lasso (que na realidade é anterior a ele) é a regressão ridge (Hoerl e Kennard, 1970). A ideia é novamente buscar o modelo que minimize a soma do erro quadrático médio de g com uma medida de sua complexidade. Na regressão ridge isso é feito encontrando-se o estimador dado por b βL2,λ = argmin β n ∑ k=1 yk − β0 − d ∑ j=1 βjxk,j !2 + λ d ∑ j=1 β2 j , (3.3) em que L2 indica o fato de que estamos medindo a complexidade de um vetor β usando sua norma em L2, ||β||2 L2 = ∑d j=1 β2 j . Veja novamente a Tabela 3.1 para uma comparação entre as diferentes normas estudadas. Ao contrário do lasso, a regressão ridge possui solução analítica, dada por b βL2,λ = (b β0, b β1,..., b βd) = (X| X + λI0)−1 X| Y, (3.4) em que I0 é uma matriz identidade (d + 1) × (d + 1) modificada de modo que I0(1,1) = 0, ou seja, o elemento da primeira linha e primeira coluna é igual a zero. 40
  • 59.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Compare essa solução com o estimador de mínimos quadrados (Equação 2.3). Apesar de não introduzir soluções com zeros como o lasso, a regressão ridge também diminui a variância dos estimadores da regressão pois encolhe (em inglês, shrinks) os coeficientes β estimados pela regressão linear. Por exemplo, no caso em que as covariáveis originais são ortogonais (isto é, X|X = I), temos b βL2,λ = b β/(1 + λ), em que b β é o estimador de mínimos quadrados. Assim, V h b βi,L2,λ i = V h b βi i (1 + λ)2 . Evidentemente, como no lasso, apesar da variância da regressão ridge ser menor, seu viés é maior. Assim, λ deve ser escolhido de modo a controlar o balanço viés- variância. Novamente, isso pode ser feito via validação cruzada. Na Seção 4.6.3, estudamos uma extensão não linear da regressão ridge, a kernel ridge regression. 3.5 Formulação Alternativa O lasso possui uma formulação alternativa. Pode-se mostrar que, para cada λ ≥ 0, existe B ≥ 0 tal que a Equação 3.2 é equivalente a argmin β n ∑ i=1 (yi − β0 − β1x1 − ... − βdxd)2 sujeito a d ∑ j=1 |βj| ≤ B. (3.5) Analogamente, as Equações 3.1 e 3.3 (melhor subconjunto e regressão ridge, res- pectivamente) podem ser reexpressas como argmin β n ∑ i=1 (yi − β0 − β1x1 − ... − βdxd)2 sujeito a d ∑ j=1 I(βj , 0) ≤ B1 e argmin β n ∑ i=1 (yi − β0 − β1x1 − ... − βdxd)2 sujeito a d ∑ j=1 (βj)2 ≤ B2, para algum B1 e B2. Isso evidencia mais uma vez que, em todas as abordagens, a penalização favorece coeficientes pequenos quando comparados à solução de mí- nimos quadrados. Contudo, enquanto lasso e a penalização por AIC fazem seleção 41
  • 60.
    3.6. Interpretação Bayesiana devariáveis (zeram alguns coeficientes), o mesmo não ocorre com a regressão ridge. 3.6 Interpretação Bayesiana A penalty is a cowardly way to score. Edson Arantes do Nascimento (Pelé) Tanto a regressão ridge quanto o lasso admitem uma interpretação sob o ponto de vista Bayesiano: os estimadores de β, em ambos os procedimentos, podem ser escri- tos como sendo a moda da distribuição a posteriori de β para uma dada distribuição a priori e verossimilhança. Mais especificamente, se assumimos que Yi|xi,β ∼ N(β| xi;σ2 Id), em que Id é a matriz identidade de ordem d, as variáveis Y1,...,Yn são independentes e σ2 conhecido, então: • Se β ∼ N(0,σ2 βId), então a moda da distribuição a posteriori de β, dado o con- junto de dados (x1,y1),...,(xn,yn), é exatamente o estimador de β dado pela regressão ridge (Eq. 3.3) com λ = σ2/σ2 β; • Se β1,...,βd i.i.d. ∼ Laplace(0,τβ),3 a moda da distribuição a posteriori de β, dado o conjunto de dados (x1,y1),...,(xn,yn), é exatamente o estimador de β dado pelo lasso (Eq. 3.2) com λ = σ2τβ. Note que, sob a abordagem Bayesiana, o tuning parameter λ é definido pela dis- tribuição a priori. Quanto menor a dispersão da priori, maior o valor de λ e, con- sequentemente, mais próximo de zero estarão as estimativas a posteriori. Assim, a abordagem Bayesiana evita o overfitting, por mais que esse não seja necessaria- mente seu objetivo primordial. O interessante é que isso ocorre justamente porque a priori centrada em 0 reflete a crença de que os parâmetros relativos à maioria das covariáveis, em geral, devem ser pequenos.Isso leva a uma interpretação filosófica 3Aqui, τβ é um parâmetro de precisão. 42
  • 61.
    Capítulo 3. MétodosParamétricos em Altas Dimensões interessante: escolher λ por validação cruzada equivale a escolher a distribuição a priori que leva a um maior poder preditivo. Em outras palavras, usamos a maqui- naria Bayesiana apenas para motivar estimadores com uma performance (preditiva) melhor que a dos mínimos quadrados. Veja mais sobre a relação entre estimadores de Bayes e os estimadores descritos neste capítulo em Bishop (2006) e Park e Casella (2008). 3.7 Regressão ridge e lasso no R No R, ambos os métodos podem ser implementados via a biblioteca glmnet. Se x é a matriz com as covariáveis e y é a matriz com os valores da variável resposta, a validação cruzada para o lasso pode ser feita utilizando o seguinte comando: ajuste - cv.glmnet(x, y, alpha = 1) A regressão ridge pode ser ajustada utilizando essa mesma função, mas alterando o argumento alpha = 0 para alpha = 1. 3.8 Exemplos Exemplo 3.1. Geramos n = 500 observações i.i.d. segundo Yk = 3Xk,1 − 2Xk,2 + Xk,3 − 3Xk,4 + Xk,5 + 20 ∑ i=6 0Xk,i + ek, com ek ∼ N(0,0.52) e Xk,i ∼ N(0,1), i = 1,...,20 independentes. A Tabela 3.2 mostra os resultados encontrados. Pode-se observar que o método dos mínimos quadrados com todas as variáveis foi rápido de ser ajustado, mas tem poder preditivo muito baixo (o risco estimado é alto). Por outro lado, todos os mé- todos de seleção de variáveis vistos nesse texto possuem poder preditivo considera- velmente melhor para este exemplo. A heurística do forward stepwise fornece os mesmos resultados que a da busca pelo mínimo da Equação 3.1 (critério AIC), com a vantagem de levar um tempo substan- cialmente menor. Por outro lado, o lasso forneceu um risco ainda menor em um intervalo de tempo ainda mais curto; em particular as variáveis selecionadas foram 43
  • 62.
    3.8. Exemplos as querealmente estão associadas a Y. A regressão ridge foi substancialmente me- lhor que o método de mínimos quadrados com todas as covariáveis, mas levemente pior que os demais métodos. Contudo, o tempo de execução desse método foi menor do que o tempo observado para forward stepwise. Tabela 3.2: Resultados dos métodos de seleção de variáveis no exemplo da Seção 3.8. Método Variáveis Selecionadas Tempo de ajuste Risco Estimadoa Mín. Quadrados Todas 0.002 segundos 14.63 (0.02) Melhor AIC* x1,...,x5,x10,x12,x13,x19,x20 1 hora e 20 minutos 0.30 (0.02) Forward Step. x1,...,x5,x10,x12,x13,x19,x20 0.46 segundos 0.30 (0.02) Ridge Todas 0.16 segundos 0.33 (0.03) Lasso x1,...,x5 0.08 segundos 0.25 (0.02) a Risco Estimado (Erro Padrão) * Busca pelo melhor subconjunto Exemplo 3.2 (Câncer de Próstata). Esses dados são provenientes de um estudo pu- blicado em Stamey et al. (1989) e estudados por James et al. (2013). Nesse trabalho os autores investigaram a associação entre o nível de antígeno especifico de próstata (PSA) e algumas medidas clínicas. Foram observados dados de 97 homens que es- tavam para fazer prostatectomia radical. O objetivo era prever o logaritmo da PSA (lpsa) com base nas demais variáveis. A seguir são apresentadas as variáveis para algumas observações do banco de dados. Tabela 3.3: Banco de dados de Câncer de Próstata. lcavol lweight age lbph svi lcp gleason pgg45 lpsa train 0.75 3.43 62 -1.386 0 -1.39 6 0 0.37 TRUE 0.46 3.76 49 1.423 0 -1.39 6 0 2.79 TRUE -1.35 3.60 63 1.267 0 -1.39 6 0 1.27 TRUE 1.31 4.12 64 2.171 0 -1.39 7 5 2.09 FALSE 2.88 3.77 68 1.558 1 1.56 7 80 5.48 TRUE 0.69 3.54 58 1.537 0 -1.39 6 0 0.85 TRUE 44
  • 63.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Utilizamos a separação dos dados em treinamento e validação definida no pró- prio banco de dados (coluna train) para aplicação das técnicas de mínimos quadra- dos, ridge e lasso. set.seed(1) dados - read.table(../dados/prostate.data) # conjunto de treinamento tr - dados$train X_tr - dados[tr, 1:8] %% as.matrix() y_tr - dados$lpsa[tr] # conjunto de validação X_val - dados[-tr, 1:8] %% as.matrix() y_val - dados$lpsa[-tr] A seguir iremos ajustar o modelo de mínimos quadrados, ridge e lasso. # mínimos quadrados ajuste_mq - glmnet(X_tr, y_tr, alpha = 0, lambda = 0) predito_mq - predict(ajuste_mq, newx = X_val) # regressão ridge cv_ridge - cv.glmnet(X_tr, y_tr, alpha = 0) ajuste_ridge - glmnet(X_tr, y_tr, alpha = 0) predito_ridge - predict(ajuste_ridge, s = cv_ridge$lambda.1se, newx = X_val) # regressão lasso cv_lasso - cv.glmnet(X_tr, y_tr, alpha = 1) ajuste_lasso - glmnet(X_tr, y_tr, alpha = 1) predito_lasso - predict(ajuste_lasso, s = cv_lasso$lambda.1se, 45
  • 64.
    3.8. Exemplos newx =X_val) As Figuras 3.4 e 3.5 ilustram o comportamento dos coeficientes estimados de acordo com λ para a regressão ridge e o lasso. Figura 3.4: Coeficientes estimados via regressão ridge em função de λ. A reta vertical indica o valor escolhido via validação cruzada. Figura 3.5: Coeficientes estimados via regressão lasso em função de λ. A reta vertical indica o valor escolhido via validação cruzada. 46
  • 65.
    Capítulo 3. MétodosParamétricos em Altas Dimensões A Tabela 3.4 apresenta os coeficientes estimados com a utilização das três técni- cas. Note a redução dos coeficientes obtidos por mínimos quadrados com estimação dos métodos ridge e lasso. Ainda, note que excluímos algumas variáveis com a uti- lização do lasso. Tabela 3.4: Coeficientes estimados para os dados da próstata considerando mínimos quadrados, ridge e lasso. Coeficiente Mínimos Quadrados Ridge Lasso Intercepto 0.428 0.096 0.164 lcavol 0.577 0.493 0.544 lweight 0.614 0.601 0.596 age -0.019 -0.015 -0.015 lbph 0.145 0.138 0.135 svi 0.737 0.679 0.669 lcp -0.206 -0.117 -0.145 gleason -0.029 0.017 - pgg45 0.009 0.007 0.007 A Tabela 3.5 apresenta o desempenho preditivo dos modelos obtidos com os da- dos de treinamento quando aplicados aos dados de validação dos 30 indivíduos. Levando em conta o erro padrão dos estimadores (que são grandes por conta do ta- manho pequeno do conjunto de validação), não é possível afirmar qual modelo teve desempenho preditivo melhor. Contudo, o lasso possui a vantagem de não utilizar algumas covariáveis. Tabela 3.5: Desempenho preditivo (erro quadrático médico e seu erro padrão) em relação ao conjunto de validação dos modelos de mínimos quadrados, ridge e lasso. Modelo EQM Erro Padrão Mínimos Quadrados 0.455 0.078 Ridge 0.516 0.079 Lasso 0.560 0.088 47
  • 66.
    3.8. Exemplos Exemplo 3.3(Amazon Fine Food Reviews). Nesse exemplo, a partir dos textos das resenhas, mostramos como fazer predições de notas dadas na Amazon. Para isso, se- lecionaremos um subconjunto do banco de dados Amazon Fine Food Reviews. Esse banco conta com aproximadamente meio milhão de resenhas. Para ilustração das técnicas apresentadas anteriormente, separamos 20.000 observações. Dessas, 10.000 foram utilizadas para treinamento dos modelos e 10.000 para validação. dados - fread(../dados/Reviews.csv, header = TRUE) # seleciona 20.000 observações set.seed(1) selecao - sample(nrow(dados), 20000) dados - dados[selecao,] # cria a matriz de preditoras corp - VCorpus(VectorSource(dados$Text)) dtm - DocumentTermMatrix(corp, control = list(tolower = TRUE, stemming = FALSE, removeNumbers = TRUE, removePunctuation = TRUE, removeStripwhitespace = TRUE, weighting = weightTf)) dtmMatrix - sparseMatrix(i = dtm$i, j = dtm$j, x = dtm$v, dimnames = list(NULL, dtm$dimnames[[2]]), dims = c(dtm$nrow, dtm$ncol)) dim(dtmMatrix) ## [1] 20000 36841 # indica observações de treinamento 48
  • 67.
    Capítulo 3. MétodosParamétricos em Altas Dimensões tr - sample.int(length(selecao), 10000, replace = FALSE) Assim, consideraremos nesse exemplo um total de 17.072 termos. É importante notar que não é necessário converter a matriz de dados para o formato usual com todos os elementos preenchidos. Ela pode ser utilizada de forma esparsa (veja a Seção A.3 para mais detalhes) e, assim, economizar memória do computador. Com a utilização do formato esparso, é possível trabalhar com o conjunto completo de meio milhão de resenhas. A seguir iremos ajustar o modelo de mínimos quadrados, ridge e lasso. # mínimos quadrados ajuste_mq - glmnet(dtmMatrix[tr,], dados$Score[tr], alpha = 0, lambda = 0) predito_mq - predict(ajuste_mq, newx = dtmMatrix[-tr,]) # ridge ridge - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], alpha = 0) predito_ridge - predict(ridge, s = ridge$lambda.min, newx = dtmMatrix[-tr,]) # lasso lasso - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], alpha = 1) predito_lasso - predict(lasso, s = lasso$lambda.min, newx = dtmMatrix[-tr,]) Comparando os erros quadráticos médios (Tabela 3.6), notamos que o lasso apre- sentou o melhor desempenho preditivo, seguida da regressão ridge. Já a regressão com mínimos quadrados apresentou um desempenho bastante inferior à essas duas técnicas. Além disso, o lasso seleciona apenas 558 variáveis nesse caso. 49
  • 68.
    3.8. Exemplos Tabela 3.6:Desempenho preditivo (erro quadrático médico e seu erro padrão) em relação ao conjunto de validação dos modelos de mínimos quadrados, ridge e lasso. Modelo EQM Erro Padrão Mínimos Quadrados 7.675 0.234 Ridge 1.205 0.024 Lasso 1.136 0.022 As Figuras 3.6 e 3.7 mostram quais palavras apresentam maior importância para a previsão. Consideramos os valores positivos e negativos dos coeficientes estima- dos ordenados. Para esse exemplo, selecionamos os 20 maiores de cada sentido para a regressão ridge e lasso. Figura 3.6: Coeficientes com os 20 maiores valores da regressão ridge. 50
  • 69.
    Capítulo 3. MétodosParamétricos em Altas Dimensões Figura 3.7: Coeficientes com os 20 maiores valores da regressão lasso. 3.9 Resumo Neste capítulo vimos que, mesmo quando há muitas covariáveis em relação ao tamanho amostral, muitas vezes é possível criar bons estimadores de r(x) com base em uma regressão linear. A chave para isso é usar o fato de que, frequentemente, muitas variáveis têm pouca influência na resposta. Assim, adicionando um termo de penalização à soma de quadrados (Eq. 3.1), criamos estimadores dos coeficientes β que encorajam esparsidade, isto é, muitos zeros na solução. Desta forma, criamos estimadores com uma variância menor. A esperança é que, se o aumento no viés por retirar essas variáveis não é muito grande, o risco também diminui e, assim, conseguimos um estimador melhor para r(x) do que aquele obtido pelo método dos mínimos quadrados (ver Figura 3.8). Vimos três formas de se fazer a penalização: • Penalidade L0: ∑d i=1 I(βi , 0). Encontrar o mínimo da função objetivo con- some um tempo computacional extremamente alto, pois deve-se buscar o me- lhor entre os 2d subconjuntos de covariáveis. Assim, é necessário usar uma 51
  • 70.
    3.9. Resumo heurística comostepwise para aproximar este valor. • Penalidade L1: ∑d i=1 |βi|. Trata-se do lasso. Esta penalização é rápida de ser calculada e induz esparsidade em β. Frequentemente ela leva a um estimador com bom poder preditivo. • Penalidade L2: ∑d i=1 β2 i . Trata-se da regressão ridge. Esta penalização não induz zeros em β, mas reduz a variância do estimador da regressão pois encolhe o estimador de mínimos quadrados. Métodos paramétricos muitas vezes impõem muitas limitações para r(x): por exemplo, nem sempre o melhor estimador linear é um bom estimador para r(x). No próximo capítulo iremos introduzir métodos não paramétricos para r(x), que são modelos mais flexíveis que métodos paramétricos. Em linhas gerais, métodos não paramétricos diminuem o viés e aumentam a variância de métodos paramétricos, como indica a Figura 3.8. Figura 3.8: Relação entre métodos não paramétricos, sem penalização e métodos paramétricos com penalização. 52
  • 71.
    Capítulo 4 Métodos NãoParamétricos With four parameters I can fit an elephant, and with five I can make him wiggle his trunk. John von Neumann Para amostras pequenas, métodos paramétricos costumam levar a bons resulta- dos: impondo-se um modelo com poucos parâmetros, é possível criar estimadores com baixa variância para situações com tamanho amostral (n) pequeno. Contudo, quando n é grande, muitas vezes é benéfico aumentar o número de parâmetros do modelo, de modo que tenhamos um viés consideravelmente menor às custas de uma variância um pouco maior. É exatamente por isso que métodos não paramétricos ga- nham importância: informalmente, um modelo não paramétrico é um modelo que tem infinitos parâmetros. Neste capítulo exploramos alguns destes modelos. 4.1 Séries Ortogonais Métodos baseados em séries ortogonais são bastante antigos (Chentsov, 1962) e baseiam-se em uma ideia bastante simples: expandir a função de regressão em uma base ortogonal. Para facilitar a discussão, vamos assumir por hora que x ∈ [0,1] e a densidade de X é uniform, isto é, f (x) = 1. O ponto inicial é escolher (ψj(x))j∈N, uma base ortonormal1 para o conjunto de 1Isto é, R 1 0 ψi(x)ψj(x) = I(i = j). 53
  • 72.
    4.1. Séries Ortogonais funções L2 ([0,1]):= f : [0,1] −→ R : Z 1 0 f2 (x)dx ∞ . Um exemplo de (ψj(x))j∈N é a base de Fourier: ψ0(x) = 1; ψ2j−1(x) = √ 2sin(2πjx), j ∈ N; ψ2j(x) = √ 2cos(2πjx), j ∈ N Figura 4.1: Alguns elementos da base de Fourier. Os primeiros termos são mais suaves que os termos de ordem mais alta. Qualquer função integrável em L2 pode ser escrita como combinação linear dos elementos da base de Fourier. A ideia central de métodos baseados em séries é que, se a função de regressão r(x) pertence a L2([0,1]), então r(x) pode ser representada como r(x) = ∑ j∈N βjψj(x), em que, devido à ortonormalidade da base (ψj(x))j∈N, temos que os coeficientes da expansão admitem uma forma muito simples: βj = Z r(x)ψj(x)dx = Z E[Y|x]ψj(x)f (x)dx = Z E[Yψj(x)|x]f (x)dx = E[Yψj(X)]. 54
  • 73.
    Capítulo 4. MétodosNão Paramétricos Um estimador não viesado para os coeficientes da expansão βj é dado por b βj = 1 n n ∑ i=1 Yiψj(Xi). Assim, o estimador baseado em séries tem a seguinte forma: g(x) = J ∑ j=0 b βjψj(x). (4.1) O parâmetro J é um tuning parameter que controla o balanço viés-variância. Valo- res altos de J levam a um viés baixo, mas variância alta. Observação 4.1. Se r(x) pertence a L2([0,1]), sabemos que βj −→ 0 quando j −→ ∞, o que justifica o truncamento da Equação 4.1. Note que o número de parâmetros, (βj)j∈N, é infinito, por isso o método de séries é considerado um método não paramétrico. Se o número de preditoras for maior do que 1 (d 1), construir uma base ψj(x) j é uma tarefa menos simples. Tipicamente, isso é feito usando-se d produtos tensori- ais para cada uma das coordenadas de x. Por exemplo, se d = 2, a base dada por produtos tensoriais é ψi,j(x) = ψi(x1)ψj(x2) : i, j ∈ N , em que x = (x1,x2), e {ψi(x1)}i e ψj(x2) j são bases para L2(R). Esta é uma base para L2(R2) (Wasserman, 2006). A abordagem de séries ortogonais é essencialmente a mesma que aquela da re- gressão linear com um número variável de covariáveis, com a exceção de que o esti- mador de cada coeficiente βi é mais rapidamente calculado devido à ortogonalidade das funções de base. Para deixar essa conexão mais clara, considere o exemplo a seguir. Pela expansão de Taylor, sabemos que qualquer função analítica (Krantz e Parks, 2002) pode ser expressa como r(x) = ∑ i≥0 βixi . 55
  • 74.
    4.2. Splines Essa éjustamente a família de modelos usada no Exemplo 1.6. Assim, o modelo ajustado naquele exemplo foi um modelo não paramétrico, embora os coeficientes da expansão tenham sido ajustados via regressão linear. O que torna o modelo não paramétrico é justamente o fato do número de coeficientes usados, J (que naquele exemplo é denotado por p) ser um tuning parameter que pode assumir qualquer valor em {0,1,...}. Assim, há um número infinito de parâmetros23. Para outras abordagens de estimação com séries ortogonais, veja Beran (2000), Efromovich (1999) e Wasserman (2006). Em particular, tais referências discutem o uso de outras bases além da base de Fourier, como, por exemplo, wavelets. Veja também a Seção 4.13 para um pouco de teoria sobre estimadores baseados em séries. O método de séries pode ser implementado usando-se uma base polinomial via função lm, descrita no Capítulo 2: ajuste - lm(y ~ poly(as.matrix(covariaveis), degree = 5)) A função poly calcula automaticamente todos os polinômios (neste caso com grau até 5) em Rd. 4.2 Splines Vamos assumir novamente que d = 1. Assim como métodos baseados em séries ortogonais, em splines aproximamos r(x) como uma combinação linear ∑I i=1 βi fi(x). Contudo, ao invés de usar uma base ortonormal, utiliza-se uma base para um espaço de splines. Para descrevermos o que é um spline, fixe t1 ... tp. Chamamos tais pontos de nós. Um spline de k-ésima ordem é uma função polinomial por partes de grau k que é contínua e tem derivadas de ordem 1,...,k − 1 contínuas em seus nós. Como um spline é bem mais suave que uma função que é polinomial por partes (mas sem as restrições de continuidade), ele consegue aproximar de forma mais eficiente funções contínuas4. 2Note que quando escolhemos J = J0, estamos estimando βj = 0, ∀j J0. 3Essa base de polinômios não é ortonormal, mas ela pode ser convertida em uma base ortonormal via o processo de ortogonalização de Gram-Schmidt. A base resultante é chamada de base de Hermite (Efromovich, 1999). 4Por exemplo, se r é uma função duas vezes diferenciável em [0,1], então existe um spline cúbico f com nós em t1 ... tp tal que supx∈[0,1] |r(x) − f (x)| ≤ O 1 p qR 1 0 r00(x)2dx (De Boor et al., 1978). 56
  • 75.
    Capítulo 4. MétodosNão Paramétricos Há diversas formas de se definir uma base para tal espaço. Uma delas é através das seguintes funções: f1(x) = 1; f2(x) = x;...; fk+1(x) = xk , fk+1+j(x) = (x − tj)k +, j = 1,..., p Dessa forma, com essa base, I = k + 1 + p. Há, contudo, muitas outras formas de definir uma base para este espaço. Existem também muitas variações de splines, como natural splines ou smoothing splines (veja, por exemplo, Hastie et al. 2001 e a Seção 4.6.3.1). Fixados os nós, pode-se então utilizar o método de mínimos quadrados para es- timar os valores dos coeficientes β1,...,βI. No R, splines podem ser usados via a biblioteca splines: fit - lm(y ~ bs(x, degree = 3), data = dados) predito - predict(fit, newdata = list(x = x.grid), se = TRUE) Este código ajusta B-splines. Utilizando-se ns, pode-se ajustar natural splines da mesma maneira. Para smoothing splines, pode-se usar fit - smooth.spline(x, y, df = 3) 4.3 k Vizinhos Mais Próximos We’re neighbors and we’re going to pull together. Rick Perry O método dos k vizinhos mais próximos (em inglês, k-nearest neighbours, KNN) (Benedetti, 1977; Stone, 1977) é um dos mais populares na comunidade de aprendi- zado de máquina. Ele tem como base estimar a função de regressão r(x) para uma dada configuração das covariáveis x com base nas respostas Y dos k-vizinhos mais próximos a x. Formalmente, definimos g(x) = 1 k ∑ i∈Nx yi, (4.2) 57
  • 76.
    4.3. k VizinhosMais Próximos em que Nx é o conjunto das k observações mais próximas de x, isto é, Nx = n i∈{1,...,n} : d(xi,x) ≤ dk x o e dk x é a distância do k-ésimo vizinho mais próximo de x a x. Em palavras, a função de regressão avaliada em x é estimada utilizando-se uma média local das respostas dos k vizinhos mais próximos a x no espaço das covariáveis. O tuning parameter k pode ser escolhido por validação cruzada. Um valor alto de k leva a um modelo muito simples (uma constante quando k −→ ∞) e, assim um viés alto, mas uma variância baixa. Por sua vez, um valor baixo para k leva a um estimador com variância alta, mas viés baixo. Veja a Figura 4.2 para uma ilustração. Figura 4.2: Influência da escolha de k no estimador dos k vizinhos mais próximos. No R, o método dos vizinhos mais próximos pode ser implementando utilizando o pacote FNN. A função knn.reg faz a predição para novas observações com co- variáveis x_teste (uma observação por linha) utilizando um conjunto de treina- mento com covariáveis x_treinamento, respostas y_treinamento e k vizinhos da seguinte forma: library(FNN) ajuste - knn.reg(train = x_treinamento, test = x_teste, y = y_treinamento, k = k) 58
  • 77.
    Capítulo 4. MétodosNão Paramétricos predito - ajuste$pred 4.4 Nadaraya-Watson O método de Nadaraya-Watson, criado por Nadaraya (1964) e Watson (1964), é uma variação do método dos k-vizinhos mais próximos bastante difundida na co- munidade de estatística. Este método consiste em estimar a função de regressão em um dado ponto x utilizando-se uma média ponderada das observações do conjunto de treinamento: g(x) = n ∑ i=1 wi(x)yi, em que wi(x) é um peso atribuído à i-ésima observação, e que mede o quão similar xi é a x. Mais especificamente, wi(x) tem a forma wi(x) = K(x,xi) ∑n j=1 K(x,xj) , em que K(x,xi) é um kernel de suavização usado para medir a similaridade entre as observações. Algumas escolhas populares para K(x,xi) são: • kernel uniforme: K(x,xi) = I(d(x,xi) ≤ h) • kernel gaussiano: K(x,xi) = ( √ 2πh2)−1 exp − d2(x,xi) 2h2 • kernel triangular: K(x,xi) = (1 − d(x,xi)/h)I(d(x,xi) ≤ h) • kernel de Epanechnikov: K(x,xi) = (1 − d2(x,xi)/h2)I(d(x,xi) ≤ h) Enquanto o kernel uniforme atribui o mesmo peso para cada observação a uma distância menor que h de x e peso zero para observações a uma distância maior que h (que é um tuning parameter), os kernels triangulares e de Epanechnikov atribuem pesos diferentes de acordo com a distância até x; observações mais próximas rece- bem peso maior. O kernel gaussiano, por sua vez, atribui peso positivo para todas as observações do conjunto de treinamento (novamente, observações mais próxi- mas recebem peso maior). Outros exemplos de kernels podem ser encontrados em https://bit.ly/32OSvUl. 59
  • 78.
    4.4. Nadaraya-Watson Note queum valor alto do tuning parameter h leva um estimador da função de regressão com variância baixa e viés alto, já que o mesmo peso é atribuído para cada amostra xi neste caso. Por sua vez, h baixo leva a uma estimador com variância alta, mas viés baixo. Veja a Figura 4.3 para um exemplo com o kernel uniforme. Figura 4.3: Influência da escolha de h no estimador de Nadaraya-Watson. Aqui o kernel utilizado foi o kernel uniforme. Na prática, muitas vezes é observado que a escolha do kernel não influencia muito os resultados, enquanto a escolha dos tuning parameters associados a ele sim. Veja um exemplo de comparação de dois kernels na Figura 4.4. Pode-se verificar que o estimador de Nadaraya Watson em um dado x fixo é justamente o ponto β0 que minimiza n ∑ i=1 wi(x)(Yi − β0)2 , isto é, g(x) := b β0 = argmin β0 n ∑ i=1 wi(x)(Yi − β0)2 , (4.3) Assim, esse estimador pode ser entendido como um estimador de mínimos quadra- dos ponderado; no qual consideramos uma função de regressão que contém somente o intercepto, g(x) = b β0. Note que x está fixo; para cada x temos um valor de b β0 diferente, isto é, uma outra regressão linear. Esta motivação para o estimador de 60
  • 79.
    Capítulo 4. MétodosNão Paramétricos Nadaraya-Watson leva a uma extensão deste método conhecida como regressão po- linomial local, que descrevemos na Seção 4.5. Figura 4.4: Influência da escolha do kernel no estimador de Nadaraya-Watson. Uma forma de se ajustar o estimador de Nadaraya-Watson é utilizando o pacote locfit. Pode-se mudar o kernel utilizado via o argumento kern. ajuste - locfit(y ~ x_1 + x_2, alpha = c(0, 0.3), deg = 0, data = dados) predito - predict(ajuste, newdata = novos_dados) 4.5 Regressão Polinomial Local A regressão polinomial local (Cleveland, 1979; Fan, 1993; Fan e Gijbels, 1996; Stone, 1977) é uma extensão do estimador de Nadaraya-Watson. Suponha, por sim- plicidade, que há apenas d = 1 covariável. A ideia central é que, ao invés de buscar um estimador baseado no método de mínimos quadrados ponderados com apenas 61
  • 80.
    4.6. Métodos baseadosem RKHSs um intercepto como na Equação 4.3, utilizamos um polinômio de grau p: g(x) := b β0 + p ∑ j=1 b βjxj , em que b β0,..., b βp são dados por arg min β0,...,βp n ∑ i=1 wi(x) Yi − β0 − p ∑ j=1 βjx j i !2 . Aqui, novamente, wi(x) = K(x,xi) ∑n j=1 K(x,xj) . Note que, para cada x de interesse, as estimati- vas dos coeficientes β0,...,βp são diferentes, ou seja esse estimador consiste em usar o método de mínimos quadrados localmente. A solução para tal problema é dada por (b β0 ... b βp) = (B| ΩB)−1 B| Ωy, em que B é uma matriz n × (p + 1) cuja i-ésima linha é dada por (1, xi, ..., x p i ) e Ω é uma matriz diagonal n × n cujo i-ésimo elemento da diagonal é wi(x). Uma vantagem de se utilizar polinômios ao invés de apenas um intercepto é que isso induz estimadores com vieses menores (em particular, o viés em regiões próxi- mas ao limite do domínio dos dados; veja, por exemplo, Wasserman 2006). Por outro lado, a variância de tais estimadores é maior, de modo que é importante selecionar o grau do polinômio a ser utilizado adequadamente. Para regressão polinomial lo- cal com mais de uma covariável (ou seja, d 1) remetemos o leitor a Fan e Gijbels (1996). No R, polinômios locais também podem ser ajustados no R usando o pacote locfit, como o estimador de Nadaraya-Watson (Seção 4.4). Para isso, basta modi- ficar o valor do argumento deg, que representa o grau do polinômio a ser utilizado. Note que 0 corresponde ao estimador de Nadaraya-Watson. 4.6 Métodos baseados em RKHSs Métodos de estimação da função de regressão com base em RKHSs (Reproducing Kernel Hilbert Spaces, Aronszajn 1950) (Hastie et al., 2001; Kimeldorf e Wahba, 1970; Nosedal-Sanchez et al., 2012) são uma família de métodos bastante geral. A ideia 62
  • 81.
    Capítulo 4. MétodosNão Paramétricos central envolve a definição de uma função objetivo para quantificar a qualidade de uma função de predição e, posteriormente, busca-se a função com melhor ajuste em um espaço de funções H. Assim, busca-se pela solução de argmin g∈H n ∑ k=1 L(g(xk),yk) + P(g), em que L é uma função de perda arbitrária, P é uma medida de complexidade de g e H é um espaço de funções. Para um espaço H arbitrário, a solução para esse pro- blema é difícil, uma vez que se trata de um problema de otimização sobre um espaço de funções. RKHSs permitem descrever uma grande família de espaços H (chama- das de Reproducing Kernel Hilbert Spaces) de modo que a solução do problema de otimização seja relativamente simples de ser implementada. A fim de motivar esta família, consideraremos uma pequena modificação do pro- blema de minimização proposto na regressão ridge (Seção 3.4) dada por: b β = argmin β n ∑ k=1 (yk − β0 − β1xk,1 − ... − βdxk,d)2 + λ d ∑ i=0 β2 i , (4.4) em que β0 também é penalizado para simplificar a notação do que será exposto. Denotando a i-ésima variável de x por φi(x) (considerando a convenção de que φ0(x) ≡ x0 ≡ 1), esse problema pode ser reformulado como b r(x) = argmin g∈H n ∑ k=1 (yk − g(xk))2 + λ||g||2 H, (4.5) em que H := ( g ∈ L2 (X ) : existem (ci)d i=0 com d ∑ i=0 c2 i ∞ tais que g(x) = d ∑ i=0 ciφi(x) ) (4.6) e ||g||2 H := d ∑ i=0 c2 i . Enquanto que a Equação 4.4 consistem em um problema de otimização sobre vetores de Rd+1, a Equação 4.5 consistem em um problema de otimização sobre fun- ções. Note que enquanto o termo ∑n k=1 (yk − g(xk))2 mede a bondade de ajuste de g, 63
  • 82.
    4.6. Métodos baseadosem RKHSs o termo ||g||2 H mede a suavidade de g: se ||g||2 H é baixo, temos g suave, caso contrário g oscila muito. Em outras palavras, ||g||2 H alto implica que uma mudança pequena em x acarreta em mudança grande em g(x). Métodos de regressão com base em penalização em RKHS são uma generalização da função objetivo da Equação 4.5. Primeiramente, eles permite que a bondade do ajuste possa ser medida com outras funções além do erro quadrático. Em segundo lugar, ao invés de usarem apenas este espaço específico H (funções lineares), méto- dos baseados em RKHS consideram espaços mais gerais H em que a Equação 4.5 ainda pode ser resolvida facilmente. Isso permite criar uma classe mais ampla de estimadores com a possibilidade de bom desempenho em uma grande variedade de situações. Esses espaços são justamente os Reproducing Kernel Hilbert Spaces. Mais especificamente, buscaremos resolver o problema argmin g∈H n ∑ k=1 L(g(xk),yk) + λ||g||2 H, em que H é um RKHS e L é uma função adequada para o problema em questão. Veremos que a norma ||g||H reflete a suavidade das funções em H e que cada espaço contém uma noção de suavidade diferente. Assim, dado um novo problema, um usuário pode desenhar sua função de perda L e escolher um espaço que julgar ade- quado para criar a sua função de predição g. Veremos que smoothing splines, support vector regression e kernel ridge regression são casos particulares dessa abordagem com escolhas particulares de L e/ou H. 4.6.1 A matemática do RKHS Seja X o espaço das covariáveis (features), que pode ser mais geral que Rd que consideramos até aqui. Nesta seção veremos que um RKHS H é essencialmente um subespaço de L2(X ) que contém funções suaves. Em particular, a norma ||g||2 H é uma medida de suavidade da função g. Uma quantidade fundamental na definição de um RKHS é um Kernel de Mercer:5 Definição 1. Seja K(xa,xb) uma função cujo domínio é X × X 6. Dizemos que K é um Kernel de Mercer se ele sastisfaz às seguintes condições: 5Um Kernel de Mercer não é um kernel suavizador como aquele usado no estimador de Nadaraya- Watson. 6Para métodos de penalização em RKHS, o espaço amostral X pode ser um espaço qualquer, isto é, não precisa ser necessariamente Rd. 64
  • 83.
    Capítulo 4. MétodosNão Paramétricos • Simétrico: K(xa,xb) = K(xb,xa) para todo xa,xb ∈ X • Positivo Semi-Definido: a matriz K xi,xj n i,j=1 é positiva semi-definida para todo n ∈ N e para todo x1,...,xn ∈ X . Exemplo 4.1. Alguns kernels de Mercer comuns são: • kernel polinomial: K(xi,xl) = (1 + hxi,xli)d • kernel gaussiano: K(xi,xl) = exp n −d2(xi,xl) 2h2 o Veja mais exemplos em Scholkopf e Smola (2002). No contexto de regressão, K(xa,xb) representa uma maneira de se medir a simi- laridade entre dois vetores de covariáveis xa e xb. A seguinte decomposição de um kernel é essencial para a construção de RKHSs: Teorema 4. [Teorema de Mercer] Todo Kernel de Mercer K pode ser decomposto como K(xa,xb) = ∑ i≥0 γiφi(xa)φi(xb), em que ∑i≥0 γ2 i ∞ e φ0,φ1,... é um conjunto de funções. Um exemplo trivial de aplicação do Teorema de Mercer é dado no início da Seção 4.6: o kernel implícito na regressão ridge: K(x,y) = hxa,xbi = ∑d i=0 xa,ixb,i, o produto interno das covariáveis. Nesse caso, γi = 1 e φi(x) = xi, i = 1,...,d. Dado um kernel K, seu RKHS associado é definido da seguinte maneira: Definição 2. Seja K um kernel, e sejam φi e γi, i ≥ 0, como no Teorema 4. Considere o espaço de funções HK = ( g ∈ L2 (X ) : existem (ci)i≥0 com ∑ i≥1 c2 i γi ∞ tais que g(x) = ∑ i≥1 ciφi(x) ) Dizemos que HK é o Reproducing Kernel Hilbert Space (RKHS) associado ao kernel K, em que a norma de uma função g(x) = ∑i≥0 ciφi(x) é definida por ||g||2 HK := ∑i≥0 c2 i /γi. 65
  • 84.
    4.6. Métodos baseadosem RKHSs A norma ||g||HK captura a suavidade de uma função g. Isso ocorre pois (i) a con- dição ∑i≥0 γ2 i ∞ do Teorema de Mercer implica que γi −→ 0 e (ii) tipicamente as funções φi’s ficam menos suaves à medida que i −→ ∞. Assim, ||g||2 HK := ∑i≥0 c2 i /γi é pequeno quando ci é extremamente pequeno para i grande. De fato, para c2 i /γi ser baixo quando i é grande, ci deve ser extremamente pequeno, pois γi ≈ 0. Embora a decomposição do Teorema 4 em geral não seja única, cada kernel K define um único RKHS, de modo que o espaço da Definição 2 de fato está bem defi- nido: Teorema 5. A um kernel K corresponde um único RKHS HK. 4.6.2 Solução para o problema de otimização O problema de estimação de uma função de regressão via RKHSs consiste em encontrar a solução para uma generalização da Equação 4.5. Mais especificamente, buscamos encontrar arg min g∈HK n ∑ k=1 L(g(xk),yk) + λ||g||2 HK , (4.7) em que HK é um RKHS arbitrário e L(g(xk),yk) é uma função de perda arbitrária, ambos definidos pelo usuário do método. O termo λ é um tuning parameter que determina o balanço entre viés e variância, como no lasso. Note que λ grande leva a funções mais suaves (pois ||g||2 HK é menor), enquanto λ pequeno leva a funções que se ajustam melhor ao conjunto de treinamento. O seguinte teorema, frequentemente atribuído a Kimeldorf e Wahba (1971), é de fundamental importância para resolução do problema de minimização da Equação 4.7: Teorema 6. [Teorema da Representação] Seja K um kernel de Mercer correspondente ao RKHS HK. Considere um conjunto de treinamento (x1,y1),...,(xn,yn) e uma função de perda arbitrária L. Então a solução de arg min g∈HK n ∑ k=1 L(g(xk),yk) + λ||g||2 HK (4.8) existe, é única e tem a forma g(x) = n ∑ k=1 αkK(xk,x). 66
  • 85.
    Capítulo 4. MétodosNão Paramétricos Este resultado converte o problema de busca pelo mínimo na classe HK em um problema de otimização de um número finito de coeficientes α1,...,αn. Esse novo problema de otimização pode ser resolvido usando técnicas usuais de cálculo ou cálculo numérico. O Teorema de Mercer (Teorema 4) também ajuda a simplificar o problema de mi- nimizar a função objetivo, pois mostra que a fórmula para a norma de g do Teorema 6 pode ser simplificada: n ∑ k=1 αkK(xk,x) = n ∑ k=1 αk ∑ i≥0 γiφi(xk)φi(x) = ∑ i≥0 γi n ∑ k=1 αkφi(xk) ! φi(x). Assim, para g(x) = ∑n k=1 αkK(xk,x), temos ||g||2 HK = ∑ i≥0 (γi (∑n k=1 αkφi(xk)))2 γi = ∑ i≥0 γi ∑ 1≤j,k≤n αjαkφi(xj)φi(xk) ! = ∑ 1≤j,k≤n αjαk ∑ i≥0 γiφi(xj)φi(xk) ! = ∑ 1≤j,k≤n αjαkK(xj,xk). (4.9) Essa decomposição facilita o cálculo da solução apresentada pelo Teorema 6: a solu- ção para o problema de otimização sobre funções da Equação 4.8 é dada pela solução do seguinte problema de otimização sobre vetores: arg min α1,...,αn n ∑ k=1 L n ∑ i=1 αiK(xi,x),(xk,yk) ! + λ ∑ 1≤j,k≤n αjαkK(xj,xk). Na sequência, apresentamos alguns exemplos do cálculo desta solução em pro- blemas particulares. 4.6.3 Exemplo 1: Kernel Ridge Regression Quando a função de perda da Equação 4.8 é a perda quadrática, L(g(xk),yi) = (yi − g(xi))2, o estimador obtido minimizando-se a Equação 4.7 é chamado de ker- nel ridge regression. Isso ocorre pois, se HK é o espaço descrito na Equação 4.6 (isto é, K(xi,xj) = hxi,xji), o problema da Equação 4.7 equivale ao problema da regres- são ridge. Assim, para esta função de perda, o resultado é uma generalização da regressão ridge, já que outros kernel’s podem ser usados. 67
  • 86.
    4.6. Métodos baseadosem RKHSs Para esta função de perda, o Teorema da Representação e a Equação 4.9 mostram que a solução de arg min g∈HK n ∑ j=1 (yj − g(xj))2 + λ||g||2 HK é dada por b g(x) = ∑n k=1 b αkK(xk,x), em que b αk’s são obtidos via arg min α1,...,αn n ∑ j=1 yj − n ∑ k=1 αkK(xk,xj) !2 + λ ∑ 1≤j,k≤n αjαkK(xj,xk). Matricialmente, este problema pode ser reescrito como argmin α (y − Kα)| (y − Kα) + λα| Kα, (4.10) em que α = (α1,...,αn)|, y = (y1,...,yn)| e K =       K(x1,x1) K(x1,x2) ··· K(x1,xn) K(x2,x1) K(x2,x2) ··· K(x2,xn) . . . . . . ... . . . K(xn,x1) K(xn,x2) ··· K(xn,xn)       (4.11) (a matriz K é chamada de matriz de Gram). A solução para a Equação 4.10 é dada por b α = (K + λI)−1 y, (4.12) de modo que o estimador dado pela kernel ridge regression é b g(x) = b α| k = y| (K + λI)−1 k, (4.13) com k = (K(x1,x),...,K(xn,x)). 4.6.3.1 Smoothing Splines Quando x ∈ [0,1], um caso particular da kernel ridge regression é o de smoothing splines, em que se busca pela função g que minimiza 68
  • 87.
    Capítulo 4. MétodosNão Paramétricos n ∑ k=1 (yk − g(xk))2 + λ Z 1 0 ||g00 (x)||2 dx. (4.14) O termo R 1 0 ||g00(x)||2dx também é uma forma de se medir o quão suave g é (veja mais sobre isso na Seção 4.13); essa quantidade corresponde à norma de um RKHS específico, veja Nosedal-Sanchez et al. (2012), Pearce e Wand (2006) e Wahba (1990).7 Pode-se mostrar que a solução para esse problema corresponde a uma expansão de g(x) em uma base formada por splines naturais cúbicos com nós no conjunto de treinamento (Wahba, 1990). Contudo, ao contrário da metodologia apresentada na Seção 4.2, aqui os coeficientes da expansão são penalizados de modo a se obter so- luções mais suaves. É justamente por isso que esse método é chamado de smoothing splines. 4.6.3.2 O Truque do Kernel O estimador do kernel ridge regression também pode ser motivado sem a evoca- ção direta de Reproducing Kernel Hilbert Spaces. Para tanto, começamos reescrevendo o estimador dado pela regressão ridge. Vamos assumir que a variável resposta foi redefinida segundo Yi ← Yi − Ȳ, de modo que não colocaremos um intercepto no modelo. Neste caso, a regressão ridge busca por b β = argmin β n ∑ i=1 yi − d ∑ j=1 βjxi,j !2 + λ d ∑ j=1 β2 j , e tem como solução b β = (b β0, b β1,..., b βd) = (X| X + λI)−1 X| Y. Com um pouco de álgebra, pode-se mostrar que b β pode ser escrito como X|(XX| + 7Tecnicamente, neste contexto é necessário uma versão um pouco mais geral do Teorema da Repre- sentação, veja Nosedal-Sanchez et al. (2012) e Wahba (1990). 69
  • 88.
    4.6. Métodos baseadosem RKHSs λI)−1Y, de modo que o estimador da regressão é dado por g(x) = Y| (XX| + λI)−1 Xx = Y| (K + λI)−1 k em que k = (hx1,xi,...,hxn,xi)| e K =       hx1,x1i hx1,x2i ··· hx1,xni hx2,x1i hx2,x2i ··· hx2,xni . . . . . . ... . . . hxn,x1i hxn,x2i ··· hxn,xni       . Assim, para calcular g(x), é suficiente sabermos os produtos internos entre todos os pares de observação, isto é, hxi,xli = ∑d k=1 xi,kxl,k. O truque do kernel se utiliza desse fato para construir estimadores não lineares. Mais especificamente, suponha que estejamos interessados em uma transformação das covariáveis originais, da mesma maneira que discutido na Seção 2.1. Por exemplo, suponhamos que temos duas co- variáveis, (x1,x2), e que queremos estimar uma regressão que não é linear no espaço original, mas sim que tenha a forma g(x) = β0 + β1x1 + β2x2 1 + β3x2 + β4x2 2 + β5x1x2. (4.15) Para isso, podemos usar o estimador da regressão ridge com novas covariáveis w = (1, √ 2x1,x2 1, √ 2x2,x2 2, √ 2x1x2). Como mostrado anteriormente, para calcular este estimador, somente é necessário que saibamos os produtos internos das observações em relação às novas covariáveis, isto é, hwi,wli = 1 + 2xi,1xl,1 + x2 i,1x2 l,1 + 2xi,2xl,2 + x2 i,2x2 l,2 + 2xi,1xi,2xl,1xl,2. (4.16) Mais precisamente, o estimador é dado por b r(x) = Y| (K + λI)−1 k (4.17) 70
  • 89.
    Capítulo 4. MétodosNão Paramétricos em que k = (K(x1,x),...,K(xn,x)), K =       K(x1,x1) K(x1,x2) ··· K(x1,xn) K(x2,x1) K(x2,x2) ··· K(x2,xn) . . . . . . ... . . . K(xn,x1) K(xn,x2) ··· K(xn,xn)       e K(xi,xj) = hwi,wji. Note que podemos calcular w com x, por isso utilizamos a notação K(xi,xj) para representar o produto interno no espaço transformado. O motivo de usarmos a letra K ficará claro na sequência. O truque, chamado de truque do kernel, consiste em notar que, para algumas trans- formações w(x), é possível calcular o produto interno hwi,wli facilmente, em par- ticular não é necessário calcular as novas covariáveis em cada amostra. Isso ocorre na transformação utilizada no exemplo: o produto interno da Equação 4.16 pode ser desenvolvido como K(xi,xl) = hwi,wli = (1 + xi,1xl,1 + xi,2xl,2)2 = (1 + hxi,xli)2 . Assim, para calcular hwi,wli, precisamos apenas saber calcular hxi,xli, isto é, não é necessário que se calcule em nenhum momento wi. Ou seja, é possível calcular um estimador do tipo da Equação 4.15 sem nunca calcular x2 1,x1x2 etc! Para os casos em que d é grande, isso representa uma grande economia de memória e tempo compu- tacional. Por exemplo, se d = 106 e estamos interessados em todos os produtos dois a dois entre as covariáveis, a abordagem ingênua necessitaria de um armazenamento de uma matriz com (1012)/2 colunas, enquanto a Equação 4.17 necessita apenas de uma matriz n × n além da matriz X original. Na prática, para se usar o truque do kernel, começamos especificando direta- mente um kernel K(xi,xj) que corresponde a um produto interno em um espaço transformado. Qualquer kernel de Mercer pode ser utilizado, pois o Teorema de Mercer (Teorema 4) garante que tais kernels correspondem a um produto interno no espaço (potencialmente infinito) dado por ( √ γ1 φ1(x), √ γ2 φ2(x),...). Uma vez que o kernel está escolhido, podemos calcular o estimador da regressão ridge para este kernel. Note que esse truque permite que trabalhemos com a regressão ridge em espaços com infinitas covariáveis, o que não seria possível com a formulação original da re- 71
  • 90.
    4.6. Métodos baseadosem RKHSs gressão ridge. Isto ocorre justamente porque nunca é necessário calcular essas novas covariáveis, mas apenas produtos internos neste espaço. Este é o caso, por exemplo, do kernel gaussiano: a transformação correspondente a ele é de fato infinita. Veja que o estimador da Equação 4.17 – ainda que seja motivado por conside- rações bastante diferentes – é o mesmo que o estimador discutido anteriormente (Equação 4.13). Observação 4.2. Note que o kernel linear K(xi,xj) = hxi,xji corresponde à regressão ridge nas covariáveis originais. Nesse caso, usar a Equação 4.17 ao invés de 3.4 para resolver o problema não é uma vantagem: se n d, ela leva a um tempo computacio- nal maior para implementação, uma vez que é necessário inverter uma matriz n × n ao invés de uma matriz d × d como na formulação original. A grande vantagem dessa abordagem é permitir transformações não lineares possivelmente infinitas. Finalmente, note que o truque do kernel pode ser utilizado em qualquer método que dependa das covariáveis originais através do cálculo produtos internos. Ou seja, sempre que um método de estimação da regressão puder ser calculado sem o conhecimento de x1,...,xn, mas apenas com o conhecimento dos produtos internos entre esses pares, o truque do kernel pode ser utilizado. 4.6.3.3 Implementação eficiente da kernel ridge regression Para implementar a kernel ridge regression é necessário calcular (K + λI)−1 na Equação 4.12. Uma implementação ingênua deste método é computacionalmente lenta, pois é necessário calcular a inversa de K + λI para cada λ de interesse. Uma maneira de torná-la mais rápida é usar a decomposição SVD da matriz K: K = UDU| , em que D é diagonal e UU| = I. Note que essa decomposição não depende de λ. Além disso, (K + λI)−1 = (UDU| + λI)−1 = (U(D + λI)U| )−1 = (U−1 )| (D + λI)−1 U−1 . 72
  • 91.
    Capítulo 4. MétodosNão Paramétricos Logo, para calcular (K + λI)−1, uma vez que a decomposição foi feita, é neces- sário apenas inverter uma matriz diagonal, o que é extramamente rápido. Assim, (K + λI)−1, utilizando-se essa decomposição, pode ser calculado para diversos λ’s eficientemente. 4.6.4 Exemplo 2: Support Vector Regression Machine Para criar estimadores da função de regressão, Support Vector Regression Ma- chines (Drucker et al., 1997) utilizam uma função de perda diferente da quadrática. Mais especificamente, seja e 0 um número fixo e K um kernel de Mercer. A fun- ção de predição g dada pela support vector regression (SVR) é aquela função que minimiza arg min g∈HK n ∑ k=1 L(g(xk),yk) + λ||g||2 HK , (4.18) em que L(g(xk),yk) = (|yk − g(xk)| − e)+. Segundo essa função de perda, a distância entre a predição g(xk) e a observação yk ser menor que e é suficiente para que não haja nenhum custo no erro. Por outro lado, se a distância é maior que e, a perda é dada por |yk − g(xk)| − e. Por esse motivo, essa perda é chamada de e-insensível. Pode-se utilizar o Teorema da Representação (Teorema 6) para simplificar o pro- blema dado pela Equação 4.18 de forma a torná-lo um problema finito-dimensional. Contudo, ao contrário do que ocorre com a kernel ridge regression (Seção 4.6.3), a solução para tal problema não é analítica, e ,portanto, requer o uso de métodos nu- méricos de otimização. Para ajustar a support vector regression machines no R, pode-se utilizar o pacote e1071. ajuste - svm(x = x_treinamento, y = t_treinamento, type = eps-regression, kernel =radial, gamma = gamma) predito - predict(ajuste, newdata = novos_dados) O valor de e pode ser definido pelo usuário do método e é, em geral, escolhido via validação cruzada. 73
  • 92.
    4.7. Modelos Aditivos 4.7Modelos Aditivos Um problema de diversos dos métodos não paramétricos é sua dificuldade de in- terpretabilidade quando comparado com métodos paramétricos. Modelos aditivos (additive models, Hastie e Tibshirani 1986) são uma forma de encontrar um balanço en- tre interpretabilidade e flexibilidade. Eles consistem em uma generalização de uma regressão linear de modo a permitir uma relação não linear entre cada covariável xj e a resposta y. A ideia básica é trocar o termo βjxj na equação da regressão linear (Eq. 2.1) por gj(xj), em que gj(xj) são funções univariadas suaves que são estimadas com base nos dados. Assim, um modelo aditivo pode ser escrito como g(x) = α + d ∑ j=1 gj(xj). Note que este modelo não é identificável, já que podemos adicionar qualquer cons- tante α e retirar a mesma constante de qualquer gj, obtendo assim a mesma solução. Uma forma de evitar isso é restringir que nossos estimadores sejam tais que b α = Y, e forçar ∑n i=1 b gj(Xi,j) = 0. Este modelo é chamado de aditivo pois supõe-se que a fun- ção de regressão pode ser decomposta em termos de uma soma de funções. Assim, esse método impõe uma estrutura mais restritiva do que a observada, por exem- plo, no estimador de Nadaraya-Watson. Sua grande vantagem é que ele leva a uma regressão estimada que é mais fácil de ser interpretada. Modelos aditivos, em geral, são ajustados utilizando-se o algoritmo backfitting: 1. Inicialize b α = Y, e crie estimativas iniciais b g1,..., b gd. 2. Faça, até obter convergência: Para j = 1,...,d (a) Calcule e Yi = Yi − b α − ∑k,j b gk(xi,k) (b) Estime a regressão de (e Yi)i em (xj,i)i, b gj. Aqui pode-se utilizar qualquer método de regressão univariada; paramétrico ou não paramétrico. (c) Defina b gj(x) = b gj(x) − 1 n ∑n i=1 b gj(xi,j) A seguir mostramos um exemplo das vantagens deste método. 74
  • 93.
    Capítulo 4. MétodosNão Paramétricos Exemplo 4.2. Neste exemplo ajustamos um modelo aditivo para dados do Programa das Nações Unidas para o Desenvolvimento sobre o IDH de municípios do Brasil em 1991, 2000 e 2010.8 Cada amostra aqui representa dados sobre um município em um dado ano. A variável resposta utilizada é o IDH de cada município, enquanto as variáveis explicativas são: • O percentual da população de 11 a 13 anos de idade frequentando os anos finais do fundamental ou que já concluiu o fundamental no município, • A renda per capita média do município, • O ano em que os dados foram coletados. Ainda que a última variável mencionada seja categorizada, é possível utilizar método aditivos para esse caso. Para as variáveis contínuas, optou-se por utilizar smoothing splines com 4 graus de liberdade. A Figura 4.5 ilustra as três funções estimadas rj(xj), juntamente com erros pa- drão sobre elas. Com ela, é possível identificar não linearidades nas relações entre as variáveis explicativas e a variável resposta e ter uma visão global de como cada covariável está associada à resposta. Para implementar modelos aditivos, pode-se usar o pacote gam. library(gam) ajuste - gam(resposta ~ s(explicativa_1, 4) + s(explicativa_2, 4), data = dados) A função s() é parte do pacote gam e é aplicada para indicar que a utilização de smoothing splines com 4 graus de liberdade. Predições podem ser feitas com a função predict. 8http://www.atlasbrasil.org.br/. 75
  • 94.
    4.7. Modelos Aditivos Figura4.5: Ajuste dado pelo modelo aditivo para os dados de IDH municipais no Brasil 76
  • 95.
    Capítulo 4. MétodosNão Paramétricos 4.8 Árvores de Regressão Árvores de regressão consistem em uma metodologia não paramétrica que leva a resultados extremamente interpretáveis. Uma árvore é construída por particiona- mentos recursivos no espaço das covariáveis. Cada particionamento recebe o nome de nó e cada resultado final recebe o nome de folha; veja a Figura 4.6. A utilização da árvore para prever uma nova observação é feita do seguinte modo: começando pelo topo, verificamos se a condição descrita no topo (primeiro nó) é satisfeita. Caso seja, seguimos a esquerda. Caso contrário, seguimos a direita. Assim prosseguimos até atingir uma folha. No caso ilustrativo da Figura 4.6, se a condição 1 for satisfeita, a predição é dada por F1. Caso não seja satisfeita, segui- mos a direita e assim, encontramos outra condição. Caso a mesma seja satisfeita, a observação é prevista como F2 e, caso contrário, é prevista como F3. Figura 4.6: Exemplo de estrutura de uma árvore de regressão. A Figura 4.7 ilustra um exemplo concreto de uma árvore de regressão, construída com o objetivo de prever o salário de um indivíduo dadas covariáveis como idade e anos de estudo. Note como é fácil usar este objeto para entender a relação entre as 77
  • 96.
    4.8. Árvores deRegressão variáveis explicativas e a variável resposta, ao contrário do que ocorre com a maior parte dos métodos não paramétricos. Idade 18 anos R$500,00 Anos de estudo 12 R$1.500,00 R$3.000,00 Figura 4.7: Exemplo de árvore da regressão do salário de um indivíduo dadas as covariáveis idade e anos de estudo. Formalmente, uma árvore cria uma partição do espaço das covariáveis em re- giões distintas e disjuntas: R1,...,Rj. A predição para a resposta Y de uma observa- ção com covariáveis x que estão em Rk é dada por g(x) = 1 |{i : xi ∈ Rk}| ∑ i:xi∈Rk yi. (4.19) Isto é, para prever o valor da resposta de x, observamos a região a qual a obser- vação x pertence e, então, calculamos a média dos valores da variável resposta das amostras do conjunto de treinamento pertencentes àquela mesma região. A criação da estrutura de uma árvore de regressão é feita através de duas grandes etapas: (i) a criação de uma árvore completa e complexa e (ii) a poda dessa árvore, com a finalidade de evitar o super ajuste. No passo (i), busca-se criar uma árvore que leve a partições puras, isto é, parti- ções nas quais os valores de Y nas observações do conjunto de treinamento em cada uma das folhas sejam homogêneos. Para tanto, avalia-se o quão razoável uma dada árvore T é através de seu erro quadrático médio, P(T) = ∑ R ∑ i:xi∈R (yi − b yR)2 n , em que b yR é o valor predito para a resposta de uma observação pertencente à região R. Encontrar T que minimize P(T) é computacionalmente inviável. Assim, utiliza- se uma heurística para encontrar uma árvore com erro quadrático médio baixo que 78
  • 97.
    Capítulo 4. MétodosNão Paramétricos consiste na criação de divisões binárias recursivas, como mostrado na Figura 4.8. Ini- cialmente, o algoritmo particiona o espaço de covariáveis em duas regiões distintas (Figura 4.8 (a)). Para escolher essa partição, busca-se, dentre todas as covariáveis xi e cortes t1, aquela combinação que leva a uma partição (R1,R2) com predições de menor erro quadrático: n ∑ i:xi∈R1 (yi − b yR1 )2 + n ∑ i:xi∈R2 (yi − b yR2 )2 , (4.20) em que b yRk é a predição fornecida para a região Rk (veja Eq. 4.19). Assim, define-se R1 = {x : xi t1} e R2 = {x : xi ≥ t1}, em que xi é a variavel escolhida e t1 é o corte definido. Uma vez estabelecidas tais regiões, o nó inicial da árvore é então fixado. No próximo passo busca-se particionar R1 ou R2 em regiões menores (Figura 4.8 (b)). Para escolher a nova divisão, a mesma estratégia é utilizada: busca-se, dentre todas as covariáveis xi e cortes t2, aquela combinação que leva a uma partição com menor erro quadrático. Note que agora também é necessário escolher qual região deve ser particionada: R1 ou R2. Assuma que R1 foi a região escolhida, juntamente com a covariável xj e o corte t2. Chamemos a partição de R1 de {R1,1,R1,2}, como mostra a Figura 4.8 (b). Assim, R1,1 = {x : xi t1,xj t2}, R1,2 = {x : xi t1,xj ≥ t2} e R2 = {x : xi ≥ t1}. O procedimento continua recursivamente (veja Figuras 4.8 (c) e (d)), até que che- guemos a uma árvore com poucas observações em cada uma das folhas (por exem- plo, o processo é interrompido quando todas as folhas têm menos de cinco observa- ções). A árvore criada utilizando-se esse processo produz bons resultados para o con- junto de treinamento, mas é muito provável que ocorra o super-ajuste. Isso gera uma performance preditiva ruim em novas observações. Assim, prossegue-se para o passo (ii), que é chamado de poda. O objetivo dessa etapa é tornar a árvore de re- gressão menor e menos complexa, de modo a diminuir a variância desse estimador. Nessa etapa do processo cada nó é retirado, um por vez, e observa-se como o erro de predição varia no conjunto de validação. Com base nisso, decide-se quais nós 79
  • 98.
    4.8. Árvores deRegressão permanecerão na árvore. Condição (i) R1 R2 (a) Condição (i) Condição (ii) R1,1 R1,2 R2 (b) Condição (i) Condição (ii) R1,1 R1,2 Condição (iii) R2,1 R2,2 (c) Condição (i) Condição (ii) Condição (iv) R1,1,1 R1,1,2 R1,2 Condição (iii) R2,1 R2,2 (d) Figura 4.8: Processo de crescimento de uma árvore de regressão. Para ajustar uma árvore no R, pode-se utilizar o pacote rpart. O pacote rpart.plot é utilizado para produzir visualizações das árvores de regressão definidas. 80
  • 99.
    Capítulo 4. MétodosNão Paramétricos library(rpart); library(rpart.plot); data(mtcars) fit - rpart(mpg ~ ., method = anova, data = mtcars) melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]), CP] pfit - rpart::prune(fit, cp = melhor_cp) rpart.plot(pfit, type = 4, extra = 1) A Figura 4.9 ilustra a árvore gerada pelo código acima no R. O tamanho de cada ramo na árvore gerada pode ser definido proporcionalmente à diminuição do erro quadrático médio que ocorreu quando a respectiva partição foi criada. Assim, ra- mos grandes indicam uma importância maior da covariável na predição da variável resposta. Figura 4.9: Árvore de regressão já podada. Além de serem facilmente interpretáveis, árvores têm a vantagem de lidar tri- vialmente com covariáveis discretas. Por exemplo, se X1 representa a cor de uma 81
  • 100.
    4.9. Bagging eFlorestas Aleatórias flor, pode-se utilizar critérios de divisão como X1 ∈ {verde,vermelho} nos nós da árvore gerada. É importante ressaltar que isso não acontece quando se cria variáveis dummies para variáveis qualitativas. Além disso, a maneira como árvores são cons- truídas faz com que covariáveis irrelevantes sejam descartadas. Assim, a seleção de variáveis é feita automaticamente. Finalmente, note que a estrutra de uma árvore naturalmente lida com interações entre variáveis. Assim, ao contrário de modelos lineares, não é necessário incluir termos de interação adicionais. Na próxima seção serão apresentados métodos para combinar diversas árvores para melhorar o desempenho preditivo desse modelo. 4.9 Bagging e Florestas Aleatórias A forest of these trees is a spectacle too much for one man to see. David Douglas Uma característica interessante das árvores de regressão é que são extremamente interpretáveis. No entanto, costumam apresentar baixo poder preditivo quando comparadas aos demais estimadores. Bagging e florestas aleatórias (Breiman, 2001b) são métodos que contornam essa limitação combinando diversas árvores para fazer uma predição para um mesmo problema. Para motivar esta abordagem, imagine que, em um contexto de regressão, temos duas funções de predição para Y, g1(x) e g2(x). Os riscos dessas (condicionais em x, mas não na amostra de treinamento) são dados, respectivamente, por E h (Y − g1(x))2 |x i e E h (Y − g2(x))2 |x i . Considere agora o estimador combinado g(x) = (g1(x) + g2(x))/2. Pelo resul- tado da Seção 1.5.2, temos que E h (Y − g(x))2 |x i = = V[Y|x] + 1 4 (V[g1(x) + g2(x)|x]) + E[Y|x] − E[g1(x)|x] + E[g2(x)|x] 2 2 . Assim, se g1(x) e g2(x) são não correlacionados (Cor(g1(x),g2(x)|x) = 0), não 82
  • 101.
    Capítulo 4. MétodosNão Paramétricos viesados (E[g1(x)|x] = E[g2(x)|x] = r(x)) e têm mesma variância (V[g1(x)|x] = V[g2(x)|x]), E h (Y − g(x))2 |x i = V[Y|x] + 1 2 V[gi(x)|x] ≤ E h (Y − gi(x))2 |x i (4.21) com i = 1,2. Assim, é melhor se utilizar o estimador combinado g(x) do que usar g1(x) ou g2(x) separadamente. Embora se considere apenas dois estimadores da fun- ção de regressão nesse exemplo, a conclusão permanece válida quando se combina um número B qualquer de estimadores. Os métodos de bagging e florestas aleatórias se valem dessa ideia para melhorar as predições dadas por árvores. Ambas as abordagens consistem em criar B árvores distintas e combinar seus resultados para melhorar o poder preditivo em relação a uma árvore individual. Para criar as B árvores distintas, o bagging utiliza B amostras bootstrap da amostra original9. Para cada uma dessas amostras, cria-se uma árvore utilizando as técnicas descritas na Seção 4.8. Note, contudo, que assumimos na de- rivação da Equação 4.21 que os estimadores são não viesados. Assim, para criar ár- vores próximas de não-viesadas, não podamos as árvores criadas, isto é, utilizamos apenas o passo (i) descrito naquela seção. Seja gb(x) a função de predição obtida segundo a b-ésima árvore. A função de predição dada pelo bagging é dada por g(x) = 1 B B ∑ b=1 gb(x). Apesar do método bagging retornar preditores que não são tão fáceis de se in- terpretar quanto árvores, ele permite a criação de uma medida de importância para cada covariável. Essa medida de importância é baseada na redução da soma de qua- drados dos resíduos (RSS - residual sum of squares) de cada divisão. Para ilustrar o cálculo dessa quantidade, considere a situação da Figura 4.10, na qual dividimos o nó pai em dois grupos: esq (esquerda) e dir (direita). A redução no RSS pela variável utilizada é dada por 9Uma amostra bootstrap é uma amostra aleatória com reposição de mesmo tamanho da amostra original. 83
  • 102.
    4.9. Bagging eFlorestas Aleatórias RSSpai − RSSesq − RSSdir = ∑ i∈pai yi − ypai 2 − ∑ i∈esq yi − yesq 2 − ∑ i∈dir (yi − ydir)2 . pai esq dir Figura 4.10: Divisão de uma árvore usada para a ilustração do cálculo do RSS. Para calcular a medida de importância de uma variável, primeiramente calcula- se o total da redução da soma de quadrados dos resíduos (RSS - residual sum of squa- res) para todas as divisões que foram feitas com base nessa variável. Repete-se esse processo para todas as árvores e calcula-se a média dessa redução. Essa redução média é então utilizada como medida de importância para cada variável. A Figura 4.11 ilustra a importância de cada covariável segundo dois critérios para o conjunto CO2 do R (veja exemplo na seção 4.9.1). Essa figura foi obtida com auxílio da função varImpPlot do pacote randomForest do R. Figura 4.11: Importância da cada covariável do conjunto de dados CO2 na predição da variável uptake segundo o bagging. 84
  • 103.
    Capítulo 4. MétodosNão Paramétricos 4.9.1 Florestas Aleatórias And into the forest I go, to lose my mind and find my soul. John Muir Na Equação 4.21, além da suposição de que os estimadores são não viesados, assumimos que são não correlacionados. Em geral, mesmo utilizando amostras bo- otstrap para construir cada uma das árvores, as árvores construídas tendem a dar predições parecidas. Assim, as funções gb(x) resultantes, em geral, apresentam alta correlação. Florestas tentam diminuir esta correlação modificando o mecanismo de criação das árvores para que essas se tornem diferentes umas das outras. Mais es- pecificamente, ao invés de escolher qual das d covariáveis será utilizada em cada um dos nós da árvore, em cada passo só é permitido que seja escolhida uma den- tre as m d covariáveis. Estas m covariáveis são escolhidas aleatoriamente dentre as covariáveis originais e, a cada nó criado, um novo subconjunto de covariáveis é sorteado. O valor de m pode ser escolhido via validação cruzada. Resultados empíricos sugerem, de forma geral, que m ≈ d/3 leva a uma boa performance. Note que, quando m = d, o método de florestas aleatórias se reduz ao bagging. Esse método poder ser ajustado com o pacote randomForest da seguinte forma: library(randomForest) data(CO2) ajuste - randomForest(uptake ~ ., mtry = round(ncol(CO2)/3), importance = TRUE, data = CO2) varImpPlot(ajuste) # gráfico de importância Esse método também pode ser utilizado com o pacote ranger, que é um pacote que apresenta uma boa performance computacional quando há um grande número de observações. A Figura 4.12 ilustra o comportamento do risco preditivo em função de B, o nú- mero de árvores utilizadas, no conjunto de dados do CO2. A curva é bastante estável. 85
  • 104.
    4.9. Bagging eFlorestas Aleatórias Em particular, não ocorre superajuste quando B cresce. Assim, de forma geral, fazer uma validação cruzada para escolher B não traz grandes ganhos (em contraste com o que ocorre com tuning parameters de outros métodos). Essa robustez do desempenho de florestas aleatórias à escolha de B é uma grande vantagem deste método. Figura 4.12: Comportamento do risco preditivo em função de B, o número de árvores utilizadas, no exemplo do CO2. Florestas possuem um poder preditivo em geral muito maior que o de árvores. Para ilustrar essa diferença, aplicaremos ambos os métodos para o conjunto de dados simulados da Figura 4.13. Figura 4.13: Dados simulados da regressão em vermelho. 86
  • 105.
    Capítulo 4. MétodosNão Paramétricos A árvore e a floresta ajustadas para esses dados encontram-se na Figura 4.14. Note como o ajuste obtido com floresta aleatória é mais suave que o ajuste obtido com a árvore de regressão. Em particular, ele se aproxima melhor da regressão real. Também é interessante notar que as árvores utilizadas para construir a floresta (em azul) têm características muito distintas daquela usada individualmente. Isso ocorre pois essa última é podada. Figura 4.14: Exemplo de ajustes de árvore de regressão e floresta aleatória. A Figura 4.15 ilustra árvores e florestas ajustadas a diferentes conjuntos de dados 87
  • 106.
    4.9. Bagging eFlorestas Aleatórias vindos da mesma população que aqueles da Figura 4.13. Fica claro que árvores de regressão possuem uma variabilidade muito maior que florestas aleatórias. Isso é uma das razões que leva esse método a apresentadar um desempenho inferior em relação à floresta aleatória. Figura 4.15: Ajustes de árvore de regressão e florestas aleatórias para diferentes con- juntos de dados vindo da mesma função de regressão. 88
  • 107.
    Capítulo 4. MétodosNão Paramétricos 4.10 Boosting Assim como florestas aleatórias e o bagging, o boosting também consiste na agre- gação de diferentes estimadores da função de regressão. Contudo, esta combinação é feita de outra forma. Existem diversas variações e implementações de boosting. Abordaremos aqui a forma mais usual. No boosting, o estimador g(x) é construído incrementalmente. Inicialmente, atri- buímos o valor de g(x) ≡ 0. Este estimador possui alto viés, mas baixa variância (a saber, zero). A cada passo, atualizaremos o valor de g de modo a diminuir o viés e aumentar a variância da nova função. Isto é feito adicionando-se a g uma função que prevê os resíduos ri = Yi − g(xi). Uma forma de se fazer isso é com a utiliza- ção de uma árvore de regressão. É importante que essa árvore tenha profundidade pequena de modo a evitar o super-ajuste. Além disso, ao invés de simplesmente adicionar essa função por completo, adicionamos ela multiplicada por λ (chamado de learning rate), um fator entre 0 e 1 que tem por finalidade evitar o super-ajuste. Formalmente, essa versão de boosting consiste no seguinte algoritmo: 1. Definimos g(x) ≡ 0 e ri = yi ∀i = 1,...,n. 2. Para b = 1,...,B: (a) Ajustamos uma árvore com p folhas para (x1,r1),...,(xn,rn). Seja gb(x) sua respectiva função de predição. (b) Atualizamos g e os resíduos: g(x) ← g(x) + λgb(x) e ri ← Yi − g(x). 3. Retornamos o modelo final g(x) Assim, os tuning parameters do boosting são B, p e λ. Tipicamente λ é pequeno (por exemplo, 0,01), B ≈ 1000 e p é da ordem de 2 ou 4. Para ilustrar o impacto dos hiperparâmetros desse algoritmo, considere nova- mente os dados apresentados na Figura 4.13. A Figura 4.16 mostra as regressões es- timadas com um boosting composto por 100 árvores com apenas uma divisão cada (o que é chamado de stump). Cada painel ilustra o ajuste para um taxa de aprendiza- gem λ em {0.001,0.01,0.1,0.2,0.5,1}. Note que λ grande leva a superajuste, enquanto que λ pequeno leva a subajuste. 89
  • 108.
    4.10. Boosting Figura 4.16:Aplicação de diversos valores de λ para boosting. O boosting não necessariamente é feito com árvores, mas em geral são utilizados estimadores fracos (como, por exemplo, uma regressão com poucos parâmetros). No R, o boosting pode ser implementando com o pacote bst. A Figura 4.17 ilustra como o risco estimado varia conforme o valor de B (número de iterações) utilizado. Em geral, B é escolhido via early stopping, isto é, pára-se de adicionar iterações que o risco estimado do método em um conjunto de validação começa a aumentar. library(bst) ajuste - cv.bst(x = x_treinamento, y = y_treinamento, learner = tree, control.tree = list(maxdepth = 3), ctrl = bst_control(mstop = 10000, nu = 0.02), K = 2, se = FALSE) 90
  • 109.
    Capítulo 4. MétodosNão Paramétricos predito - predict(ajuste, x_teste) Figura 4.17: Diminuição do risco estimado por validação cruzada para a função de regressão segundo o número de iterações do algoritmo boosting. Existem diferentes implementações e variações de boosting. Uma particular que vem ganhando bastante popularidade por seu ótimo desempenho é o XGBoost (Chen e Guestrin, 2016), que no R é implementando pelo pacote xgboost; veja o Exemplo 4.4 para mais detalhes. 4.11 Redes Neurais Artificiais A man should look for what is, and not for what he thinks should be. Albert Einstein Redes neurais artificiais são um conceito bastante antigo em inteligência artifi- cial (McCulloch e Pitts, 1943; Rosenblatt, 1958). Matematicamente, no contexto de regressão, trata-se de um estimador não linear de r(x) que pode ser representado graficamente por uma estrutura como a da Figura 4.18. 91
  • 110.
    4.11. Redes NeuraisArtificiais x1 x2 x3 x1 1 x1 2 x1 3 x1 4 x1 5 x2 1 gβ(x) Camada Oculta Camada de entrada Camada de saída Figura 4.18: Exemplo de rede neural com uma camada oculta. Os nós do lado esquerdo da figura representam as entradas da rede, isto é, cada uma das covariáveis do banco de dados (neste caso, há três delas). Os nós da se- gunda camada são os chamados de nós da camada oculta da rede. Cada flecha repre- senta um peso (parâmetro) β. Cada nó nessa camada representa uma transformação dos nós das variáveis da camada anterior. Para o caso dessa rede, se x = (x1,x2,x3) é o vetor de entrada, então um dado neurônio j da camada oculta é calculado como x1 j := f β0 0,j + 3 ∑ i=1 β0 i,jx0 i ! em que x0 i = xi para i = 1,2,3, em que f é uma função definida pelo usuário, chamada de função de ativação. O índice superescrito nessa equação denota a camada da rede. Calculados os valores de x1 j para todo neurônio j da camada oculta, pode-se então calcular a saída do modelo. Para esse exemplo, essa saída é dada por x2 1 := f β1 0,j + 5 ∑ i=1 β1 i,1x1 i ! =: gβ(x). Esse procedimento é representado com mais detalhes na Figura 4.19. 92
  • 111.
    Capítulo 4. MétodosNão Paramétricos xl 2 βl 2,1 Σ f Função de ativação xl+1 1 Saída xl 1 βl 1,1 xl 3 βl 3,1 Pesos Intercepto βl 0,1 Entradas (camada l) Figura 4.19: Exemplo do processamento que ocorre dentro de um neurônio situado na camada l + 1. A saída xl+1 1 é dada por f (βl 0,j + ∑3 i=1 βl i,1xl i). Algumas escolhas comuns para a função de ativação são: • identidade: f (z) = z • logística: f (z) = 1 1+e−z • tangente hiperbólica: f (z) = ez−e−z ez+e−z • ReLu(rectified linear): f (z) = max{0,z} • Leaky ReLu: f (z) =    0.01z se z 0 z se z ≥ 0 De forma geral, uma rede neural pode ter várias camadas ocultas e um número diferente de neurônios em cada camada. Essas são escolhas feitas pelo usuário. A Figura 4.20 apresenta o esquema de uma rede neural com quatro camadas ocultas com seis neurônios cada. 93
  • 112.
    4.11. Redes NeuraisArtificiais x1 x2 x3 Camada Oculta 1 Camada Oculta 2 Camada Oculta 3 Camada Oculta 4 y1 Camada de entrada Camada de saída Figura 4.20: Exemplo de uma rede neural feed forward. A propagação das covariáveis de entrada na rede neural é feita sequencialmente nessas camadas. Considere uma rede com H camadas ocultas, cada uma com dh neurônios (h = 1,..., H), seja βl i,j o peso atribuído à conexão entre a entrada i na camada l e a saída j na camada l + 1, l = 0,..., H. Aqui h = 0 denota a camada de entrada, e H + 1 a camada de saída. O estimador de uma rede neural artificial para a função de regressão tem a forma g(x) = xH+1 1 = f βH 0,1 + dH ∑ i=1 βH i,1xH i ! (4.22) em que, para todo l = 1,..., H e j = 1,...,dl+1, xl+1 j = f βl 0,j + dl ∑ i=1 βl i,jxl i ! . É interessante notar que, se f (z) = z e não há nenhuma camada oculta, uma rede neural representa uma regressão linear usual. Uma outra forma de se representar uma rede neural se dá via notação matricial. Para l = 0,..., H, seja Hl =     βl 0,1 βl 1,1 ... βl dl,1 . . . . . . ... . . . βl 0,dl+1 βl 1,dl+1 ... βl dl,dl+1    . Nesse caso, d0 = d é o número de neurônios na camada de entrada e dH+1 é o 94
  • 113.
    Capítulo 4. MétodosNão Paramétricos número de neurônios na camada de saída. O estimador da Equação 4.22 pode ser escrito como a seguinte composição de funções: g(x) = f HH ... ˜ f H1 ˜ f (H0x̃) ... , em que x̃ = (1,x) e ˜ f (y) = (1, f (y)). A estrutura de redes neurais aqui apresentada pode ser bastante generalizada. Por exemplo, cada função f aplicada em cada camada pode ser diferente. Além disso, a saída da rede não precisa ser um único número real. Redes neurais também permitem estruturas mais complexas como retroalimentação (saídas de neurônios que voltam para entradas de camadas anteriores) e outros. Para uma análise mais aprofundada, veja Goodfellow et al. (2016). 4.11.1 Estimação: Backpropagation Para estimar os coeficientes βl i,j na Equação 4.22, deve-se especificar uma função objetivo a ser minimizada. No caso de regressão linear, utiliza-se, em geral, o erro quadrático médio, EQM(gβ) = 1 n n ∑ k=1 (gβ(xk) − yk)2 , em que a notação gβ é usada para enfatizar a dependência de g em seus parâmetros β. Pode-se também introduzir uma penalização a esse objetivo. O vetor β que minimiza o EQM(gβ) não possui solução analítica. Contudo, pode-se utilizar métodos numéricos para aproximá-lo. Um método que tem se des- tacado no contexto de redes neurais é o backpropagation, que nada mais é do que um método de gradiente descendente executado em uma ordem específica: primeiro atualizam-se os coeficientes da última camada, depois se atualizam os coeficientes da camada anterior a essa e assim por diante (por isso o nome backpropagation). Mais especificamente, cada passo do backpropagation consiste em fazer, para l = H,...,0, a seguinte atualização: βl i,j ← βl i,j − η ∂EQM(gβ) ∂βl i,j , comj = 1,...,dl+1 e i = 0,...,dl. O truque é que ∂EQM(gβ) ∂βl i,j depende apenas dos valores dos coeficientes das cama- 95
  • 114.
    4.11. Redes NeuraisArtificiais das posteriores (isto é, βl0 i,j para l0 ≥ l) e é simples de ser calculado. Por exemplo, para uma função de ativação f (z) = z na camada de saída e j 0, ∂EQM(gβ) ∂βH j,1 = ∂ ∂βH j,1 1 n n ∑ k=1 (βH 0,1 + dH ∑ i=1 βH i,1xH k,i − yk)2 # = = 2 n n ∑ k=1 (βH 0,1 + dH ∑ i=1 βH i,1xH k,i − yk)xj,1. Para mais detalhes sobre o backpropagation veja, por exemplo, Rojas (2013). 4.11.2 Deep Learning Na última década, redes neurais ressurgiram como uma área ativa dentro da co- munidade de aprendizado de máquina. Um dos principais fatores que promoveram esse ressurgimento foi o desenvovimento tecnológico computacional, que tornou o processo em paralelo (em particular em GPUs) barato e acessível. O método do backpropagation foi adaptado para se aproveitar dessa tecnologia através do gradi- ente descendente estocástico. Diversas variações e melhorias, tanto no processo de estimação de uma rede quanto na definição de sua arquitetura, vêm sendo desenvol- vidas nos últimos anos. Para uma revisão abrangente dessa área, veja Goodfellow et al. (2016). O pacote keras, utilizando diversas ferramentas desenvolvidas para deep lear- ning, implementa redes neurais no R. A seguir apresentamos um exemplo. Exemplo 4.3 (Bike sharing). Neste exemplo consideramos o conjunto de dados bike sharing (http://archive.ics.uci.edu/ml/datasets/bike+sharing+dataset). Nesse con- junto são indicadas as quantidades de bicicletas que foram emprestadas em algu- mas centrais a cada hora. A Figura 4.21 mostra como o risco estimado no conjunto de treinamento e de validação variam conforme o número de iterações do gradiente descendente estocástico cresce. library(rsample) library(keras) dados - read_csv(../dados/hour.csv) 96
  • 115.
    Capítulo 4. MétodosNão Paramétricos dados - dados %% select(-instant, -dteday, -yr, -mnth, -casual, -registered) %% mutate_at(vars(season, holiday, weekday, workingday), as.character) dados - data.frame(model.matrix(cnt ~ . -1, dados), cnt = dados$cnt) %% mutate_at(vars(season1:windspeed), scale) set.seed(400) split - initial_split(dados, prop = 0.8) treinamento - training(split) teste - testing(split) x_treino - select(treinamento, -cnt) %% as.matrix() y_treino - treinamento$cnt x_teste - select(teste, -cnt) %% as.matrix() y_teste - teste$cnt # especificação do modelo (uma rede feedforward com # duas camadas ocultas com 8 neuronios cada) modelo - keras_model_sequential() %% layer_dense(units = 8, activation = relu, input_shape = ncol(x_treino)) %% layer_dense(units = 8, activation = relu) %% layer_dense(units = 1) # especificação da função objetivo e como ela será minimizada modelo %% compile( loss = mse, 97
  • 116.
    4.11. Redes NeuraisArtificiais optimizer = optimizer_rmsprop(), metrics = list(mean_absolute_error) ) historico - modelo %% fit( x_treino, y_treino, epochs = 1200, validation_split = 0.2, verbose = FALSE ) A seguir, apresentamos os riscos estimados nos conjuntos de treinamento e vali- dação de acordo com o número de iterações. plot(historico, metrics = loss) + theme_bw() + theme(legend.position = top) Figura 4.21: Risco estimado no conjunto de treinamento e no conjunto de validação. 98
  • 117.
    Capítulo 4. MétodosNão Paramétricos # valor predito no conjunto de teste predito - modelo %% predict(x_teste) 4.12 Exemplo Exemplo 4.4 (Amazon Fine Food Reviews). Nesse exemplo retomamos o problema de fazer predições de notas dadas em resenhas da Amazon com base no conteúdo (texto) da resenha (Exemplo 3.3). Dessa vez ajustaremos alguns métodos não para- métricos. Como alguns dos pacotes do R não permitem tabalhar com matrizes esparsas, converteremos o objeto dtmMatrix em uma matriz não esparsa: dtmMatrix_non_sparse - as.matrix(dtmMatrix) A seguir, apresentamos os código para os métodos não paramétricos considera- dos. # KNN k_grid - round(seq(1, 100, length.out = 20)) error - vector(numeric, length(k_grid)) for (i in seq_along(k_grid)) { fit - FNN::knn.reg(train = dtmMatrix_non_sparse[tr,], y = dados$Score[tr], k = k_grid[i]) error[i] - mean((fit$pred - dados$Score[tr])^2) } pred_knn - FNN::knn.reg(train = dtmMatrix_non_sparse[tr,], 99
  • 118.
    4.12. Exemplo y =dados$Score[tr], test = dtmMatrix_non_sparse[-tr,], k = k_grid[which.min(error)])$pred # XGBoost xgb_model - xgb.train(data = xgb.DMatrix( dtmMatrix[tr,], label = dados$Score[tr]), nrounds = 50) pred_xgboost - predict(xgb_model, dtmMatrix[-tr,]) # Tree fit - rpart(dados$Score[tr] ~ dtmMatrix_non_sparse[tr,], method = anova) melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]), CP] pfit - rpart::prune(fit, cp = melhor_cp) pred_arvore - predict(pfit, as.data.frame(dtmMatrix_non_sparse[-tr,])) Comparando os erros quadráticos médios (Tabela 4.1), notamos que o XGBoost apresentou o melhor desempenho preditivo, comparável ao do lasso e da regressão ridge (Tabela 3.6). Note que o XGBoost possui diversos tuning parameters que podem ser ajustados para levar a um desempenho melhor. Em particular, recomendamos usar early stopping no treinamento. Como esperado, a performance preditiva da ár- vore foi inferior à dos demais métodos. O KNN também apresentou um desempe- nho ruim. O motivo disso é que, nesse exemplo, várias covariáveis são irrelevantes (ou seja, não estão associadas à nota dada pelo usuário) e o KNN não faz seleção de variáveis. Assim, todas elas têm o mesmo papel no classificador, enquanto todos os outros métodos fazem algum tipo de seleção. Voltaremos a esse assunto sob uma perspectiva teórica no Capítulo 5. 100
  • 119.
    Capítulo 4. MétodosNão Paramétricos Uma vantagem das implementações do XGBoost e do Lasso no R é que elas per- mitem trabalhar com matrizes esparsas e são computacionalmente rápidas. Isso per- mite que apliquemos uma versão desses métodos em um conjunto de treinamento maior (n = 400,000). Fazendo isso, o XGBoost consegue obter um erro menor que o dos demais métodos (Tabela 4.2). Note que o ganho do XGBoost, ao se aumentar o tamanho do conjunto de treinamento, é muito maior que o do lasso. De fato, en- quanto para um n pequeno ambos têm um desempenho parecido, para n grande o XGBoost é substancialmente maior. Isso ocorre porque o lasso é um método paramé- trico. Assim, com um n não tão grande já se extrai o máximo que ele pode oferecer (ou seja, ele já está próximo ao oráculo linear). Por outro lado, um método não para- métrico como o XGBoost é muito mais flexível e, portanto, se beneficía mais de uma amostra maior. Tabela 4.1: Desempenho preditivo (erro quadrático médio e seu erro padrão) em relação ao conjunto de validação dos modelos KNN, XGBoost e árvores. Modelo EQM EP KNN 1.541 0.029 XGBoost 1.117 0.021 Árvore 1.911 0.031 Tabela 4.2: Desempenho preditivo (erro quadrático médio e seu erro padrão) em relação ao conjunto de validação dos modelos XGBoost e Lasso para um conjunto de treinamento maior. Modelo EQM EP XGBoost Large 0.783 0.015 Lasso Large 0.948 0.018 101
  • 120.
    4.13. Um Poucode Teoria 4.13 Um Pouco de Teoria Experience without theory is blind, but theory without experience is mere intellectual play. Immanuel Kant Uma maneira de estudar o desempenho de um método é avaliando sua (taxa de) convergência. Em particular, pode-se verificar sob quais circunstâncias um dado es- timador converge. Com a finalidade de ilustrar como isso pode ser feito no contexto não paramétrico, investigaremos dois métodos: os k-vizinhos mais próximos (Seção 4.13.1) e séries ortogonais (Seção 4.13.2). Para estudar a taxa de convergência de um estimador não-paramétrico, é neces- sário assumir que a função de regressão r(x) real é suave; caso contrário ela pode ser extremamente difícil de ser estimada. Existem várias medidas de suavidade (Tsy- bakov, 2008); utilizaremos aqui duas noções, uma para cada uma das análises que seguem. 4.13.1 k-vizinhos Mais Próximos Para analisar o método KNN, utilizarmos o conceito de funções Lipschitz para capturar a suavidade da função de regressão. Mais especificamente, iremos assumir que a regressão real r é L-Lipschitz, isto é, assumiremos que existe L tal que, para todo x,x0 ∈ Rd, |r(x) − r(x0 )| ≤ L||x − x0 ||2. Iniciamos com o seguinte resultado, que decorre do Lema 6.4 e do Teorema 6.2 de Györfi et al. (2006). Lema 1. Se X é limitado e d ≥ 3, então E   1 k ∑ i∈Nx ||Xi − X||2 !2   ≤ C k n 2/d . Essencialmente, o Lema 1 indica como a distância média entre as k observações mais próximas a X é limitada pelo tamanho amostral. 102
  • 121.
    Capítulo 4. MétodosNão Paramétricos Teorema 7. Seja b rk(X) o estimador da Equação 4.2. Sob as suposições do Lema 1 e se supx E[Y|x] := σ2 ∞ e r é L-Lipschitz, então E[(b rk(X) − r(X))2 ] ≤ K k n 2/d + σ2 k , em que K não depende de k nem n. Assim, se tomamos k n 2 2+d , obtemos E[(b rk(X) − r(X))2 ] ≤ K0 n− 2 2+d Demonstração. Seja x̃ = (x1,...,xn,x). Pela decomposição viés-variância (Seção 1.5.2), temos que E[(b rk(x) − r(x))2
  • 123.
    x̃] = (E[b rk(x)|x̃]− r(x))2 + E[(b rk(x) − E[(b rk(x)|x̃])2 |x̃] = E 1 k ∑ i∈Nx Yi|x̃ # − r(x) !2 + V[b rk(x)|x̃] ≤ 1 k ∑ i∈Nx r(xi) − r(x) !2 + σ2 k ≤ L k ∑ i∈Nx ||xi − x||2 !2 + σ2 k , em que a última desigualdade decorre do fato de r ser L-Lipschitz. Assim, pela lei da esperança total e Lema 1, segue que E[(b rk(X) − r(X))2 ] = E[E[(b rk(X) − r(X))2 |X̃]] ≤ E   L k ∑ i∈NX ||Xi − X||2 !2   + σ2 k ≤ C0 k n 2/d + σ2 k . Note que o Teorema 7 indica que, quando k é grande, o termo associado ao viés do estimador dado pelo KNN (isto é, C0 (k/n)2/d ) é alto, enquanto o termo associado à sua variância (isto é, σ2/k) é baixo. Para se ter um bom equilíbrio entre esses ter- mos, deve-se tomar k n 2 2+d . Discutiremos essa taxa de convergência mais a fundo na Seção 5.1; em particular argumentaremos que o limitante superior mostrado no Teorema 7 não pode ser melhorado, isto é, não se pode encontrar um limitante supe- 103
  • 124.
    4.13. Um Poucode Teoria rior menor que o encontrado. 4.13.2 Séries Ortogonais Nessa subseção iremos derivar taxas de convergência para o método de séries ortogonais. Nos restringiremos ao caso em que X ∈ [0,1] e tem densidade uniforme neste intervalo. Novamente, para estudar a convergência do estimador, iremos tam- bém supor que a função de regressão r(x) real é suave. No entanto, utilizaremos o conceito de derivadas para definir suavidade, uma vez que essas medem mudanças bruscas de r(x) como função de x. Diremos que r(x) é suave se r(x) ∈ L2([0,1]) e Z 1 0 (Dm r(x))2 dx ≤ K1. Quanto maior m, mais suave r é. Este conceito de suavidade está ligado a espaços de Sobolev, veja Wasserman (2006). Um resultado fundamental mostra que, se r(x) é suave, usar apenas os primei- ros termos da expansão ∑j∈N βjψj(x) é suficiente para aproximar r(x) bem. Isso é formalmente descrito no lema a seguir. Lema 2. Se r(x) ∈ L2([0,1]) é tal que R 1 0 (Dmr(x))2dx ≤ K1, então Z 1 0 J ∑ j=0 βjψj(x) − r(x) !2 dx = ∑ j≥J+1 β2 j ≤ K1 J2m , em que βj’s são os coeficientes de expansão de r(x) na base de Fourier (ψj)j≥0. Note que, quanto maior m (a suavidade de r), menor o erro em se utilizar J ter- mos para aproximar r(x). É exatamente por isso que o método de séries ortogonais funciona bem: quando r é suave, um truncamento do tipo usado na Equação 4.1 leva a um viés baixo. O resultado a seguir combina o viés obtido no Lemma 2 com a variância do esti- mador de modo a obter a taxa de convergência do método de séries ortogonais. Teorema 8. Seja b rJ(x) o estimador da Equação 4.1 com base na série de Fourier. Se r ∈ L2([0,1]) é tal que R 1 0 (Dmr(x))2dx ≤ K1 e V[Y] ∞, então o risco desse estimador satisfaz E[(b rJ(X) − r(X))2 ] ≤ K1 1 J2m + K2 J n , 104
  • 125.
    Capítulo 4. MétodosNão Paramétricos em que K2 não depende de J nem n. Assim, se tomarmos J = Cn 1 2m+1 , teremos E[(b rJ(X) − r(X))2 ] ≤ Kn− 2m 2m+1 . Demonstração. Pela decomposição viés-variância (Seção 1.5.2) e pela lei da esperança total, temos que E[(b rJ(X) − r(X))2 ] = E n E h r(X) − E[b rJ(X)|X] 2 |X io + E V[b rJ(X)|X] (4.23) Notando que E[b βj] = βj, temos que E[b rJ(x)] = ∑ J j=0 βjψj(x) e, assim, o termo de viés pode ser escrito como E n E h r(X) − E[b rJ(X)|X] 2 |X io = Z 1 0 ∑ jJ βjψj(x) !2 dx ≤ K1 1 J2m , (4.24) em que a última desigualdade segue do Lema 2. Para desenvolver o termo da variância, note que, para todo x ∈ R, V J ∑ j=0 b βjψj(x) # = E   J ∑ j=0 b βjψj(x) − J ∑ j=0 βjψj(x) !2   = E   J ∑ j=0 (b βj − βj)ψj(x) !2   = ∑ i,jJ E h (b βi − βi)(b βj − βj) i ψi(x)ψj(x) Assim, utilizando novamente a ortogonalidade da base, o termo de variância pode ser decomposto como E E V[b rJ(X)]|X = Z 1 0 ∑ i,jJ E h (b βi − βi)(b βj − βj) i ψi(x)ψj(x)dx = J ∑ j=0 E[(b βj − βj)2 ] = J ∑ j=0 V[b βj] = J ∑ j=0 1 n V[Yψj(X)] ≤ K2 J n , (4.25) em que K2 é uma constante que não depende de j e J e a última desigualdade segue do fato que |ψj(X)| √ 2 e V[Y] é finita. 105
  • 126.
    4.14. Resumo Assim, combinandoas Equações 4.24 e 4.25 via Eq. 4.23, temos que E[(b rJ(X) − r(X))2 ] ≤ K1 1 J2m + K2 J n . O teorema anterior mostra que n− 2m 2m+1 é um limitante superior para a taxa de convergência do estimador baseado em séries ortogonais quando assumimos que r(x) possui m derivadas integráveis e x ∈ R. Pode-se mostrar que esse limitante não pode ser melhorado (veja a Seção 5.1). Além disso, quando x ∈ Rd, essa taxa é dada por n− 2m 2m+d .10 Essa taxa é ótima sob estas suposições, isso é, nenhum estimador pode ter taxas melhores que essa. Mais precisamente, n− 2m 2m+d é a taxa minimax dentro dessa classe (Tsybakov, 2008). Discutiremos isso mais a fundo na Seção 5.1. 4.14 Resumo Neste capítulo estudamos algumas classes de métodos não paramétricos que têm motivações muito distintas. Vimos que a vantagem de tais métodos é sua flexibili- dade quando comparada com estimadores paramétricos: não é necessário assumir uma forma paramétrica para r(x) para garantir a consistência de um estimador não paramétrico b r(x); necessita-se apenas que r(x) seja suave (o que pode ser medido de diferentes maneiras). Essa flexibilidade, contudo, vem às custas de amostras maiores para se obter taxas de convergências razoáveis: enquanto métodos paramétricos ti- picamente possuem taxas de convergência n−1 quando suas suposições são válidas, a taxa usual de métodos não paramétricos é n− α α+d (em que α é a suavidade de r), que é muito mais lenta. Esse problema é ainda mais notório quando o número de covariáveis d é grande, assunto que será abordado no próximo capítulo. 10Para isso, assumimos, por exemplo, que todas as derivadas parciais de ordem m de r são L-Lipschitz (Györfi et al., 2006). 106
  • 127.
    Capítulo 5 Métodos NãoParamétricos em Altas Dimensões Como vimos no capítulo anterior, métodos não paramétricos, apesar de mais fle- xíveis, exigem tamanhos de amostras maiores quando comparados com métodos paramétricos. Isso ocorre pois métodos não paramétricos possuem taxas de conver- gência lentas. Neste capítulo verificaremos como tais métodos se comportam em altas dimensões. Veremos, em particular, que só poderemos fazer estimação não pa- ramétrica de forma satisfatória se fizermos suposições que simplificam o problema. Duas suposições usuais que frequentemente valem na prática são esparsidade e re- dundância nas covariáveis. 5.1 Taxas de convergência e a maldição da dimensiona- lidade A maldição da dimensionalidade (Bellman, 1966) é um problema enfrentado na uti- lização de estimadores em altas dimensões. Essencialmente, o problema é que, sem restrições adicionais, conforme a dimensão do espaço das covariáveis cresce, mais difícil fica estimar a função de regressão. Além disso, essa dificuldade cresce expo- nencialmente. Mais precisamente: considere que temos d covariáveis e um tamanho amostral n. Argumentamos no Capítulo 4 que o risco de um estimador não-paramétrico b r∗ 107
  • 128.
    5.1. Taxas deconvergência e a maldição da dimensionalidade frequentemente satisfaz E h (b r∗ (X) − r(X))2 i ≤ K nα/(α+d) para todo r ∈ S, em que K é uma constante e S é um conjunto de regressões suaves (por exemplo, com derivadas parciais de segunda ordem L-Lipschitz; o parâmetro α está ligado à noção de suavidade usada). Assim, vale que sup r∈S E h (b r∗ (X) − r(X))2 i ≤ K nα/(α+d) . (5.1) Pode-se também mostrar que inf b r sup r∈S E h (b r(X) − r(X))2 i = K n4/(4+d) , isto é, K nα/(α+d) é a taxa minimax para esse problema. Esse resultado, juntamente com a Equação 5.1, implica que 1. supr∈S E (b r(X) − r(X))2 = K nα/(α+d) (isto é, a desigualdade na Equação 5.1 é na realidade uma igualdade) 2. Se um estimador b r∗ satisfaz a Equação 5.1 ele é ótimo em um sentido minimax, isto é, o risco mais alto que ele atinge para funções na classe S é o menor (pior) risco que poderia ser obtido por qualquer estimador. Em outras palavras, sup r∈S E h (b r∗ (X) − r(X))2 i ≤ sup r∈S E h (b r(X) − r(X))2 i para qualquer estimador b r. Segue da Equação 5.1 que, para conseguir obter um risco de no máximo δ, preci- samos de uma amostra de tamanho ao menos n ≈ K δ (α+d)/α . Esse crescimento exponencial indica que, mesmo em dimensões moderadas, esti- mar satisfatoriamente uma função de regressão requer uma amostra grande. Veja na Figura 5.1 como o risco varia como função do tamanho amostral n para diferentes dimensões d e para α = 4. 108
  • 129.
    Capítulo 5. MétodosNão Paramétricos em Altas Dimensões Suponha que desejamos estimar a função de regressão em um dado ponto x. In- tuitivamente, a maldição da dimensionalidade ocorre pois, quando d é grande, a probabilidade que exista algum elemento na amostra com covariáveis Xi é extrema- mente baixa mesmo para tamanhos de amostra moderados. Em outras palavras, a vizinhança de x com alta probabilidade é vazia. Logo, há pouca informação sobre r(x). Veja mais detalhes em Wasserman (2006). Figura 5.1: A maldição da dimensionalidade: quanto maior o número de covariáveis d, mais difícil é estimar r. Aqui tomamos α = 4. Assim, estimar uma função de regressão em problemas com dimensionalidade alta é um problema notoriamente difícil. O fenômeno da maldição da dimensionali- dade indica que, sem suposições extras, é impossível resolver esse problema satisfa- toriamente para tamanho de amostras realistas. Nas próximas seções exxploraremos duas dessas suposições: (i) esparsidade e (ii) redundância entre as covariáveis. 5.1.1 Esparsidade A suposição de esparsidade diz que a função de regressão r(x) depende apenas de alguns xi’s. Isto é, r(x) = r((xi)i∈S), 109
  • 130.
    5.2. k VizinhosMais Próximos e Regressão Linear Local em que S ⊂ {1,...,d}. Assim, apesar de haver muitas covariáveis, poucas delas são relevantes para o problema. Sob essa hipótese, estimar r(x) torna-se mais fácil. Esse é o caso, por exemplo, no exemplo da Amazon (4.4). Naquele caso, espera-se que várias palavras não estejam associadas à nota dada ao produto. É por esse motivo que é possível criar funções de predições razoáveis mesmo havendo uma dimensão grande no espaço das covariáveis. 5.1.2 Redundâcia A suposição de redundância diz, intuitivamente, que as covariáveis x são alta- mente redundantes. Um exemplo trivial é o de que x1 = ... = xd, isto é, todas as covariáveis são iguais. Como um exemplo mais realista, considere que x1 é a altura de um indivíduo, x2 é seu peso e x3 é seu índice de massa corpórea. Com quais- quer duas dentre essas três variáveis, conseguimos recuperar a terceira, de modo que essas variáveis podem ser reduzidas para apenas duas. Outro caso em que redundância costuma ser uma suposição adequada é o de imagens. Neste contexto, cada covariável xi é o pixel de uma figura (veja Seção A.1 para uma explicação do que são pixels). Espera-se, em geral, que pixels adjacentes tenham valores próximos, de modo que há, assim, muita redundância nas covariá- veis associadas a uma imagem. Existem diversas formas de formalizar a noção de redundância; uma muito usada é a de que X pertence a uma subvariedade de Rd com dimensão intrínseca baixa (Aswani et al., 2011). Novamente, sob essa hipótese, estimar r(x) torna-se mais fácil. A seguir veremos alguns métodos não paramétricos que são adequados para pro- blemas com alta dimensionalidade. 5.2 k Vizinhos Mais Próximos e Regressão Linear Local Tanto o estimador dos k vizinhos mais próximos (Seção 4.3) quanto a regressão linear local (Seção 4.5 para o caso p = 1) se adaptam automaticamente à dimensi- onalidade intrínseca das observações quando estas percentem a uma subvariedade de Rd. Veja, por exemplo, Kpotufe (2011) e Bickel e Li (2007). Assim, quando se uti- liza um desses estimadores, nenhuma adaptação é necessária para evitar a maldição da dimensionalidade quando xi’s são altamente redundantes. Mais precisamente, a taxa de convergência de ambos os estimadores é K n4/(4+u) , em que u é a dimensão 110
  • 131.
    Capítulo 5. MétodosNão Paramétricos em Altas Dimensões intrínseca da subvariedade a qual X pertence. Essa taxa é muito mais rápida que a vista anteriormente, K n4/(4+d) , especialmente se u d. 5.3 Support Vector Regression Support Vector Regression (Seção 4.6.4) com o kernel Gaussiano também têm bom desempenho sob a hipótese de redundância. Veja, por exemplo, Steinwart e Christmann (2008). 5.4 Séries Ortogonais A abordagem de séries ortogonais apresentada na Seção 4.1 também pode ser adaptada para o cenário de dimensionalidade alta. A seguir apresentaremos a abor- dagem de séries espectrais. 5.4.1 Bases espectrais Nesta seção estudamos uma extensão do método de séries ortogonais apresen- tado na Seção 4.1 que é mais adequada para dados com dimensionalidade alta. O estimador também consiste em uma expansão em termos de uma base ortogonal. Contudo, ao contrário do que foi estudado na Seção 4.1, aqui a base utilizada é cons- truída com base nos dados. Em outras palavras, ao invés de utilizar, por exemplo, uma base de Fourier, utilizaremos uma base ψj j∈N construída com base na amos- tra x1,...,xn. Para construir uma base espectral, começamos definindo um kernel de Mercer K(x,y) (veja Seção 4.6.1). Seja P(x) a distribuição do vetor de covariáveis X e Consi- dere o seguinte operador (Shi et al., 2009): K : L2 (X ,P) −→ L2 (X ,P) (5.2) K(g)(x) = Z X K(x,y)g(y)dP(y). O operador K tem uma quantidade enumerável de autofunções ψj j∈N com res- pectivos autovalores λ1 ≥ λ2 ≥ ... ≥ 0 (Minh et al., 2006). As autofunções ψj j∈N constituem uma base espectral. Elas formam uma base ortonormal de L2(X ,P) (Minh, 2010). 111
  • 132.
    5.4. Séries Ortogonais Háduas principais razões pelas quais bases espectrais são candidatas ideais para aproximar funções suaves de x em altas dimensões: 1. As autofunções ψj j∈N são adaptadas à dimensão intrínseca dos dados. Mais es- pecificamente, quando o domínio X é uma subvariedade de Rd, a base se com- porta como uma base de Fourier adaptada à geometria intrínseca do dados, em que os primeiros termos são mais suaves que os termos de ordem mais alta1. Como um exemplo, na Figura 5.2 mostramos as autofunções do operador da Equação 5.2 quando o domínio dos dados é uma subvariedade (uma espiral) de R2. Compare esta figura com a Figura 4.1; a base se comporta como uma base de Fourier na direção da espiral. Segue que se r(x) é suave em relação a esse domínio, então só precisamos de algumas poucas funções para aproximá- la bem. Esta adaptação leva a taxas de convergência que dependem apenas da dimensão intrínseca dos dados, ao invés da potencialmente maior dimensão ambiente. 2. Ao contrário das bases ortogonais tradicionais, as autofunções são ortogonais em relação a P(x), a distribuição marginal dos dados, e não em relação à medida de Lebesgue (Bengio et al., 2004). Isto é, Z X ψi(x)ψj(x)dP(x) = δi,j. Isso leva a estimadores dos coeficientes de expansão que são mais rapidamente calculados. Além disso, não há necessidade de usar produtos tensoriais em altas dimensões, que são extremamente ineficientes para serem calculados. Como P(x) é desconhecido, é necessário estimar ψj j . Isso pode ser feito pri- meiramente calculando-se a matriz de Gram G =       K(x1,x1) K(x1,x2) ··· K(x1,xn) K(x2,x1) K(x2,x2) ··· K(x2,xn) . . . . . . ... . . . K(xn,x1) K(xn,x2) ··· K(xn,xn)       (5.3) Seja e ψj := e ψj(x1),..., e ψj(xn) . 1Isso ocorre porque a distância euclidiana é localmente a mesma que a distância geodésica; veja, por exemplo, Shi et al. 2009 para uma derivação. 112
  • 133.
    Capítulo 5. MétodosNão Paramétricos em Altas Dimensões o j-ésimo autovetor da matrix 5.3 e b λj seu respectivo autovalor, em que ordenamos os autovetores segundo ordem decrescente de autovalores e os normalizamos de maneira que ∑n k=1 e ψ2 j (xk) = 1. Um estimador consistente de ψj é b ψj(x) = √ n b λj n ∑ k=1 e ψj(xk)K(x,xk). (5.4) Este estimador é a extensão de Nyström do autovetor e ψj para valores fora da amostra x (Bengio et al., 2004; Drineas e Mahoney, 2005). ψ1 x y ψ2 x y ψ3 x y ψ4 x y Figura 5.2: Curvas de nível das primeiras quatro autofunções do operador do ker- nel Gaussiano quando o domínio das covariáveis x = (x1,x2) é em uma espiral. As autofunções formam uma base de Fourier adaptada à geometria dos dados e são apropriadas para aproximar funções suaves de x nesse domínio. Compare esta fi- gura com a Figura 4.1. 113
  • 134.
    5.4. Séries Ortogonais 5.4.2O estimador Seja K um kernel fixo e {ψj}j∈N a base ortonormal relacionada ao operador da Equação (5.2). A expansão da função de regressão r nessa base é dada por r(x) = ∑ j≥1 βjψj(x), em que βj = Z X ψj(x)r(x)dP(x) = Z X ψj(x)E[Y|x]dP(x) = E[Yψj(X)]. Note que a ortogonalidade da base espectral com relação a P(x) é a chave para que βj seja simplesmente E[Yψj(X)]. Assim, o estimador baseado em séries espectrais (Lee e Izbicki, 2016) é dado por g(x) = J ∑ j=1 b βj b ψj(x), (5.5) em que b ψj’s são estimados como descrito anteriormente e b βj = 1 n n ∑ k=1 yk b ψj(xk). O corte J pode ser escolhido por validação cruzada. Lee e Izbicki (2016) provam que a taxa de covergência desse estimador depende apenas da dimensão intrínseca do espaço das covariáveis. Assim, esse estimador é um bom candidato quando há muita redundância nas covariáveis. Exemplo 5.1 (Isomap face data). Trabalhamos aqui com os dados descritos no Exem- plo 1.3, que tem por objetivo estimar a direção horizontal para a qual um indivíduo está olhando com base em sua imagem. Cada imagem aqui é representada por uma matriz 64 × 64, i.e., há d = 4096 covariáveis. Temos n = 698 observações. Note que, como n d, não é possível implementar o método dos mínimos quadrados para esses dados. A Tabela 5.1 mostra os resultados dos ajustes desses modelos. Nesse problema, os métodos paramétricos utilizados levam a bons resultados, mas as pre- dições obtidas pelos métodos não paramétricos tem melhor qualidade. Em parti- cular, o método baseado em séries espectrais foi o que teve melhor desempenho. 114
  • 135.
    Capítulo 5. MétodosNão Paramétricos em Altas Dimensões Isso é explicado pelo fato de que, nesse exemplo, esperamos que haja uma grande redundância nas covariáveis. Tabela 5.1: Riscos estimados e erros-padrão de alguns estimadores para o isomap face data. Método Séries Espectrais KNN NW Lasso Ridge Risco Estimado 2.70 (0.70) 10.09 (1.50) 11.91 (1.91) 27.69 (6.43) 56.76 (13.48) 5.5 Florestas Aleatórias A taxa de convergência de um estimador da regressão via floresta aleatória de- pende apenas (sob várias suposições) do número de covariáveis relevantes para pre- dizer Y (Biau, 2012). Intuitivamente, isso ocorre pois, ao escolher qual variável será utilizada na divisão de cada árvore, apenas variáveis que diminuem o EQM são se- lecionadas. Assim, raramente uma variável irrelevante é utilizada. 5.6 SpAM - Modelos Aditivos Esparsos Os modelos aditivos apresentados na Seção 4.7 são uma tentativa de diminuir a influência da maldição da dimensionalidade, uma vez que eles assumem que r(x) pode ser decomposta em uma soma linear de funções suaves de cada uma das co- variáveis. Modelos aditivos esparsos (SpAM - Sparse Additive Models; Ravikumar et al. 2009) vão um passo além: eles combinam modelos aditivos com o lasso (Se- ção 3.3) de modo a se obter um estimador não paramétrico que vença a maldição da dimensionalidade em alguns problemas. Mais especificamente, em um modelo aditivo esparso, busca-se um representação da função de regressão da forma g(x) = d ∑ j=1 βjgj(xj), 115
  • 136.
    5.7. Resumo em queimpõe-se que ∑d j=1 |βj| ≤ L. Isso é, como em modelos aditivos, o SpAM assume que r(x) pode ser decomposta em uma soma linear de funções suaves de cada uma das covariáveis, gj(xj), mas, ao mesmo tempo, requer que algumas dessas funções sejam iguais a zero. Modelos aditivos esparsos são ajustados utilizando- se uma combinação do backfitting (Seção 4.7) com um método de solução do lasso. Assim como no lasso, o valor de L pode ser escolhido via validação cruzada. Veja detalhes técnicos em Ravikumar et al. (2009). No R, o método SpAM pode ser implementado com o pacote SAM. O ajuste e predições podem ser feitos via library(SAM) ajuste - samQL(X = x_treinamento, y = y_treinamento) predito - predict(ajuste, x_teste) Exemplo 5.2 (Wine Quality). Aqui exemplificamos modelos aditivos esparsos para o problema de predizer a qualidade de um vinho (medida através de uma nota dada por um expert) segundo suas característica (pH, quantidade de álcool entre outras; veja mais detalhes em https://archive.ics.uci.edu/ml/datasets/Wine+Quality). As funções suaves gj utilizadas foram splines com 3 funções de base. A Figura 5.3 mos- tra os resultados de tal ajuste. Assim como o caso de modelos aditivos, pode-se observar que o SpAM leva a ajustes com fácil interpretação. 5.7 Resumo Nesse capítulo vimos que é necessário fazer suposições adicionais para que seja possível estimar bem uma função de regressão utilizando métodos não paramétricos quando há muitas covariáveis. As duas suposições investigadas foram irrelevâncias de algumas covariáveise redundância das covariáveis. Vimos que vários dos mé- todos estudados no Capítulo 4 automaticamente se adaptam a essas situações, no sentido de que as taxas de convergência desses modelos são muito mais rápidas se essas suposições são válidas. 116
  • 137.
    Capítulo 5. MétodosNão Paramétricos em Altas Dimensões Figura 5.3: Ajuste do modelo esparso aditivo para os dados de vinho (Exemplo 5.2). 117
  • 138.
  • 139.
    Capítulo 6 Outros Aspectosde Regressão 6.1 Interpretabilidade (ExplainableML) I didn’t like having to explain to them, so I just shut up, smoked a cigarette, and looked at the sea. Albert Camus Ainda que o foco da maioria dos métodos de aprendizado supervisionado seja criar bons algoritmos de predição, métodos que permitem maior interpretabilidade costumam ser mais utilizados. Isso porque trazem mais segurança para os usuários desses modelos. Além disso, métodos interpretáveis podem trazer insights adicio- nais sobre o problema abordado. Por exemplo, ao saber quais variáveis são impor- tantes para se obter um bom poder preditivo em um dado problema, pode-se ter uma melhor ideia sobre o desempenho preditivo da função obtida para novos dados com características distintas (ou seja, dados que não são identicamente distribuídos aos dados observados no conjunto de treinamento). Também é possível diagnosticar mais facilmente viéses de seleção que poderiam passar desapercebidos. Vimos que árvores de predição, modelos aditivos e modelos lineares esparsos são relativamente fáceis de serem interpretados enquanto que support vector regression e métodos baseados no truque do kernel tipicamente são mais difíceis. Existem algu- mas formas de tentar interpretar modelos de predição que são tidos como caixas pretas. A seguir introduziremos três formas de fazer isso: LIME, PDP e ICE. Outros 119
  • 140.
    6.1. Interpretabilidade (ExplainableML) métodosde interpretação de modelos de predição podem ser encontrados em Botari et al. (2019), Coscrato et al. (2019), Lundberg e Lee (2017), Molnar (2019) e Ribeiro et al. (2018). Via de regra, o objetivo de ExplainableML é responder à pergunta Por que esse algoritmo fornece a predição g(x) para esse dado x?, e não Por que esperamos que esse x tenha valor predito g(x)?. Essa última é uma pergunta inferencial. É jus- tamente confrontando a resposta do LIME com nossa opinião sobre a segunda per- gunta que ganharemos ou perderemos confiança no modelo utilizado. Finalmente, notamos que alguns dos métodos descritos aqui também podem ser utilizados para a responder à segunda pergunta caso se assuma que o modelo ajustado é razoável. 6.1.1 LIME - Local Interpretable Model-agnostic Explanations A ideia chave do LIME (Ribeiro et al., 2016) é tentar responder à seguinte per- gunta: por que o algoritmo me forneceu a predição g(x∗) para a nova amostra x∗? A resposta para essa pergunta é dada na forma de uma lista de quais variáveis foram importantes para explicar essa observação. Para tanto, o LIME aproxima a solução g(x∗) localmente (isto é, em uma vizinhança de x∗) via uma regressão linear ajustada por lasso. Isso é feito pois, mesmo se g é não linear, uma aproximação linear pode ser razoável localmente. Para fazer essa aproximação, o procedimento do LIME consiste nos seguintes passos: • Gerar as covariáveis de novas observações x∗ 1,...,x∗ B perturbando x∗ (por exem- plo, adicionando ruído em cada dimensão de x∗) • Ajustar o lasso para o conjunto (x∗ 1,g(x∗ 1)),...,(x∗ B,g(x∗ B)). O ajuste pode ser feito dando pesos para cada observação de acordo com a similaridade: wi = K(x∗ i ,x∗). O valor da penalização λ do lasso é escolhido de forma que se tenha m covariáveis escolhidas (m é escolhido pelo usuário e em geral é um número pequeno para facilitar a interpretação). Retorna-se então quais foram as m variáveis escolhidas e a magnitude dos coefi- cientes associados. Exemplo 6.1 (Câncer de Próstata). Neste exemplo utilizaremos o pacote |lime| para interpretar as predições dadas pelo XGBoost para o banco de dados de câncer de próstata (Exemplo 3.2). A Figura 6.1 ilustra as explicações dadas pelo LIME para 4 observações. 120
  • 141.
    Capítulo 6. OutrosAspectos de Regressão library(xgboost) xgb_model - xgb.train(data = xgb.DMatrix(xtr, label = ytr), nrounds = 50) explainer - lime(data.frame(xtr), model = xgb_model) explanation - lime::explain( data.frame(xval[sample(nrow(xval),4),]), explainer, n_features = 3) plot_features(explanation, ncol = 2) Figura 6.1: Exemplo de interpretação dado pelo LIME para o banco de dados do Câncer de Próstata. 121
  • 142.
    6.1. Interpretabilidade (ExplainableML) 6.1.2PDP e ICE Os gráficos de dependência parcial (do inglês, PDP - partial dependence plot; Fried- man 2001) são uma ferramenta valiosa para visualizar como uma função de predição g depende das covariáveis. A curva do PDP para a i-ésima variável é dada por hi(x) = 1 n n ∑ j=1 g(xj,1,...,xj,i−1,x,xj,i+1,...,xj,d), que é uma estimativa de E[g(X1,...,Xi−1,x,Xi+1,...,Xd)]. Essa curva mede a in- fluência média da i-ésima variável no modelo preditivo g. Se hi(x) varia muito como função de x, então g é muito alterada por mudanças nessa covariável, o que indica que xi é uma variável importante para esse modelo preditivo. O formato da curva também elucida como se dá essa relação. Idealmente, as observações utilizadas para calcular hi(x) não devem ter sido uti- lizadas no treinamento do modelo, uma vez que o comportamento de g pode ser muito diferente em novas observações, especialmente se o método faz algum tipo de interpolação. Caso g seja dado por um modelo adivo (Seção 4.7), as curvas do PDP recupe- ram as funções de regressão individuais b ri. Assim, a visualização dada pelo PDP é exatamente a mesma daquela apresentada na Figura 4.5. Em particular, se g é uma regressão linear, recupera-se uma reta. Para os casos em que há uma forte interação entre as covariáveis, a influência média de uma covariável pode não ser um bom resumo de seu papel no modelo preditivo. Nessas situações, uma alternativa é a utilização do gráfico de esperança condicional individual (do inglês, ICE - individual conditional expectation; Goldstein et al. 2015). Esse gráfico consiste em traçar as curvas hi,j(x) := g(xj,1,...,xj,i−1,x,xj,i+1,...,xj,d) para todas as observações j de interesse. Observa-se, assim, a influência da i-ésima variável para cada observação individulmente. Note que a curva do PDP é dada pela média das curvas ICE. Exemplo 6.2 (Câncer de Próstata). Neste exemplo utilizaremos PDP e ICE para inter- pretar as predições dadas pelo XGBoost para o banco de dados de câncer de próstata (Exemplo 3.2). O ajuste do modelo preditivo foi feito no Exemplo 6.1. 122
  • 143.
    Capítulo 6. OutrosAspectos de Regressão As curva em vermelho no painel da esquerda da Figura 6.2 mostra o PDP para a variável lcavol. Ela indica que, à medida que lcavol aumenta, as predições do modelo para a variável resposta também aumentam. Por outro lado, o painel da di- reita mostra que a variável age não é muito importante para esse modelo preditivo, pois ela se aproxima de uma reta horizontal. Em ambos os casos, a interação entre as covariáveis do banco de dados e a va- riável apresentada parece baixa. O comportamento das curvas em preto é muito parecido com os das curvas em vermelho. library(pdp) predict.fun - function(object, newdata){ newData_x = xgb.DMatrix(data.matrix(newdata), missing = NA) results - predict(object, newData_x) return(results) } pdp::partial(xgb_model, train = as.data.frame(xval), pred.var = lcavol, pred.fun = predict.fun, ice = TRUE) %% plotPartial(smooth = TRUE, alpha = 0.4, pdp.lwd = 4, pdp.col = #D81B60) pdp::partial(xgb_model, train = as.data.frame(xval), pred.var = age, pred.fun = predict.fun, ice = TRUE) %% plotPartial(smooth = TRUE,alpha = 0.4, pdp.lwd = 4, pdp.col = #D81B60) 123
  • 144.
    6.2. Estimação deDensidades Condicionais Figura 6.2: Interpretações para duas covariáveis dadas pelo ICE (curvas pretas) e PDP (curvas vermelhas). 6.2 Estimação de Densidades Condicionais Nem sempre a função de regressão é suficiente para resumir a incerteza sobre Y quando se conhece x. Uma alternativa é estimar não só a esperança condicional E[Y|x], mas sim toda a densidade condicional f (y|x). Alguns métodos não para- métricos de estimação dessa quantidade em problemas com baixa dimensionalidade podem ser encontrados em Fan et al. (1996), Hall et al. (2004), Hyndman et al. (1996), Rosenblatt (1969) e Sugiyama et al. (2010). Para métodos que funcionam em alta di- mensionalidade, veja Dalmasso et al. (2020) e Izbicki e Lee (2016). Aqui descrevemos o FlexCode (Izbicki e Lee, 2017). A ideia chave do FlexCode é que, se R f2(y|x)dy ∞, então f admite a represen- tação f (y|x) = ∑ i≥0 βi(x)φi(y), em que (φi)i≥0 é uma base ortonormal como a base de Fourier. Se f é suave, ela pode 124
  • 145.
    Capítulo 6. OutrosAspectos de Regressão então ser bem aproximada pelos primeiros termos da série: f (y|x) ≈ I ∑ i=0 βi(x)φi(y). Assim, o problema de estimar a densidade condicional pode ser reformulado como o problema de estimar os coeficientes β1(x),...,βI(x). Ao projetar f em φi, notamos que βi(x) = E[φi(Y)|x]. Assim, podemos estimar βi fazendo uma regressão de φi(Y) em x. O método de regressão ideal depende da estrutura do problema resolvido. Por exemplo, se espe- ramos uma relação esparsa entre Y e x, podemos utilizar métodos que fazem seleção de variáveis (no sentido de não usar todas as variáveis de forma igual), como o XG- Boost ou florestas aleatórias. Por outro lado, se esperamos que X pertença a uma subvariedade com dimensão intríseca baixa, podemos utilizar o método dos k vizi- nhos mais próximos. A Figure 6.3 mostra um exemplo de densidades estimadas pelo FlexCode. Sejam (β̂i(x))I i=0 estimativas desses coeficientes. A densidade estimada é dada por: ˆ f (y|x) = I ∑ i=0 β̂i(x)φi(y). # instalação: devtools::install_github(rizbicki/FlexCode) library(FlexCoDE) set.seed(123) # Divisão em treinamento/validação/teste split_train_test - initial_split(dados, prob = 0.95) teste - testing(split_train_test) treinamento - training(split_train_test) split_train_validation - initial_split(treinamento, prob = 0.7) treinamento - training(split_train_validation) 125
  • 146.
    6.2. Estimação deDensidades Condicionais validacao - testing(split_train_validation) # Fit FlexCode with RandomForest to estimate the coefficients fit - fitFlexCoDE(select(treinamento, -y), select(treinamento, y), select(validacao, -y), select(validacao, y), regressionFunction = regressionFunction.Forest) p - plot(fit, select(teste, -y), select(teste, y) %% pull()) Figura 6.3: Densidade estimadas pelo FlexCode. 126
  • 147.
    Capítulo 6. OutrosAspectos de Regressão 6.3 Inferência Conformal To be beyond any existing classification has always pleased me. Boyd Rice Estimar a distribuição completa de Y condicional em x não é uma tarefa simples. Uma solução intermediária para fornecer predições para Y que vão além de estima- tivas pontuais consiste em criar uma região de predição com valores plausíveis de Y para uma amostra com covariáveis x. Uma forma particular de se criar essas ban- das, de modo a conseguir garantias de cobertura com poucas suposições, é através da inferência conformal (conformal inference) (Vovk et al., 2005; Vovk et al., 2009), que utiliza apenas a suposição de que os dados são i.i.d.’s. Mais espeficamente, com esse método é possível construir bandas C tais que P(Yn+1 ∈ C(Xn+1)) = 1 − α, em que α ∈ (0,1) é um valor especificado previamente. Uma método conformal particular é o método split (Lei et al., 2018; Papadopoulos et al., 2002), que possui a vantagem de ser rápido frente a outras alternativas. Nesse método, o conjunto de dados é dividido em dois: o conjunto de treinamento D0 = {(X0 1,Y0 1),...,(X0 n,Y0 n)} e o conjunto de predição D = {(X1,Y1),...,(Xn,Ym)}. Para simplificar a notação, vamos assumir que m = n. Treinamos então uma função ĥ : X × Y → R, utilizando somente D0. Uma forma usual de definir essa função é ĥ(x,y) = |y − r̂(x)|, em que r̂ é uma estimativa da regressão obtida a partir de D0 (Lei et al., 2018). Finalmente, D é utilizado para calcular Ui := ĥ(Xi,Yi), que são chamados de resíduos split. Como os resíduos split são i.i.d. dados ĥ, o posto que Un+1 tem em {U1,...,Un} tem distribuição uniforme em {1,...,n + 1} e, definindo Ubαc como sendo a bnαc estatística de ordem entre U1,...,Un, obtemos que P Un+1 ≥ Ubαc ≥ 1 − α P ĥ(Xn+1,Yn+1) ≥ Ubαc ≥ 1 − α P Yn+1 ∈ n y : ĥ(Xn+1,y) ≥ Ubαc o ≥ 1 − α. Ou seja, C(Xn+1) = n y : ĥ(Xn+1,y) ≥ Ubαc o satisfaz P(Yn+1 ∈ C(Xn+1)) ≥ 1 − α. Além de P(Yn+1 ∈ C(Xn+1)), outras propriedades são desejáveis. Por exemplo, 127
  • 148.
    6.3. Inferência Conformal idealmentetambém gostaríamos que P(Yn+1 ∈ C(Xn+1)|Xn+1 = x) = 1 − α para todo x ∈ Rd. Contudo, é impossível criar um método que satisfaça isso, a menos que se faça fortes suposições sobre o processo gerador dos dados (Lei e Wasser- man, 2014). Assim, alguns métodos de split conformal satisfazem versões mais fra- cas dessa propriedade. Por exemplo, o CD-split e o Dist-split (Izbicki et al., 2020a; Izbicki et al., 2020b), além de controlar P(Yn+1 ∈ C(Xn+1)), também contro- lam P(Yn+1 ∈ C(Xn+1)|Xn+1 = x) assintoticamente. Ambos os métodos utilizam densidades condicionais (Seção 6.2) para criar ĥ(x,y): enquanto o Dist-split uti- liza ĥ(x,y) = F̂(y|x), o CD-split utiliza ĥ(x,y) = ˆ f (y|x). O método CD-split requer uma passo adicional de particionamento do espaço de covariáveis para ga- rantir a cobertura condicional assintótica. Esses métodos podem ser calculados com o pacote predictionBands1. Exemplo 6.3 (Bike sharing). Considere novamente o conjunto de dados do Exemplo 4.3. A Figura 6.4 mostra as bandas de predição para esse número em 100 observações do conjunto de teste. Essas bandas foram criadas a partir das covariáveis disponíveis e o método dist-split proposto por Izbicki et al. (2020b). library(rsample) library(predictionBands) dados - read_csv(../dados/hour.csv) %% select(-(instant:dteday), -(yr:mnth), -(casual:registered)) %% mutate_at(vars(season, holiday, weekday, workingday), as.character) set.seed(400) split - initial_split(dados, prop = .9942) treinamento - training(split) teste - testing(split) 1https://github.com/rizbicki/predictionBands 128
  • 149.
    Capítulo 6. OutrosAspectos de Regressão X - select(treinamento, -cnt) y - select(treinamento, cnt) %% pull() Xteste - select(teste, -cnt) yteste - select(teste, cnt) %% pull() fit - fit_predictionBands(X, y, regressionFunction.extra = list(nCores = 4), nIMax = 20) bands - predict(fit, Xteste, type = dist) p - plot(bands, yteste) Figura 6.4: Exemplo de aplicação de inferência conformal. Os intervalos representam as bandas de predição para 100 observações do conjunto de teste. Os pontos indicam os valores reais da variável resposta. 129
  • 150.
  • 151.
  • 153.
    Capítulo 7 Introdução Neste capítulo,estudaremos outro problema central em aprendizado de máquina, o de classificação. Para o leitor que começa por esse capítulo, sugerimos a leitura do Capítulo 1 para compreensão da notação e de conceitos básicos de aprendizado su- pervisionado. O problema de classificação é um problema similar ao de predição em regressão. Consideramos uma amostra com observações independentes (X1,Y1),...,(Xn,Yn) ∼ (X,Y) com objetivo de construir uma função g(x) que possa ser usada para fazer bem a predição de novas observações (Xn+1,Yn+1),...,(Xn+m,Yn+m), isto é, quere- mos que g(xn+1) ≈ yn+1,...,g(xn+m) ≈ yn+m. A diferença de um problema de classificação para um problema de regressão é que no primeiro a variável resposta Y não é uma variável quantitativa, mas sim uma variável qualitativa. Por exemplo, prever se um paciente tem uma certa doença com base em variáveis clínicas x é um problema de classificação. Outro exemplo tradicional é o de classificar automática de dígitos escritos à mão com base em suas imagens (veja Figura 7.1 para alguns exemplos). 133
  • 154.
    7.1. Função deRisco Figura 7.1: Exemplos de dígitos escritos à mão. O objetivo nesse problema é criar uma função g(x) que consiga automaticamente predizer a qual dígito corresponde uma imagem com alta acurácia. Neste capítulo, investigaremos como a avaliação do desempenho de uma dada função de predição g(x) (isto é, um classificador) difere da avaliação estudada no contexto de regressão. No Capítulo 8 estudaremos alguns métodos de criação de classificadores com bom poder preditivo. 7.1 Função de Risco Vamos assumir que Y possui valores em um conjunto C (por exemplo, C pode ser o conjunto {spam, não spam}). Primeiramente, notamos que a função de risco R(g) = E[(Y − g(X))2] estudada para o caso de regressão (Y quantitativo) não faz sentido para classificação (o que seria Y − g(X) nesse contexto?). Dessa forma, con- sideraremos outra função de risco. É comum utilizar R(g) := E[I(Y , g(X))] = P(Y , g(X)), (7.1) ou seja, o risco de g é agora a probabilidade de erro em um nova observação (X,Y). Em outras palavras, uma função de perda mais adequada para o contexto de classi- ficação é L(g(x),Y) = I(Y , g(X)), a chamada função de perda 0-1. No contexto de regressão, vimos que a função que minimiza E[(Y − g(X))2] é dada pela função de regressão r(x) = E[Y|X = x] (veja o Capítulo 1). Existe um análogo para classificação: a melhor função de classificação g, segundo a função de risco da Equação 7.1, é dada por g(x) = argmax d∈C P(Y = d|x), 134
  • 155.
    Capítulo 7. Introdução istoé, deve-se classificar x como sendo daquela classe com maior probabilidade a pos- teriori. Este classificador é conhecido como classificador de Bayes. Note que, como no caso de regressão, ele é desconhecido pois a função P(Y = d|x) é desconhecida. O Teorema a seguir formaliza esta caracterização. Teorema 9. Suponha que definimos o risco de uma função de predição g : Rd −→ C via perda 0-1: R(g) = P(Y , g(X)), em que (X,Y) é uma nova observação que não foi usada para estimar g. Então a função g que minimiza R(g) é dada por g(x) = argmax d∈C P(Y = d|x) Demonstração. Para simplificar a demonstração do teorema, vamos assumir que Y assume só dois valores, digamos, c1 e c2 (isto é, trata-se de um problema binário). Temos que R(g) := E[I(Y , g(X))] = P(Y , g(X)) = Z Rd P(Y , g(X)|x)f (x)dx = Z Rd [I(g(x) = c2)P(Y = c1|x) + I(g(x) = c1)P(Y = c2|x)] f (x)dx. Assim, para cada x fixo, o termo interno da integral é minimizado quando se escolhe g(x) = c1 quando P(Y = c1|x) ≥ P(Y = c2|x) e g(x) = c2 caso contrário. Para o caso binário, o classificador de Bayes pode ser reescrito como g(x) = c1 ⇐⇒ P(Y = c1|x) ≥ 1 2 . Na Seção 9.1 discutiremos alguns casos em que utilizar um valor diferente de 1/2 é vantajoso. Observação 7.1. No caso de classificação binária é comum denotar os elementos de C por 0 e 1. Essa escolha é válida, mas arbitrária (isto é, não se deve entender que há uma ordenação entre esses elementos). 135
  • 156.
    7.2. Estimação doRisco e Seleção de Modelos 7.2 Estimação do Risco e Seleção de Modelos Da mesma maneira que em regressão (Seção 1.5.1), pode-se estimar o risco de um método de classificação utilizando-se data splitting ou validação cruzada. Conside- remos a primeira dessas abordagens (lembre-se que as observações devem estar em uma ordem aleatória): Treinamento (por exemplo, 70%) z }| { (X1,Y1),(X2,Y2),...,(Xs,Ys) , Validação (por exemplo, 30%) z }| { (Xs+1,Ys+1),...,(Xn,Yn). Como em regressão, utilizamos o conjunto de treinamento para estimar g e o conjunto de validação apenas para estimar R(g) via R(g) ≈ 1 n − s n ∑ i=s+1 I(Yi , g(Xi)) := b R(g), (7.2) isto é, avaliamos a proporção de erros no conjunto de validação. Assim, uma forma de selecionar um modelo g dentro de uma classe de mode- los G consiste em utilizar validação cruzada para estimar R(g) para cada g ∈ G e, então, escolher g com o menor risco estimado. O teorema a seguir mostra que esse procedimento, de fato, retorna com probabilidade alta o melhor modelo em G. Teorema 10. Seja G = {g1,...,gN} uma classe de classificadores estimados com base em um conjunto de treinamento e seja b R(g) o erro estimado de g com base no conjunto de validação (Equação 7.2). Seja g∗ o modelo que minimiza o risco real R(g) dentre g ∈ G e seja b g o modelo que minimiza o risco estimado b R(g) dentre g ∈ G. Então, com probabilidade de no máximo e (e 0), |R(b g) − R(g∗ )| 2 s 1 2(n − s) log 2N e . Demonstração. Pela desigualdade de Hoeffding, para todo δ 0 e todo g ∈ G, tem-se que P(|b R(g) − R(g)| δ) ≤ 2e−2(n−s)δ2 . Segue da desigualdade da união que 136
  • 157.
    Capítulo 7. Introdução P max g∈G |b R(g)− R(g)| δ = P   [ g∈G |b R(g) − R(g)| δ   ≤ ∑ g∈G P |b R(g) − R(g)| δ ≤ N2e−2(n−s)δ2 . Agora, tome δ = q 1 2(n−s) log 2N e , de modo que N2e−2(n−s)δ2 = e. Conclua que, com probabilidade ao menos 1 − e, |b R(g) − R(g)| ≤ δ para todo g ∈ G e, assim, R(b g) ≤ b R(b g) + δ ≤ b R(g∗ ) + δ ≤ R(g∗ ) + 2δ. O Teorema 10 mostra que, quanto maior é o número de classificadores em G, menor é a probabilidade de recuperarmos o melhor modelo. Esse é um dos fato- res que fazem com que idealmente apenas um conjunto pequeno de modelos seja comparado no conjunto de teste e o ajuste/tuning de cada modelo é feito utilizando validação cruzada dentro do treinamento ou particionando o treinamento em dois conjuntos: treinamento e validação. Assim, deixamos o teste para comparar apenas o melhor modelo de cada classe (por exemplo, a melhor regressão logística penali- zada encontrada com o melhor KNN). Uma extensão desse resultado para o caso em que G possui um número infinito de elementos será estudada na Seção 9.5, quando introduzirmos a teoria VC. 7.3 Balanço entre Viés e Variância Assim como em regressão (Seção 1.5.2), em classificação também se enfrenta o pa- radigma do balanço entre viés e variância. Contudo, os detalhes são um pouco dife- rentes. Suponha que G seja uma classe de classificadores (por exemplo, todos os clas- sificadores baseados em uma regressão logística; veja Seção 8.1.2), Ror := infg∈G R(g) o melhor risco (isto é, o risco do oráculo) que pode ser obtido usando-se classificado- res de G e R∗ o risco do classificador de Bayes (Teorema 9). Então, para todo g ∈ G, R(g) − R∗ = T1 + T2, 137
  • 158.
    7.4. Outras medidasde desempenho em que T1 = R(g) − Ror é o análogo da variância (em geral é alto se G possui muitos elementos – por exemplo, se há muitos parâmetros na regressão logística) e T2 = Ror − R∗ é o análogo do viés ao quadrado (em geral é baixo se G possui muitos elementos). Assim, G não pode ser nem muito grande, nem muito pequena. 7.4 Outras medidas de desempenho You can’t notice what isn’t mentioned unless you’re an expert. Daniel Dennett Nem sempre a função de risco R(g) := E[I(Y , g(X))] = P(Y , g(X)) traz toda informação sobre o quão razoável g é. Por exemplo, suponha que Y indica se uma pessoa tem uma certa doença rara e que, portanto, em uma amostra i.i.d., há poucos pacientes com Y = 1. O classificador trivial g(x) ≡ 0 (classificar todos os pacientes como sendo saudáveis) terá risco baixo, pois P(Y , 0) é pequena, mas seu desempe- nho deixa a desejar: frequentemente não queremos classificar de forma errada um paciente que é doente. Em termos numéricos, considere um exemplo de uma amos- tra com 1.000 pacientes e apenas 10 doente. Ao classificar todos como saudáveis, o risco apresentaria um valor muito reduzido. Na prática, para evitar esse tipo de situação, é comum avaliar o desempenho de um classificador com base em matrizes de confusão como a apresentada a seguir: Tabela 7.1: Matriz de confusão Valor Predito Valor verdadeiro Y = 0 Y = 1 Y = 0 VN (verdadeiro negativo) FN (falso negativo) Y = 1 FP (falso positivo) VP (verdadeiro positivo) Com base nessa tabela, pode-se definir várias medidas, como por exemplo: • Sensibilidade/Recall: S = VP/(VP + FN) (dos pacientes doentes, quantos fo- ram corretamente identificados?) 138
  • 159.
    Capítulo 7. Introdução •Especificidade: E = VN/(VN + FP) (dos pacientes não doentes, quantos foram corretamente identificados?) • Valor preditivo positivo/Precision: VPP = VP/(VP + FP) (dos pacientes clas- sificados como doentes, quantos foram corretamente identificados?) • Valor preditivo negativo: VPN = VN/(VN + FN) (dos pacientes classificados como não doentes, quantos foram corretamente identificados?) • Estatística F1: F1 = 2 1/S+1/VPP (a média harmônica entre S e VPP) O classificador trivial g(x) ≡ 0 tem sensibilidade zero e especificidade um. As- sim, apesar da especificidade ser alta, a sensibilidade é muito baixa. Isso indica que o classificador pode na realidade ser ruim: ele classifica incorretamente todos os pa- cientes doentes. Portanto, é recomendável olhar para outras medidas além do risco estimado. Isso se torna particularmente importante na presença de dados desba- lanceados (isto é, caso a frequência de uma classe seja muito diferente das demais). Voltaremos para esse tópico na Seção 9.1. As estatísticas calculadas com base na Tabela 7.1 são estimativas populacionais de certas quantidades. Por exemplo, a sensibilidade é uma estimativa de P(g(X) = 1|Y = 1), enquanto que a especificidade é uma estimativa de P(g(X) = 0|Y = 0). Assim, é importante calcular os valores de VP, FN, VN e FP utilizando uma amostra de teste ou validação para evitar o sobre-ajuste. 139
  • 160.
    7.4. Outras medidasde desempenho 140
  • 161.
    Capítulo 8 Métodos declassificação Neste capítulo apresentamos diversos métodos que visam fornecer classificado- res com bom poder preditivo. 8.1 Classificadores Plug-in O Teorema 9 sugere uma abordagem simples para resolver um problema de pre- dição: 1. Estimamos P(Y = c|x) para cada categoria c∈C. 2. Tomamos então g(x) = argmax c∈C b P(Y = c|x) Em particular, no caso binário, tomamos g(x) = 1 ⇐⇒ b P(Y = 1|x) 1 2 . Essa abordagem é conhecida como classificador plug-in, pois pluga-se o estima- dor da probabilidade condicional na fórmula do g ótimo. Assim, sob esta aborda- gem, criar um classificador se resume a estimar P(Y = c|x). Nas seguintes seções veremos algumas formas de estimar essas probabilidades. Na Seção 9.1, veremos que, muitas vezes, usar outros cortes para classificação além de 1/2 pode levar a resultados melhores. 141
  • 162.
    8.1. Classificadores Plug-in 8.1.1Métodos de regressão Living is messy. Woody Allen Note que, para todo c ∈ C, P(Y = c|x) = E[I(Y = c)|x]. Assim, pode-se utilizar qualquer modelo de regressão (como árvores, florestas ou qualquer outro método descrito na Parte I desse livro) para estimar P(Y = c|x); basta estimar a função de regressão E[Z|x], em que Z = I(Y = c). Por exemplo, pode-se estimar essa probabilidade via regressão linear, isto é, assumindo-se que P(Y = c|x) = E[Z|x] = β (c) 0 + β (c) 1 x1 + ... + β (c) p xp. É possível, por exemplo, utilizar o método de mínimos quadrados, lasso ou outras abordagens já discutidas para estimar esses coeficientes. Ainda que as estimativas de P(Y = c|x) possam ser menores que zero ou maiores que um, essas podem ser utilizadas para definir o classificador g(x) = argmax c∈C b P(Y = c|x). Embora classificadores criados desta maneira frequentemente apresentem bons resultados, há pessoas que se sentem desconfortáveis em obter estimativas para uma probabilidade maiores que um ou menores que zero1. Diversos métodos que evitam isso serão apresentados nas próximas seções. 8.1.2 Regressão logística Vamos assumir, a princípio, que Y é binária, isto é, |C| = 2. Denotando C = {0,1}, a regressão logística apresenta a seguinte forma paramétrica: P(Y = 1|x) = eβ0+∑d i=1 βixi 1 + eβ0+∑d i=1 βixi . 1Note, contudo, que as probabilidades estimadas dessa forma via KNN ou métodos baseados em árvores estão, por construção, necessariamente entre zero e um. 142
  • 163.
    Capítulo 8. Métodosde classificação Assim como no caso de regressão, não estamos assumindo que esta relação é, de fato, válida. No entanto, esperamos que ela nos leve a um bom classificador. Para estimar os coeficientes de uma regressão logística, podemos usar o método de máxima verossimilhança. Nesse caso, dada uma amostra i.i.d. (X1,Y1),...,(Xn,Yn), a função de verossimilhança condicional nas covariáveis, é L(y;(x,β)) = n ∏ k=1 (P(Yk = 1|xk,β))yk (1 − P(Yk = 1|xk,β))1−yk n ∏ k=1 eβ0+∑d i=1 βixk,i 1 + eβ0+∑d i=1 βixk,i !yk 1 1 + eβ0+∑d i=1 βixk,i !1−yk . Para obter as estimativas dos coeficientes β, maximizamos L(y;(x,β)). Ao contrá- rio do estimador de mínimos quadrados de uma regressão linear (Eq. 2.2), é neces- sário usar algoritmos numéricos para maximizar a verossimilhança induzida pela regressão logística e, assim, chegar nas estimativas para os coeficientes β. No R, pode-se utilizar a função glm: glm_fit - glm(formula, data = dados, family = binomial) Assim como no caso da regressão linear, também é possível utilizar penalização para estimar os coeficientes da regressão logística. Dessa forma, espera-se obter me- lhor poder preditivo ao reduzir a variância do estimador. Para mais detalhes veja Hastie et al. (2001). O pacote glmnet do R permite que tais modelos sejam facil- mente ajustados: modelo - glmnet(X_treino, y_treino, alpha = 1, family = binomial) # ou, para considerar validação cruzada, utilize modelo - cv.glmnet(X_treino, y_treino, alpha = 1, family = binomial) Quando |C| 2 (casos com mais de duas categorias), podemos estimar, para cada c ∈ C, P(Y = c|x) utilizando uma regressão logística diferente. Para tanto, basta estimar P(Z = 1|x), em que Z = I(Y = c). Assim, ajustamos |C| regressões logísticas 143
  • 164.
    8.1. Classificadores Plug-in eentão utilizamos o classificador g(x) = argmax c∈C b P(Y = c|x). Existem outros métodos que garantem que a soma das probabilidades estimadas seja um, veja por exemplo Friedman et al. (2010). 8.1.3 Bayes Ingênuo Uma outra abordagem para estimar P(Y = c|x) consiste em usar o Teorema de Bayes. Assumindo que X seja um vetor de covariáveis contínuas, temos que P(Y = c|x) = f (x|Y = c)P(Y = c) ∑s∈C f (x|Y = s)P(Y = s) Assim, pode-se obter uma estimativa de P(Y = c|x) estimando-se as probabili- dades marginais P(Y = s) e as densidades condicionais f (x|Y = s) para cada s ∈ C. O termo P(Y = s) pode ser facilmente estimado utilizando-se as proporções amostrais de cada classe. Contudo, para estimar f (x|Y = s), é necessário assumir algum modelo para as covariáveis. O método Bayes ingênuo (naive Bayes em inglês) assume que, para todo s ∈ C, f (x|Y = s) pode ser fatorada como f (x|Y = s) = f ((x1,...,xd)|Y = s) = d ∏ j=1 f (xj|Y = s), isto é, assume que as componentes de x são independentes condicionalmente à classe Y. Apesar dessa suposição não ser razoável em muitos problemas, ela é muito con- veniente e pode levar a um bom classificador. Podemos então estimar cada f (xj|Y = s) assumindo, por exemplo, que Xj|Y =s ∼ N(µj,s,σ2 j,s), j = 1,...,d. Em outras palavras, assumimos que cada componente do vetor X tem distribuição normal com parâmetros que dependem da classe e da componente em questão. Os parâmetros desse modelo podem ser estimados, por exemplo, via estimação de má- 144
  • 165.
    Capítulo 8. Métodosde classificação xima verossimilhança: c µj,s = 1 |Cs| ∑ k∈Cs Xj,k c σ2 j,s = 1 |Cs| ∑ k∈Cs (Xj,k − b µj,s)2 em que Cs = {j : Yj = s} é o conjunto de todas observações de treinamento da classe s. Nesse caso, o estimador para a densidade condicional f (x|Y = c) é então dado por b f (x|Y = c) = d ∏ k=1 b f (xk|Y = c) = d ∏ k=1 1 q 2π b σ2 k,c e − (xk−b µk,c)2 2 d σ2 k,c ! Evidentemente, além da distribuição normal, outras distribuições podem ser uti- lizadas. Além disso, pode se utilizar diferentes métodos de estimação além do mé- todo da máxima verossimilhança. Pode-se, inclusive, utilizar métodos não-paramétricos para estimar cada uma das densidades condicionais. Se X tem componentes discretas, o Teorema de Bayes afirma que P(Y = c|x) = P(X = x|Y = c)P(Y = c) ∑s∈C P(X = x|Y = s)P(Y = s) . Nesse caso, poderíamos assumir que Xj|Y =c ∼ Multinomial(1,θj,c), em que θj,c ∈Rq é um vetor com q dimensões, o número de categorias que Xj assume. Novamente, os parâmetros dessa distribuição podem ser estimados via o método da máxima verossimilhança. Observação 8.1. Na implementação do Bayes ingênuo para dados contínuos, calcu- lar produtos como ∏d k=1 b f (xk|Y = c) é numericamente desafiador, pois cada termo é, em geral, muito próximo de zero. Dessa forma, o produto é aproximado por 0 pelo computador. Uma forma de solucionar esse problema é trabalhar com logaritmos. Para isso, note que o classificador plugin com probabilidades estimadas pelo método 145
  • 166.
    8.1. Classificadores Plug-in X1X2 Xd−1 Xd Y ... Figura 8.1: Rede Bayesiana que corresponde ao Bayes ingênuo. Bayes ingênuo pode ser escrito como g(x) = argmax c∈C b P(Y = c|x) = argmax c∈C b f (x|Y = c)b P(Y = c) = argmax c∈C d ∏ k=1 b f (xk|Y = c) ! b P(Y = c) = argmax c∈C d ∑ k=1 log b f (xk|Y = c) + log b P(Y = c), uma vez que o logaritmo é uma função monotônica crescente. Assim, não é necessá- rio calcular b f (x|Y = c) diretamente para avaliar a decisão tomada. Uma versão muito mais geral do método Bayes ingênuo é o de redes Bayesia- nas (Pearl, 2014). De fato, Bayes ingênuo é a rede particular mostrada na Figura 8.1. Uma grande vantagem da abordagem de redes Bayesianas é lidar facilmente com covariáveis faltantes, uma vez que essas redes modelam a distribuição conjunta f (y,x). Para dados discretos, pode-se ajustar o método Bayes ingênuo utilizando-se a função naiveBayes no pacote e1071 do R. Exemplo 8.1 (Detecção de SPAMs). Neste exemplo, consideramos o conjunto de dados Spambase, disponível do repositório do UCI2. Esse conjunto contém informa- ções relativas a n = 4.601 emails. Nesses emails foram medidas a frequência rela- tiva (isto é, qual a proporção de vezes que essa palavra aparece em cada email) de 2https://archive.ics.uci.edu/ml/datasets/Spambase. 146
  • 167.
    Capítulo 8. Métodosde classificação 57 palavras, como internet, free, credit, money, data, technology, direct entre outras. Também foi verificado se cada email era ou não era SPAM (va- riável resposta). A Tabela 8.1 apresenta o erro preditivo estimado em um conjunto de teste de tamanho 600 para três classificadores. Tabela 8.1: Riscos estimados e erros-padrão de alguns estimadores para o Exemplo 8.1. Método Regressão Linear Regressão Logística Naive Bayes Risco Estimado 0.111 0.086 0.188 Erro Padrão 0.020 0.020 0.020 8.1.4 Análise Discriminante Enquanto o método de Bayes ingênuo assume que a distribuição condicional das covariáveis pode ser fatorada como f (x|Y = c) = f (x1,...,xd|Y = c) = ∏d j=1 f (xj|Y = c), outras suposições podem ser feitas de modo a estimar essa quantidade. Na aná- lise discriminante, supõe-se que o vetor X, condicional em Y = c, possui distribuição normal multivariada. Existem duas formas de análise discriminante mais comuns. Essas formas serão estudadas nas próximas seções. 8.1.4.1 Análise Discriminante Linear Na análise discriminante linear assume-se que cada distribuição condicional X|Y = c segue uma distribuição normal multivariada. Embora essas distribuições possam ter médias diferentes, a matriz de covariância é a mesma para todas as distribuições. Assim, assume-se que X = (X1,...,Xd)|Y = c ∼ Normal(µc,Σ), isto é, f (x|Y = c) = 1 p (2π)d|Σ| e−(x−µc)|Σ−1(x−µc) . 147
  • 168.
    8.1. Classificadores Plug-in Pode-seestimar os parâmetros dessa distribuição utilizando-se o método da má- xima verossimilhança. Com isso, obtêm-se b µc = 1 |Cc| ∑ k∈Cc Xk; b Σ = 1 n ∑ c∈C ∑ k∈Cc (xk − b µc)(xk − b µc)| em que Cc = {j = 1,...,n : Yj = c}. Como no método Bayes ingênuo, utiliza-se as estimativas de b f (x|Y = c) para construir o classificador plugin g(x) = argmax c∈C b P(Y = c|x) = argmax c∈C b f (x|Y = c)b P(Y = c). Para o caso binário, tem-se que a regra de classificação é g(x) = 1 se, e só se, b P(Y = 1|x) b P(Y = 0|x) ≥ K ⇐⇒ b f (x|Y = 1)b P(Y = 1) b f (x|Y = 0)b P(Y = 0) ≥ K ⇐⇒ log b f (x|Y = 1) − log b f (x|Y = 0) ≥ logK + log b P(Y = 0) − log b P(Y = 1) ⇐⇒ −(x − b µ1)|b Σ−1 (x − b µ1) + (x − b µ0)|b Σ−1 (x − b µ0) ≥ K0 ⇐⇒ +2x|b Σ−1 b µ1 − b µ| 1 b Σ−1 b µ1 − 2x|b Σ−1 b µ0 + b µ| 0 b Σ−1 b µ0 ≥ K0 ⇐⇒ ax| ≥ K00 , em que a, K, K0 e K00 são constantes3. Assim, a região do espaço amostral em que a regra de decisão consiste em g(x) = 1 é um hiperplano de Rd. É por esse motivo que o método recebe o nome de análise discriminante linear. Veja uma ilustração dessa região no Exemplo 8.2. A análise discriminante linear pode ser ajustada no R via o pacote MASS: library(MASS) lda_fit - lda(x = X_treino, grouping = y_treino) lda_pred - predict(lda_fit, newdata = X_novo) # previsões lda_pred$posterior # contém as estimativas de P(Y=c|x) 3Até aqui estamos tomando K = 1, mas na Seção 9.1 veremos que esse corte pode ser diferente. 148
  • 169.
    Capítulo 8. Métodosde classificação Assim como nos outros métodos preditivos vistos, não acreditamos necessaria- mente na suposição de normalidade, mas ela é apenas utilizada para obter um clas- sificador com poder preditivo potencialmente bom. 8.1.4.2 Análise Discriminante Quadrática A suposição feita pela análise discriminante quadrática também é de normali- dade multivariada. Contudo, cada distribuição condicional pode ter sua própria matriz de covariância. Assim, assume-se que X = (X1,...,Xd)|Y = c ∼ Normal(µc,Σc), isto é, f (x|Y = c) = 1 p (2π)d|Σc| e−(x−µc)|Σ−1 c (x−µc) . Novamente, pode-se estimar esses parâmetros pelo método da máxima verossi- milhança: b µc = 1 |Cc| ∑ k∈Cc Xk; b Σc = 1 |Cc| ∑ k∈Cc (xk − b µc)(xk − b µc)| em que Cc = {j = 1,...,n : Yj = c}. Como na análise discriminante linear, as estimativas de b f (x|Y = c) são utilizadas para construir o classificador plugin g(x) = argmax c∈C b P(Y = c|x) = argmax c∈C b f (x|Y = c)b P(Y = c). Para o caso binário, tem-se que a regra de classificação é g(x) = 1 se, e só se, b P(Y = 1|x) b P(Y = 0|x) ≥ K ⇐⇒ b f (x|Y = 1)b P(Y = 1) b f (x|Y = 0)b P(Y = 0) ≥ K ⇐⇒ log b f (x|Y = 1) − log b f (x|Y = 0) ≥ logK + log b P(Y = 0) − log b P(Y = 1) ⇐⇒ −(x − b µ1)|c Σ1 −1 (x − b µ1) + (x − b µ0)|c Σ0 −1 (x − b µ0) ≥ K0 . Assim, a região do espaço amostral Rd em que a regra de decisão é g(x) = 1 é 149
  • 170.
    8.1. Classificadores Plug-in dadapor uma equação quadrática. É por esse motivo que o método recebe o nome de análise discriminante quadrática. Veja uma ilustração desta região no Exemplo 8.2. Exemplo 8.2. A Figura 8.2 mostra, em um exemplo simulado, as classificações dadas pela análise discriminante linear e quadrática para o conjunto de teste apresentado na Figura 8.3. Nesse caso, a análise discriminante quadrática leva a classificações melhores. (a) Análise Discriminante Linear (b) Análise Discriminante Quadrática Figura 8.2: Valores preditos pela análise discriminante linear e valores preditos pela análise discriminante quadrática no Exemplo 8.2. Figura 8.3: Conjunto de teste com os rótulos observados utilizados no Exemplo 8.2. 150
  • 171.
    Capítulo 8. Métodosde classificação A análise discriminante quadrática pode ser ajustada no R via pacote MASS: library(MASS) qda_fit - qda(x = X_treino, grouping = y_treino) qda_pred - predict(qda_fit, newdata = X_novo) # previsões qda_pred$posterior # contém as estimativas de P(Y=c|x) 8.2 Support Vector Machines (SVM) Navego pela memória sem margens. Cecília Meireles Support vector machines (SVM) é uma metodologia de classificação proposta por Cortes e Vapnik (1995) que leva a resultados excelentes em muitas aplicações. Essa técnica utiliza uma motivação muito diferente daquela associada aos classificadores vistos até aqui. No SVM, em nenhum momento estimamos as probabilidades P(Y = c|x); o resultado dessa técnica indica as classes estimadas de novas observações. Vamos assumir nessa seção que Y assume valores em C = {−1,1}. Considere uma função linear f (x) := β0 + β1x1 + ... + βdxd. O classificador g(x) dado pelo SVM tem a seguinte forma:    Se f (x) 0, g(x) = −1 Se f (x) ≥ 0, g(x) = 1 (8.1) Para descrever como construir f (x), suponha que as observações sejam linear- mente separáveis, ou seja, existe um hiperplano que separa perfeitamente todas as observações do conjunto de treinamento de acordo com a classe (veja um exemplo na Figura 8.4). 151
  • 172.
    8.2. Support VectorMachines (SVM) Figura 8.4: Exemplo de conjunto de dados no qual existe um hiperplano que os separa perfeitamente bem. Nesse caso, existe f (x) linear tal que f (xi) 0 se, e só se, yi = −1. Assim, pode- mos escrever para todo i = 1,...,n, yi(β0 + β1xi,1 + ... + βdxi,d) = yi f (xi) 0. (8.2) Quando existem muitos hiperplanos que separam os dados perfeitamente (ou seja, quando há várias funções f tais que a Eq. 8.2 está satisfeita), o SVM busca por aquele que tem maior margem M (ver Figura 8.5), isto é, aquele que fica mais dis- tante” de todos os pontos observados. Os pontos utilizados para definir as margens são chamados de vetores de suporte. Assim, no caso de haver um hiperplano que separa perfeitamente bem os dados, buscamos o hiperplano com coeficientes β tais que β = argmax β M sujeito às restrições (1) ∑d i=1 β2 i = 1 e 152
  • 173.
    Capítulo 8. Métodosde classificação Figura 8.5: Exemplo de aplicação do SVM destacando os vetores de suporte e a mar- gem. (2) para todo i = 1,...,n, yi fβ(xi) ≥ M. A restrição (1) garante a comparabilidade dos diferentes hiperplanos em termos de sua norma e com essa restrição é possível mostrar que |f (x)| = yi f (xi) é a distân- cia entre a observação e o hiperplano. É importante notar que, além de assumir a existência de um hiperplano que se- para perfeitamente os dados, essa formulação é muito sensível a pequenas mudanças nos dados. Na Figura 8.6 apresentamos as margens com os dados apresentados na Figura 8.4 alterando apenas uma observação no conjunto de dados. Apresentamos uma solução que considera que os dados sejam linearmente se- paráveis. No entanto, em diversas situações isso não ocorre. Assim, a formulação utilizada pelo SVM se propõe a resolver uma generalização do problema descrito anteriormente, de modo que seja permitido que alguns dos pontos estejam do lado errado” das margens (e eventualmente do hiperplano). Matematicamente, o SVM busca pela solução de argmax β M 153
  • 174.
    8.2. Support VectorMachines (SVM) Figura 8.6: Exemplo de alteração nos vetores de suporte e margem devido a somente uma observação. sujeito às restrições (1) ∑d i=1 β2 i = 1 e (2) para todo i = 1,...,n, yi fβ(xi) ≥ M(1 − ei), em que ei 0 e ∑n i=1 ei ≤ C. Note que ei pode ser maior que um, de modo que é permitido que yi fβ(xi) seja negativo, ou seja, que a i-ésima amostra fique do lado errado do hiperplano. O quão longe ela fica, contudo, é limitado por C, uma vez que ei não pode ser maior que C. Assim, C é hiperparâmetro (tuning parameter): quanto maior é seu valor, mais se permite que observações estejam do lado errado” das margens. Utilizando-se o truque do kernel (Seção 4.6.3.2), pode-se buscar por divisões mais complexas que hiperplanos. A ideia central é que a solução ótima f (x) do SVM pode ser reescrita como f (x) = β0 + β1x1 + ... + βdxd = β0 + n ∑ k=1 αkhx,xki, (8.3) em que hx,xki = ∑d i=1 xixk,i. Assim, para calcular f (isto é, os coeficientes αk), tudo o que precisamos é do produto interno entre todas as observações. Pode-se também mostrar que, para calcular αk, também necessita-se apenas dos produtos internos en- tre as observações. Podemos, portanto, trocar hx,xki por um kernel genérico K(x,xk) e, assim, utilizar o truque do kernel. Além disso, para todos os pontos que não são 154
  • 175.
    Capítulo 8. Métodosde classificação vetores de suporte, os valores de αi serão iguais a zero. Dessa forma, podemos rees- crever a Equação 8.4 como: f (x) = β0 + ∑ k∈S αkhx,xki, (8.4) em que S indica o conjunto de todos os vetores de suporte. Support Vector Machines também estão ligados a Reproducing Kernel Hilbert Spaces (Seção 4.6). Pode-se mostrar que, dado um kernel de Mercer K, o classificador g dado pelo SVM é aquele que minimiza arg min g∈HK n ∑ k=1 L(g(xk),yk) + λ||g||2 HK , em que L(g(xk),yk) = (1 − ykg(xk))+ (Pontil, 2003). Assim, pode-se utilizar o Te- orema da Representação (Teorema 6) para encontrar os valores dos coeficientes αk da Equação 8.4. Note que a perda L é zero quando yg(x) 1. No caso linear, essa restrição indica que (x,y) está do lado correto do hiperplano definido por g e x está a uma distância de ao menos 1/||g||K do hiperplano. Ou seja, a perda é zero quando o exemplo é classificado corretamente de forma fácil. Note também que, no caso separável, essa função objetivo indica (como esperado) que o SVM procura, entre todos os hiperplanos separados, aquele com maior margem (isto é, maior valor de 1/||g||K). O ajuste do SVM pode ser feito no R via o pacote e1071. library(e1071) # Kernel Linear tune_out - tune(svm, train.x = X_treino, train.y = y_treino, kernel = linear, scale = TRUE, ranges = list(cost = c(0.001,0.01,0.1,1,10))) plot(tune_out) melhor_modelo - tune_out$best.model y_pred - predict(melhor_modelo, X_teste) 155
  • 176.
    8.3. Árvores deClassificação # Kernel Gaussiano tune_out - tune(svm, train.x = X_treino, train.y = y_treino, kernel = radial, scale = TRUE, ranges = list(cost = c(5,10,20), gamma = c(0.001,0.01,0.05))) plot(tune_out) melhor_modelo - tune_out$best.model y_pred - predict(melhor_modelo, X_teste) 8.3 Árvores de Classificação Árvores de regressão podem ser utilizadas para resolver problemas de classifica- ção considerando a ideia descrita na Seção 8.1.1. Alternativamente, pode-se utilizar árvores de classificação, que são o análogo de árvores de regressão (Seção 4.8), mas com a finalidade específica de se fazer classificação. Sua construção se dá de forma análoga à descrita naquela seção. Em particular, o processo de criar uma árvore grande e depois podá-la também ocorre. No entanto, é necessário fazer algumas adaptações. Primeiramente, a predição para a resposta Y de uma observação com covariáveis x que estão em uma região Rk não é mais dada pela média amostral das observações do conjunto de treinamento que pertecem à essa região (Equação 4.19), mas sim pela moda destas: g(x) = moda{yi : xi ∈ Rk}. (8.5) Além disso, o critério utilizado para buscar a melhor partição em cada etapa do processo (I) também é diferente, uma vez que o erro quadrático (por exemplo, Equação 4.20) já não faz mais sentido. Um critério muito utilizado é o índice de Gini: ∑ R ∑ c∈C b pR,c(1 − b pR,c), em que R representa uma das regiões induzidas pela árvore e b pR,c é a proporção de observações classificadas como sendo da categoria c entre as que caem na região R. 156
  • 177.
    Capítulo 8. Métodosde classificação Este índice é mínimo quando todas as proporções b pR,c são zero ou um, indicando assim uma árvore pura” (isto é, cada folha contém somente observações de uma única classe). Portanto, na prática, busca-se minimizar esse índice. Exemplo 8.3. Para ilustrar uma aplicação do índice de Gini, considere a situação em que se deseja predizer se um hospital possui tomógrafo. Para isso contamos com informações sobre a presença de especialidade em cardiologia e se o hospital apresenta mais de 100 leitos. Os dados são apresentados na Tabela 8.2. Tabela 8.2: Dados fictícios do Exemplo 8.3. Cardiologia Acima de 100 leitos Possui tomógrafo Sim Sim Sim Sim Não Sim Sim Sim Não Sim Não Não Não Sim Sim Não Sim Sim Não Não Não Não Não Não Não Sim Sim Não Sim Sim Assim, para determinar qual será a melhor partição (cardiologia ou acima de 100 leitos), utilizaremos o índice de Gini. Lembre-se que queremos determinar a partição que apresenta a maior pureza”, ou seja, o menor valor do índice. Dessa forma, teremos: • Gini(Cardiologia) = 2 4 × 2 4 + 4 6 × 2 6 = 0.472 • Gini(Leitos) = 5 6 × 1 6 + 1 4 × 3 4 = 0.326 Logo, a partição que apresenta a maior pureza” é dada pela partição da variável leitos. Observação 8.2. À primeira vista, pode-se estranhar o fato do índice de Gini ser utilizado ao invés de, por exemplo, a proporção de erros. O motivo desta escolha é 157
  • 178.
    8.4. Bagging eFlorestas Aleatórias que o índice de Gini é mais sensível a mudanças nas proporções de cada categoria nos nós. Para a etapa da poda, em geral, utiliza-se a proporção de erros no conjunto de validação como estimativa do risco. Assim como em árvores de regressão, podemos fazer árvores de classificação no R utilizando o pacote rpart. set.seed(123) library(rpart) # Ajustar a árvore: fit - rpart(Species ~ ., method = class, data = iris) # poda: melhor_cp - fit$cptable[which.min(fit$cptable[, xerror]), CP] pfit - rpart::prune(fit, cp = melhor_cp) # plotar árvore podada rpart.plot(pfit) A Figura 8.7 ilustra a árvore gerada pelo código acima no R. 8.4 Bagging e Florestas Aleatórias Tanto o bagging quanto florestas aleatórias, vistos no contexto de regressão na Se- ção 4.9, podem ser trivialmente adaptados para classificação. Para tanto, a agregação das diferentes árvores de classificação é feita através da função g(x) = moda{gb (x),b = 1,...,B} 158
  • 179.
    Capítulo 8. Métodosde classificação Figura 8.7: Árvore de classificação já podada. ou seja, uma observação com covariáveis x é classificada por cada árvore construída e, posteriormente, a predição é dada pela categoria predita com maior frequência. No R, isso é feito pelo pacote randomForests ou ranger. 8.5 Boosting Assim como no boosting de regressão (Seção 4.10), métodos de boosting também podem ser utilizados para agregar classificadores fracos de forma a construir um classificador mais poderoso. Aqui descreveremos uma forma de boosting específica, o Adaboost.M1 (Freund e Schapire, 1995). Para tanto, assuma que yi ∈ {−1,1} e x ∈ Rp. Lembre-se que, nesse contexto, utilizaremos classificadores sequenciais gb(x) com b = 1,...,B. Portanto, o b-ésimo classificador dependerá diretamente do (b − 1)- ésimo classificador. A seguir, apresentamos o algoritmo para obter o classificador. 1. Inicialize os pesos w1 = ... = wn = 1 n . Note que, inicialmente, todas as obser- vações recebem o mesmo peso. 2. Para b = 1,...,B: (a) Ajuste um classificador gb(x) para a amostra de treinamento utilizando os pesos w1,...,wn (b) Calcule o erro ponderado errb = ∑n i=1 wiI(yi,gb(xi)) ∑n i=1 wi , (c) Calcule αb = log((1 − errb)/errb) 159
  • 180.
    8.5. Boosting Figura 8.8:Peso do b-ésimo classificador em função do erro ponderado. (d) Atualize wi ← wi exp{αbI(yi , gb(xi))}, i = 1,...,n 3. Retorne o modelo final g(x) = sinal ∑B b=1 αbgb(x) Em geral, o passo 2a) desse método é executado utilizando-se um classificador bastante simples, como por exemplo uma árvore com 4 folhas. Já o passo 2c) apre- senta o peso que o b-ésimo classificador terá no classificador combinado. Note que, quanto maior a proporção de erro do classificador, menor o peso ele terá na combina- ção final (Figura 8.8). Em particular, se errb 50%, então αb 0, ou seja, as predições de gb são invertidas no classificador final. Esta inversão se dá pois o classificador −gb tem erro menor que 50% nesta situação. A atualização dos pesos dada por wi ← wi exp(αbI(yi , gb(xi))) tende a fazer com que observações classificadas erroneamente por gb recebam peso maior no ajuste de gb+1. Já as observações classificadas corretamente permanecem com peso wi pois, nesse caso, wi ← wi exp(αbI(yi , gb(xi))) = wi exp(αb × 0) = wi. Para se ajustar o adaboost no R, pode-se utilizar o pacote gbm. library(gbm) ajuste - gbm.fit(x = X_treinamento, y = y_treinamento, n.trees = 100, interaction.depth = 1, 160
  • 181.
    Capítulo 8. Métodosde classificação distribution = adaboost) predito - predict(ajuste, newdata = X_teste, n.trees = ajuste$n.trees) 8.6 Método dos k Vizinhos Mais Próximos O método do KNN (Seção 4.3) pode ser trivialmente adaptado para o contexto de classificação. Para tanto, pode-se definir o classificador g(x) = modai∈Nx yi, em que Nx é o conjunto das k observações mais próximas de x (como definido na Seção 4.3). Assim, busca-se a classe mais frequentemente entre as observações mais próximas ao vetor de covariáveis x de interesse. No R, esse método pode ser utilizado pelo pacote FNN. library(FNN) ajuste - knn(train = X_treinamento, test = X_teste, cl = y_treinamento, k = k) preditos - ajuste$pred 8.7 Redes Neurais Artificiais Redes neurais artificiais (Seção 4.11) também podem ser utilizadas no contexto de classificação. A estrutura da rede é essencialmente a mesma, contudo, em geral, há algumas diferenças: • Ao invés de buscar apenas uma função de predição gβ, estima-se |C| funções, gβ,1,...,gβ,|C|, uma para cada categoria que a variável resposta pode assumir, 161
  • 182.
    8.7. Redes NeuraisArtificiais veja a Figura 8.9. A i-ésima dessas funções representa a probabilidade de Y assumir a categoria i, i = 1,...,|C|. • Utiliza-se uma função de ativação f diferente da linear na camada de saída. Pode-se utilizar, por exemplo, a função softmax: fi(z) = ezi ∑ |C| j=1 ezj . Aqui, z representa o vetor que contém todas as entradas na última camada e fi é a função de ativação do i-ésimo neurônio da camada de saída. Essa função de ativação garante que as saídas estejam entre zero e um e que o vetor some 1. • A função objetivo a ser minimizada também não é mais o EQM. Pode-se utili- zar, por exemplo, a entropia cruzada, dada por CE(gβ,1,...,gβ,|C|) = − 1 n n ∑ k=1 ∑ c∈C I(yk = c)log(gβ;c(xk)) x1 x2 x3 gβ;1(x) gβ;2(x) gβ;3(x) gβ;4(x) Camada Oculta Camada de entrada Camada de saída Figura 8.9: Exemplo de rede neural de classificação com uma camada oculta no caso em que Y assume quatro possíveis valores. 162
  • 183.
    Capítulo 8. Métodosde classificação 8.8 Exemplos Exemplo 8.4 (Amazon Fine Food Reviews). A seguir iremos trabalhar novamente com o conjunto de dados Amazon Fine Food Reviews (apresentado no Exemplo 3.3). No entanto, nesse momento, trabalharemos com as notas categorizadas em máxima (escore igual a 5) vs demais (escore de 0 a 4). Nesse exemplo utilizaremos 40.000 observações de treinamento e 10.000 de vali- dação. Iremos utilizar regressão logística com máxima verossimilhança, penalização ridge e penalização lasso. Também utilizaremos árvore e floresta para a classificação. library(data.table) library(tm) library(glmnet) library(rpart) library(rpart.plot) library(xgboost) library(ranger) Primeiramente, faremos a leitura e transformação dos dados em uma matriz documento-termo (Apêndice A.2). dados - fread(../dados/Reviews.csv, header = TRUE) set.seed(1) # seleciona 50.000 observações dados - dados[sample(nrow(dados), 50000),] # indica observações de treinamento tr - sample.int(50000, 40000, replace = FALSE) # categoriza escore dados$Score - ifelse(dados$Score = 4, 0, 1) corp - VCorpus(VectorSource(dados$Text)) dtm - DocumentTermMatrix(corp, 163
  • 184.
    8.8. Exemplos control = list(tolower= TRUE, stemming = FALSE, removeNumbers = TRUE, removePunctuation = TRUE, removeStripwhitespace = TRUE, weighting = weightTf, bounds = list(global = c(50, Inf)))) dtmMatrix - sparseMatrix(i = dtm$i, j = dtm$j, x = dtm$v, dimnames = list(NULL, dtm$dimnames[[2]]), dims = c(dtm$nrow, dtm$ncol)) Após a leitura dos dados, iremos ajustar os modelos de regressão logística com mínimos quadrados, ridge e lasso. Iremos atribuir a classe de escore 5 aos indiví- duos do conjunto de validação que apresentarem probabilidade dessa classe maior ou igual a proporção de escore 5 no conjunto de treinamento (veja a Seção 9.1 para uma justificativa para esse critério). Note que, para essas técnicas, estamos utili- zando o formato esparso para a matrix documento-termo. # logística sem penalização ajuste_glm - glmnet(dtmMatrix[tr,], dados$Score[tr], family = binomial, alpha = 0, lambda = 0) predito_glm - ifelse(predict(ajuste_glm, s = 0, newx = dtmMatrix[-tr,], type = response) = mean(dados$Score[tr]), 1, 0) # logística com penalização ridge vc_ridge - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], family = binomial, alpha = 0) 164
  • 185.
    Capítulo 8. Métodosde classificação predito_ridge - ifelse(predict(vc_ridge, s = vc_ridge$lambda.1se, newx = dtmMatrix[-tr,], type = response) = mean(dados$Score[tr]), 1, 0) # logística com penalização lasso vc_lasso - cv.glmnet(dtmMatrix[tr,], dados$Score[tr], family = binomial, alpha = 1) predito_lasso - ifelse(predict(vc_lasso, s = vc_lasso$lambda.1se, newx = dtmMatrix[-tr,], type = response) = mean(dados$Score[tr]), 1, 0) Para a árvore de classificação, será necessário fazer uma conversão para um data.frame. dtmMatriz - data.frame(as.matrix(dtmMatrix)) # organiza dados para o formato utilizado em rpart dtmMatrixArvore - cbind(Score = as.factor(dados$Score), dtmMatriz) # ajuste da arvore arvore - rpart(Score ~., method = class, data = dtmMatrixArvore[tr,]) # poda min_error - which.min(arvore$cptable[,xerror]) melhorCp - arvore$cptable[min_error, CP] poda - rpart::prune(arvore, cp = melhorCp) 165
  • 186.
    8.8. Exemplos Figura 8.10:Árvore de classificação já podada para os dados da Amazon Fine Food Reviews. # predito árvore predito_arvore - predict(poda, dtmMatrixArvore[-tr, -1], type = class) # arvore rpart.plot(poda, type = 4, extra = 102) A Figura 8.10 ilustra a árvore podada gerada pelo código acima. Nessa figura, o primeiro número na forma geométrica indica a classe a qual o indivíduo é clas- sificado em cada nó/folha, o número de classificações corretas em cada nó com o número de classificações em cada nó e, por fim, a porcentagem de observações em cada nó relativa ao total. Para ajustar a floresta aleatória, utilizamos o pacote ranger. 166
  • 187.
    Capítulo 8. Métodosde classificação Figura 8.11: Importância obtida com floresta aleatória para os dados da Amazon Fine Food Reviews. floresta - ranger(Score ~ ., data = dtmMatrixArvore[tr,], num.trees = 500, importance = impurity, write.forest = TRUE, verbose = FALSE) predito_floresta - predict(floresta, data = dtmMatrixArvore[-tr, -1]) A Figura 8.11 mostra a importância das dez covariáveis mais importântes se- gundo florestas aleatórias. Ajustaremos o boosting via o pacote xgboost. bst - xgboost(data = dtmMatrix[tr,], label = dados$Score[tr], nthread = 7, nround = 1000, objective = binary:logistic, verbose = FALSE,lambda = 0.01) predicoes - predict(bst, dtmMatrix[-tr,]) predito_bst - ifelse(predicoes mean(dados$Score[tr]), 1, 0) 167
  • 188.
    8.8. Exemplos A Tabela8.3 mostra que regressão logística, regressão logística com penalização ridge e regressão logística com penalização lasso apresentam um desempenho muito semelhante, com uma ligeira vantagem para lasso. A árvore apresentou o pior de- sempenho geral e de especificidade entre todas as técnicas, embora tenha apresen- tado a segunda melhor sensibilidade. A floresta apresenta um desempenho geral muito próximo ao das três técnicas citadas anteriormente. No entanto, apresenta uma sensibilidade melhor e uma baixa especificidade. Já XGBoost apresentou o me- lhor dos resultados com respeito à porcentagem total de acerto. Tabela 8.3: Desempenho preditivo (em porcentagem) dos métodos Mínimos Qua- drados, Ridge, Lasso, Árvore e XGBoost. Método Acurácia Sensibilidade Especificidade Logística MV 78.5 80.0 75.9 Logística Ridge 79.9 81.0 77.8 Logística Lasso 79.5 80.3 78.2 Árvore 68.8 88.6 34.1 Floresta Aleatória 81.1 93.6 59.3 XGBoost 81.7 84.6 76.7 168
  • 189.
    Capítulo 9 Outros Aspectosde Classificação 9.1 Assimetria na Função de Perda, Conjuntos de Da- dos Desbalanceados e Outros Cortes Confidence is what you have before you understand the problem. Woody Allen Como discutimos na Seção 7.4, nem sempre o risco R(g) := E[I(Y , g(X))] = P(Y , g(X)) é razoável para avaliar o desempenho do classificador g. Isso acontece porque a função de perda I(g(X) , Y) atribui perda 1 para todo tipo de erro come- tido. Isso não é adequado em muitas situações. Por exemplo, erros de diferentes tipos podem ter diferentes custos. Considere o exemplo em que temos pacientes do- entes (Y = 1) e saudáveis (Y = 0). Neste caso, se desejamos fazer um classificador para screening da doença, queremos um classificador que não classifique de forma er- rada pacientes que têm a enfermidade, enquanto que o erro oposto não é tão grave. Assim, a função de perda I(g(X) , Y) não captura esse objetivo. De fato, se a doença é rara e as covariáveis não tem informação muito forte sobre Y, P(Y = 1|x) será sem- pre pequena e, portanto, o classificador de Bayes (I(P(Y = 1|x) ≥ 0.5)) será o clas- 169
  • 190.
    9.1. Assimetria naFunção de Perda, Conjuntos de Dados Desbalanceados e Outros Cortes sificador trivial g(x) ≡ 0. Como métodos de classificação frequentemente buscam aproximar o classificador de Bayes, naturalmente eles também irão se aproximar do classificador trivial neste caso. Existem diversas formas de contornar este problema. Uma abordagem comum consiste em buscar cortes diferentes de 1/2 em classificadores probabilísticos, isto é, buscar regras do tipo g(x) = I(b P(Y = 1|x) ≥ K) para diferentes cortes K. Uma forma de escolher K se dá com a utilização da curva ROC (Receiver operating characteristic), que mostra como a sensibilidade varia com a especificidade para diferentes valores de K. Para um exemplo, veja a Figura 9.1. Note que, para evitar que a sensibilidade e especificidade sejam subestimadas, esse gráfico deve ser feito com o conjunto de validação ou teste, nunca com o de treinamento. É comum escolher K que maximize o valor de Sensibilidade+Especificidade, embora esta não seja a única abordagem existente. Diferentes classificadores podem dar importâncias diferentes para essas medidas. Alternativamente, pode-se definir o risco com base em outra outra função de perda que considere que erros diferentes podem ser penalizados de forma distinta. Por exemplo, pode-se tomar R(g) = E[(l1I(Y , g(X) e Y = 0)) + (l0I(Y , g(X) e Y = 1))] = = l1P(Y , g(X) e Y = 0) + l0P(Y , g(X) e Y = 1), em que l1 e l0 são pesos (custos) escolhidos para cada um dos tipos de erro. A função g(x) que minimiza R(g) é dada por g(x) = I P(Y = 1|x) l1 l0 + l1 . Essa fórmula mostra como o corte de classificadores plugin podem ser escolhidos de acordo com os pesos dos diferentes tipos de erro que podem ser cometidos1. Em particular, se escolhemos l0 = π0 (a probabilidade de uma observação perten- cer à classe Y = 0) e l1 = π1 (a probabilidade de uma observação pertencer à classe Y = 1) em um contexto em que P(Y = 0) P(Y = 1), esse risco dá maior im- 1A ideia de atribuir custos diferentes pode também ser usada no caso em que Y pode assumir mais que duas categorias. Neste caso, o classificador ótimo tem o formato argmind∈C cdP(Y = d|x), em que cd é função dos custos especificados. 170
  • 191.
    Capítulo 9. OutrosAspectos de Classificação Figura 9.1: Exemplo de curva ROC da análise discriminante linear para o conjunto de dados de spams do Exemplo efex::spam portância do erro de uma observação da classe 1 ser classificada como pertencente à classe 0 e menor importância ao erro de uma observação da classe 0 ser classi- ficada como pertencente à classe 1. Nesse caso, a função g(x) que minimiza R(g) é dada por g(x) = I(P(Y = 1|x) π1). Isso motiva o uso do classificador plugin I(b P(Y = 1|x) ≥ b P(Y = 1)) em que b P(Y = 1) é a proporção amostral da classe de interesse. Ou seja, ao invés de se utilizar 1/2 como corte, utiliza-se b P(Y = 1). Para classificadores que não são baseados na estimação de P(Y = 1|x), outras abordagens são utilizadas. Por exemplo, a atribuição de pesos maiores a observa- ções da categoria menos frequente. Esses pesos são então utilizados de modo que a contribuição de cada observação na criação do classificador seja proporcional ao peso por ela recebida. A forma como estes pesos são utilizados depende do método de classificação em questão. Também é possível alterar artificialmente a prevalência de cada categoria na amostra de treinamento com super-sampling ou sub-sampling. Mesmo que essas abordagens sejam úteis, é importante lembrar que a fonte do pro- blema não é o desbalanceamento, mas sim os custos de classificação serem diferen- tes, de modo que o classificador de Bayes não é um bom classificador (já que ele é criado para minimizar apenas a probabilidade de erro). 171
  • 192.
    9.3. Dataset Shifte Viés de Seleção 9.2 Classificação vs Estimação de Probabilidades Hope is the confusion of the desire for a thing with its probability. Arthur Schopenhauer Embora classificadores plug-in requeiram uma estimativa de P(Y = 1|x), uma estimativa que leva a boas classificações não é necessariamente uma estimativa ra- zoável. Isso ocorre pois um classificador plug-in pode estar muito próximo ao clas- sificador de Bayes mesmo sem que b P ≈ P: para o classificador plug-in, basta saber se uma probabilidade estimada é menor ou maior que o corte C. Assim, sempre que b P(Y = 1|x) − C tem o mesmo sinal que P(Y = 1|x) − C, o classificador plug-in concorda com o classificador de Bayes nesta observação. Em muitas situações, diferente do objetivo comentado anteriormente, é impor- tante estimar P bem. Por exemplo, frequentemente desejamos ordenar as observa- ções segundo b P para tomar decisões. Outra aplicação se dá inferência conformal (Seção 6.3), em que a consistência de b P é necessária para criar regiões de predições pequenas. Assim, se o objetivo é estimar bem P, outras funções de perda devem ser utilizadas como, por exemplo, a entropia cruzada (log-verossimilhança) ou o score de Brier, que são medidas próprias (Diniz et al., 2019; Lad, 1996). Em particular, é comum a utilização desses critérios para escolher tuning parameters para métodos de classificação probabilísticos, como na regressão logística com penalização. 9.3 Dataset Shift e Viés de Seleção I have not failed. I’ve just found 10,000 ways that won’t work. Thomas Edison Em uma parcela significativa de problemas de predição, a suposição básica de que as observações onde um classificador será aplicado são identicamente distribuí- das às observações rotuladas utilizadas para construir g não é razoável. Esta situação é chamada de dataset shift (Sugiyama et al., 2017). Muitas vezes, o dataset shift ocorre devido a um viés de seleção que faz com que os dados rotulados tenham características diferentes daqueles em que os classificadores 172
  • 193.
    Capítulo 9. OutrosAspectos de Classificação serão aplicados. Por exemplo, em pesquisas cosmológicas que para estimar a distân- cia de uma galáxia até a Terra (Exemplo 1.2), é muito mais fácil observar a distância real de galáxias que são luminosas (Freeman et al., 2017; Izbicki et al., 2017) do que galáxias pouco luminosas. Isso faz com que o conjunto rotulado tenha mais galáxias luminosas que o conjunto ao qual os métodos de predição serão aplicados. Dataset shift também pode ocorrer quando se utiliza dados de um certo domínio (por exemplo, resenhas da Amazon) para criar um classificador que será aplicado em outro domínio (por exemplo, textos do Twitter). Para que seja possível aprender algo com o conjunto rotulado, é necessário fa- zer algumas suposição sobre como esse conjunto se relaciona ao conjunto em que o classificador será aplicado. Nesta seção descreveremos duas suposições: covariate shift (Seção 9.3.1) e prior shift (Seção 9.3.2). Em ambas as seções, assumiremos que o conjunto rotulado é dado por observações i.i.d.’s (XL 1 ,YL 1 ),...,(XL nL ,YL nL ), enquanto o conjunto em que a função de predição será aplicada é dado por observações i.i.d.’s (XU 1 ,YU 1 ),...,(XU nU ,YU nU ). Note que os valores de YU 1 ,...,YU nU não são observados. 9.3.1 Covariate Shift A suposição de covariate shift consiste em assumir que YL|XL ∼ YU|XU, de modo que a distribuição conjunta de (XL,YL) difere de (XU,YU) apenas segundo a distri- buição marginal das covariáveis. Outra caracterização desta suposição é a de que o processo de escolha de que amostras serão rotuladas depende apenas das covariá- veis medidas (veja Izbicki et al. 2017 para maior detalhamento). À primeira vista, pode parecer que o covariate shift não é um problema para pro- blemas de predição: como a distribuição de Y|x é a mesma em ambos os conjuntos de dados, então P(YL = 1|xL) = P(YU = 1|xU). Assim, a quantidade P(YU = 1|xU), que é essencial para criar classificadores plug-in, é a mesma no conjunto rotulado e no conjunto de interesse. Note, contudo, que isso não implica que um estimador razoável de P(YL = 1|xL), segundo o conjunto rotulado, tenha bom desempenho no conjunto não-rotulado: frequentemente P(YL = 1|xL) estará bem estimado somente em regiões em que há bastantes dados rotulados, e essas regiões não necessariamente coincidem com regiões em que há bastantes dados não-rotulados; veja a Figura 9.2 para um exemplo no contexto de regressão. Levando em consideração apenas o con- junto rotulado, a reta azul parece ter bom desempenho, contudo isso não ocorre para o conjunto não-rotulado. 173
  • 194.
    9.3. Dataset Shifte Viés de Seleção Figura 9.2: Ilustração do covariate shift em uma regressão linear: a linha azul é ra- zoável para predizer novos dados do conjunto rotulado, mas ela está longe de ser ótima para o conjunto não-rotulado. Sob uma perspectiva estatística, o problema ocorre porque a função de risco uti- lizada para construir o método de predição depende da distribuição de X. Assim, um estimador que tem bom desempenho com respeito a fL(x) não necessariamente tem bom desempenho com respeito a fU(x). Em cenários com covariate shift, enfrentamos dois problemas: (i) como comparar métodos de predição (ii) como construir bons métodos de predição. Uma solução para ambos os problemas é atribuir pesos a cada observação ro- tulada de modo que a distribuição ponderada do conjunto rotulado seja próxima à distribuição do conjunto não-rotulado. Mais especificamente, a ideia chave para resolver (i) é notar que uma função de risco razoável é o risco sob a distribuição do conjunto não-rotulado, E[L(g(XU),YU)], em que L é uma função de perda (veja a Ob- servação 1.2). Sob a suposição de covariate shift, este se relaciona com a distribuição 174
  • 195.
    Capítulo 9. OutrosAspectos de Classificação do conjunto rotulado da seguinte maneira: R(g) := E[L(g(XU ),YU )] = Z L(g(x),y)fU(y|x)fU(x)dxdy = = Z L(g(x),y)fL(y|x) fU(x) fL(x) fL(x)dxdy = E h L(g(XL ),YL )β(XL ) i , (9.1) em que β(x) = fU(x) fL(x) . A função β(x) é responsável por ponderar cada observação x de acordo com sua frequência no conjunto não-rotulado. Na prática, essa função deve ser estimada. Uma forma de se fazer isso é estimando a densidade de x no conjunto rotulado e no conjunto não-rotulado separadamente (pode-se utilizar, por exemplo, um estimador de densidade por kernel (Parzen, 1962)). Um estimador alternativo para β(x) consiste em criar o conjunto dados aumen- tado (XL 1 ,S1),...,(XL nL ,SnL ),(XU 1 ,SnL+1),...,(XU nU ,SnL+nU ), em que Si = I(1 ≤ i ≤ nL) é um indicador da amostra ser rotulada. Com base nessa amostra, estima-se então P(S = 1|x), a probabilidade de uma unidade amostral ser proveniente da amostra rotulada (utilizando, por exemplo, uma regressão logística). Como β(x) = P(S = 1) P(S = 0) P(S = 0|x) P(S = 1|x) , pode-se, então, estimar β com b β(x) := b P(S = 0) b P(S = 1) b P(S = 1|x) b P(S = 0|x) . Seja b β uma estimativa de β. A Equação 9.1 indica que uma forma de se estimar o risco de um método de predição g no conjunto não-rotulado é utilizar b R(g) = 1 ñL ñL ∑ k=1 L(g(X̃L k ),ỸL k )b β(X̃L k ), em que (X̃L 1 ,ỸL 1 ),...,(X̃L ñL ,ỸL ñL ) é uma amostra de validação do conjunto rotulado. 175
  • 196.
    9.3. Dataset Shifte Viés de Seleção Isto é, com os pesos, pode-se estimar o risco de interesse utilizando-se apenas a amostra rotulada. O estimador b R pode ser utilizado para se comparar diversos modelos. Note, contudo, que se β é muito alto para alguns pontos, o estimador do risco terá desem- penho ruim, uma vez que consistirá efetivamente em avaliar a função de perda em apenas algumas observações. Em particular, β(x) assume o valor zero em regiões do espaço amostral em que há apenas observações não-rotuladas, de modo que a suposição de covariate shift não é útil nesse caso. Os pesos b β também podem ser utilizados para responder (ii), isto é, para criar funções de predição com bom poder preditivo no conjunto não-rotulado. Isso pode ser feito utilizando versões ponderadas dos métodos de predição estudados nesse livro. Por exemplo, a função glmnet do R permite que pesos sejam passados como um dos argumentos para o modelo a ser ajustado. Note que a solução apresentada aqui para o problema de viés de seleção sob covariate shift pode ser utilizada tanto para problemas de classificação quanto para problemas de regressão, bastanto utilizar uma função de perda L adequada para cada problema. 9.3.2 Prior Shift A suposição de prior shift consiste em assumir que XL|YL ∼ XU|YU, de modo que a distribuição conjunta de (XL,YL) difere de (XU,YU) apenas segundo a distribuição marginal da variável resposta. Como P(YU = 1) , P(YL = 1), então P(YU = 1|xU) , P(YL = 1|xL), de modo que alguma correção deve ser feita para estimar P(YU = 1|xU). Pode-se mostrar que, sob a suposição de prior shift (Saerens et al., 2002), P(YU = 1|xU ) = P(YU=1) P(YL=1) P(YL = 1|xL) ∑1 i=0 P(YU=i) P(YL=i) P(YL = i|xL) . Assim, para se estimar P(YU = 1|xU) basta estimar: • P(YL = 1|xL), que pode ser feito utilizando as técnicas de classificação via estimação de probabilidades apresentadas na Parte II deste livro; • P(YL = 1), que pode ser feito utilizando a proporção de amostras com rótulo Y = 1 na amostra rotulada; 176
  • 197.
    Capítulo 9. OutrosAspectos de Classificação • P(YU = 1), que é um termo mais complicado para ser estimado. Em muitos problemas, uma estimativa razoável de P(YU = 1) é conhecida de antemão. Por exemplo, considere um estudo caso-controle para criar um classifica- dor para determinar se um paciente tem determinada doença. Nesse caso, a amostra rotulada é criada de modo que o número de pacientes doentes (e não doentes) inves- tigados seja um número pré-fixado anteriormente. Assim, a proporção de doentes na amostra é diferente da proporção de doentes na população, P(YU = 1). Contudo, P(YU = 1) é frequentemente conhecido devido a estudos prévios. Quando P(YU = 1) não é conhecida, é necessário estimá-la. Um método bastante popular para estimar essa quantidade foi desenvolvido por (Forman, 2006). Esse método consiste em notar que, se g(x) é um classificador, então (Vaz et al., 2019) P(YU = 1) = P(g(XU) = 1) − P(g(XL) = 1|YL = 0) P(g(XL) = 1|YL = 1) − P(g(XL) = 1|YL = 0) . Todos os termos desta equação podem ser facilmente estimados utilizando o con- junto de dados disponível. 9.4 Combinando Classificadores Combinar diversos classificadores construídos com base no mesmo conjunto de treinamento pode levar a um classificador com poder preditivo ainda maior. Bag- ging, florestas aleatórias e boosting (Seções 8.4 e 8.5) são algumas formas de se fazer isso. Como vimos, enquanto bagging e florestas aleatórias foram criados para com- binar funções de predição aproximadamente não viesadas (mais especificamente, ár- vores sem poda); boosting combina classificadores fracos. Existem, contudo, outras formas de se combinar classificadores; nesta seção exploramos uma delas, o blending (muitas vezes chamado de stacked ensembling). A ideia deste método é criar um meta-classificador, treinado com covariáveis dadas pelas predições dos modelos a serem combinados. Mais especificamente, divide-se o conjunto de treinamento em duas partes: treinamento (por exemplo, 90%) e en- semble set (por exemplo, 10%). Sejam g1,...,gB as funções de predição treinadas utilizando-se o conjunto de treinamento. Essas funções podem ser obtidas obtidas a partir de quaisquer métodos (por exemplo, regressão logística, SVM, florestas ale- atórias etc). Denotando o ensemble set por (x̃1,ỹ1),...,(x̃ñ,ỹñ), ajustamos então um 177
  • 198.
    9.4. Combinando Classificadores classificadorpara o conjunto (w̃1̃,ỹ1̃),...,(w̃ñ,ỹñ), em que w̃i = (g1(x̃i),...,gB(x̃i)). Exemplo 9.1 (Detecção de SPAMs). Considere novamente o conjunto de dados spam do Exemplo 8.1. Ajustamos aqui os seguintes métodos: análise discriminante linear, regressão logística com penalização L1, florestas aleatórias e SVM. Para combinar os modelo, utilizamos a regressão logística. Tabela 9.1: Coeficientes encontrados pela regressão logística do modelo ensemble. A floresta aleatória recebe o maior peso na combinação. Coeficientes Intercepto -5.269 Pred. Análise Discriminante Linear -2.152 Pred. Logística L1 3.114 Pred. Floresta Aleatória 8.542 Pred. SVM 0.914 Tabela 9.2: Risco estimado de cada modelo individual e do modelo de ensemble. Método Risco Análise Descriminante Linear 0.106 Regressão Logística L1 0.077 FLoresta Aleatória 0.067 SVM 0.073 Ensemble 0.061 A Tabela 9.1 mostra que quase todo o peso do modelo logístico de ensemble foi dado ao modelo de florestas aleatórias. Isso se justifica porque o desempenho de florestas aleatórias é semelhante ao do modelo combinado (Tabela 9.2). Para outros métodos de ensemble, veja Breiman (1996), Coscrato et al. (2020), Dietterich (2000) e Izbicki e Musetti (2020). 178
  • 199.
    Capítulo 9. OutrosAspectos de Classificação 9.5 Teoria do Aprendizado Estatístico It is a dimension as vast as space and as timeless as infinity. It is the middle ground between light and shadow, between science and superstition, and it lies between the pit of man’s fears and the summit of his knowledge. The Twilight Zone Neste seção introduzimos parte da teoria do aprendizado estatístico desenvol- vida por Cherkassky et al. (1999) e Vapnik (1999), cujo objetivo é fornecer garantias sobre alguns procedimento de classificação. Sejam Zi = (Xi,Yi), i = 1,...,n vetores aleatórios i.i.d. e f : Rd+1 −→ R uma função. Defina P(f ) := E[f (Z)] e Pn(f ) = 1 n n ∑ i=1 f (Zi) e seja b f = argmin f ∈F Pn(f ) e f ∗ = argmin f ∈F P(f ), em que F é um conjunto de funções de interesse. O principal objetivo da teoria do aprendizado estatístico é dar garantias sobre o quão longe P( b f ) está de P(f ∗). Em- bora a teoria do aprendizado estatístico seja bastante geral, focaremos inicialmente no problema de classificação: Exemplo 9.2. No contexto de classificação, podemos tomar f (Z) = I(Y , g(X)), de modo que P(f ) = R(g) (isto é, é o risco de classificação) e Pn(f ) = b Rtr(g) := 1 n ∑n i=1 I(Yi , g(Xi)) (isto é, é a proporção de erros que g faz no conjunto de treina- mento). Uma forma de se escolher um classificador é definir b g = argmin g∈G b Rtr(g), em que G é uma classe de classificadores (por exemplo, o conjunto de todos os clas- 179
  • 200.
    9.5. Teoria doAprendizado Estatístico sificadores lineares). Essa abordagem é chamada de minimização do erro empírico. As- sim, a teoria do aprendizado estatístico fornece garantias sobre este procedimento. Mais especificamente, essa teoria fornece garantias sobre o quão longe o risco de b g está do risco do oráculo g∗, definido por g∗ = argmin g∈G R(g), ou seja, o melhor classificador dentro de G (como visto no Teorema 10). Isso decorre do fato de que ming∈G b Rtr(g) = minf ∈F b Pn(f ) e ming∈G R(g) = minf ∈F P(f ), em que F = {f : f (Z) = I(Y , g(X)) para algum g ∈ G}. Note que uma garantia desse tipo já foi dada no Teorema 10. Contudo, foi considerado apenas o caso em que a busca é feita sob um número finito de classificadores. A teoria VC apresenta uma generalização para que a classe de funções possa ser infinita. A estratégia da teoria do aprendizado estatístico para limitar o quão longe o risco de b g está do risco do oráculo g∗ é limitar o quão longe R(g) está de b Rtr(g) para todo g ∈ G simultaneamente. Uma forma de se obter este limitante se dá com o Teorema VC:2 Teorema 11 (Teorema VC). Se F é um conjunto de funções binárias, então, para todo e √ 2/n, P sup f ∈F |Pn(f ) − P(f )| e ! ≤ 4s(F,2n)e−ne2/8 , (9.2) em que s(F,2n) é o shattering number da classe F para uma amostra de tamanho n. Assim, com probabilidade ao menos 1 − δ, sup f ∈F |Pn(f ) − P(f )| ≤ s 8 n log 4s(F,2n) δ . O shattering number s(F,2n) é uma medida de quão complexa e expressiva é a classe de funções F. Antes de introduzir formalmente essa quantidade, vamos dis- cutir o motivo desse teorema, de fato, nos ajudar a atingir nosso objetivo. O fato 2VC é a abreviação de Vapnik-Chervonenkis, os sobrenomes dos criadores dessa teoria. 180
  • 201.
    Capítulo 9. OutrosAspectos de Classificação central da teoria VC é que o Teorema 11 implica que, com probabilidade ao menos 1 − 4s(F,2n)e−2ne2/8, P( b f ) − P(f ∗ ) = P( b f ) − Pn( b f ) + Pn( b f ) − Pn(f ∗ ) + Pn(f ∗ ) − P(f ∗ ) ≤ P( b f ) − Pn( b f ) + Pn(f ∗ ) − P(f ∗ ) ≤ 2e, onde a primeira desigualdade segue do fato de que, por definição, Pn( b f ) − Pn(f ∗) ≤ 0 e a última desigualdade segue da Equação 9.2. Assim, se n é grande e s(F,2n) cresce a uma taxa menor que e−ne2/8 (em breve veremos quando esta última condição ocorre), então com probabilidade alta P( b f ) ≈ P(f ∗). No contexto de classificação (Exemplo 9.2), o Teorema 11 garante que P sup g∈G |b Rtr(g) − R(g)| e ! ≤ 4s(F,2n)e−ne2/8 , o que implica que, com probabilidade alta, o risco do estimador encontrado via mi- nimização de risco empírico estará próximo do risco do oráculo. Note que, em particular, o Teorema VC garante que, se 4s(F,2n)e−2ne2/8 − −−− → n−→∞ 0, então P( b f ) P − −−− → n−→∞ P(f ∗ ), isto é, P( b f ) converge em probabilidade para P(f ∗). Shattering number. Note que, se F contém apenas funções binárias, então (f (z1),..., f (zn)) ∈ {0,1}n para todo z1,...,zn e f ∈ F. Seja F(z1,...,zn) = {(f (z1),..., f (zn)) : f ∈ F} o conjunto de todos os valores que o vetor (f (z1),..., f (zn)) pode assumir para z1,...,zn fixos. Se F é uma classe rica de funções, esperamos que F(z1,...,zn) conte- nha um grande número de vetores. Com base nessa ideia, uma forma de quantificar a complexidade de uma classe F de funções binárias é através do número máximo de elementos que F(z1,...,zn) pode ter levando em conta todos os possíveis valores que z1,...,zn podem assumir. Esta quantidade é chamada de shattering number. Mais 181
  • 202.
    9.5. Teoria doAprendizado Estatístico especificamente, este número é dado por s(F,n) := sup z1,...,zn |F(z1,...,zn)|. Note que, necessariamente, s(F,n) ≤ 2n. Quando |F(z1,...,zn)| = 2n, dizemos que os dados z1,...,zn são destruídos (shattered) por F. Exemplo 9.3. Seja F = {ft : t ∈ R}, em que ft(z) = I(z t), z ∈ R. Para quaisquer z1 ... zn, temos que F(z1,...,zn) = {(0,...,0,0),(0,...,0,1),(0,...,1,1),...,(1,...,1,1)}. Logo |F(z1,...,zn)| = n + 1. Em geral, |F(z1,...,zn)| ≤ n + 1, de modo que, neste caso, s(F,n) = n + 1. Uma condição necessária e suficiente para a consistência (em relação ao oráculo) do procedimento de minimização empírica do risco é que logs(F,n)/n −→ 0. Assim, se F é muito complexa (e.g., s(F,n) = 2n) não há consistência. Dimensão VC. Outro conceito importante na Teoria VC é o de dimensão VC, que também é uma forma de medir a complexidade de um espaço de funções binárias. Essa medida é dada por: VC(F) = sup{n : s(F,n) = 2n }. Assim, VC(F) é o maior tamanho amostral n para o qual existe uma amostra z1,...,zn que é destruída por F. Se F contém uma grande variedade de funções, é razoável esperar que sua dimensão VC seja grande. Exemplo 9.4. No Exemplo 9.3, VC(F) = 1, pois s(F,1) = 2 = 21, mas s(F,n) = n + 1 2n para n 1. 182
  • 203.
    Capítulo 9. OutrosAspectos de Classificação A dimensão VC também está relacionada com o shattering number via o Lema de Sauer: Teorema 12 (Lema de Sauer). Se d := VC(F) ∞, então s(F,n) ≤ en d d para todo n d. Além disso, se a dimensão VC é infinita, então s(F,n) = 2n para todo n. Esse lema é útil pois permite uma forma alternativa para o limitante do Teorema VC. Mais especificamente, se a dimensão VC d de uma classe F é finita, então o Teorema VC juntamente com o Lema de Sauer implica que, se n d, então com probabilidade ao menos 1 − δ sup f ∈F |Pn(f ) − P(f )| ≤ s 8 n log 4 δ + dlog ne d . Segue que se a dimensão VC de F é finita, então P( b f ) converge em probabilidade para P(f ∗). Além disso, se a dimensão VC de F é infinita, então P( b f ) não converge em probabilidade para P(f ∗). Ainda, a dimensão VC caracteriza completamente a consistência do método de minimização empírica do risco em uma classe de funções. Exemplo 9.5. [Data splitting] Seja Z1,...,Zn o conjunto de validação em um pro- blema de classificação e G é uma classe de classificadores parametrizadas por um tuning parameter λ. A Teoria VC garante que P sup g∈G |b Rval(g) − R(g)| e ! ≤ 4s(F,2n)e−ne2/8 , em que b Rval é o risco estimado de g pelo conjunto de validação, de modo que ela fornece limitantes superiores para o quão próximo λ escolhido por data splitting está do valor ótimo de λ. Além disso, essa teoria implica que o processo de escolha do melhor λ via data splitting será consistente se, e somente se, a dimensão VC da classe F = {f : f (Z) = I(Y , g(X)) para algum g ∈ G} for finita. Para outras aplicações da Teoria VC para data splitting, veja Izbicki et al. (2019) e Izbicki e Stern (2013). 183
  • 204.
    9.5. Teoria doAprendizado Estatístico 9.5.1 Prova do teorema VC Inicialmente limitaremos o quão longe Pn(f ) está de P(f ) para uma função f fixa. Uma forma de fazer isso é utilizando a desigualdade de Hoeffding: Teorema 13 (Desigualdade de Hoeffding). Se W1,...,Wn são variáveis aleatórias inde- pendentes e Wi tem suporte em (ai,bi) então, para todo t 0, P(|W̄n − µ| e) ≤ 2e−2n2e2/∑n i=1(bi−ai)2 , em que W̄n = n−1 ∑n i=1 Wi e µ = E[W̄n]. Dessa desigualdade, segue imediatamente que Corolário 1. Para toda função binária f, P(|Pn(f ) − P(f )| e) ≤ 2e−2ne2 e, portanto, com probabilidade ao menos 1 − δ, |Pn(f ) − P(f )| ≤ r 1 2n log(2/δ). Exemplo 9.6. No contexto de classificação, o Corolário 1 implica que, para todo clas- sificador binário g, P(|b Rtr(g) − R(g)| e) ≤ 2e−2ne2 e, portanto, com probabilidade ao menos 1 − δ, |b Rtr(g) − R(g)| ≤ r 1 2n log(2/δ). Lema 3 (Lema da simetrização). Para todo e √ 2/n, P sup f ∈F |Pn(f ) − P(f )| e ! ≤ 2P sup f ∈F |Pn(f ) − P0 n(f )| e/2 ! , em que P0 n(f ) = 1 n ∑n i=1 f (Z0 i), com Z0 1,...,Z0 n uma amostra de vetores aleatórios iids a Z1,...,Zn. 184
  • 205.
    Capítulo 9. OutrosAspectos de Classificação Demonstração. Seja b f = argsupf ∈F |Pn(f ) − P(f )|. Note que, pela desigualdade tri- angular, e |Pn( b f ) − P( b f )| = |Pn( b f ) − P0 n( b f ) + P0 n( b f ) − P( b f )| ≤ |Pn( b f ) − P0 n( b f )| + |P0 n( b f ) − P( b f )|. Assim, |Pn( b f ) − P( b f )| e e |P0 n( b f ) − P( b f )| ≤ e/2 ⇒ |Pn( b f ) − P0 n( b f )| e/2. Logo, I(|Pn( b f ) − P( b f )| e)I(|P0 n( b f ) − P( b f )| ≤ e/2) ≤ I(|Pn( b f ) − P0 n( b f )| e/2). Tomando a esperança sobre Z0 1,...,Z0 n, concluímos que I(|Pn( b f ) − P( b f )| e)P0 (|P0 n( b f ) − P( b f )| ≤ e/2) ≤ P0 (|Pn( b f ) − P0 n( b f )| e/2). (9.3) Mas, pela desigualdade de Chebyshev, P0 (|P( b f ) − P0 n( b f )| e/2) ≤ 4V0[ b f ] ne2 ≤ 1 ne2 ≤ 1 2 . Logo, P0 (|P( b f ) − P0 n( b f )| ≤ e/2) ≥ 1 2 . Desse fato e da Equação 9.3, concluímos que I(|Pn( b f ) − P( b f )| e) ≤ 2P0 (|Pn( b f ) − P0 n( b f )| e/2). Tomando a esperança sobre Z1,...,Zn, concluímos que P(|Pn( b f ) − P( b f )| e) ≤ 2P(|Pn( b f ) − P0 n( b f )| e/2). Assim, P sup f ∈F |Pn(f ) − P(f )| e ! ≤ 2P sup f ∈F |Pn(f ) − P0 n(f )| e/2 ! 185
  • 206.
    9.6. Resumo Demonstração. [Provado Teorema VC] Seja V = F(z1,...,zn,z0 1,...,z0 n). Para v ∈ V, seja Pn(v) − P0 n(v) = 1 n n ∑ i=1 vi − 2n ∑ i=n+1 vi ! . Segue do Lema 3 que P sup f ∈F |Pn(f ) − P(f )| e ! ≤ 2P sup f ∈F |Pn(f ) − P0 n(f )| e/2 ! = 2P   sup v∈F(Z1,...,Zn,Z0 1,...,Z0 n) |Pn(v) − P0 n(v)| e/2   ≤ 2s(F,2n)P(|Pn(f ) − P0 n(f )| e/2) ≤ 4s(F,2n)e−ne2/8 , em que a penúltima desigualdade segue da desigualdade da união e do fato que FZ1,...,Zn,Z0 1,...,Z0 n possui no máximo s(F,2n) elementos. Já a última desiguldade segue da desigualdade de Hoeffding. 9.6 Resumo Vimos que um problema de classificação difere de um problema de regressão pelo fato da variável Y ser qualitativa. Uma implicação disso é que o risco qua- drático, utilizado para regressão, não é adequado para o problema de classificação. Vimos que o risco 0-1, a probabilidade de classificar uma nova observação incor- retamente, é mais adequado. Contudo, essa métrica deve ser complementada com outras, como a sensibilidade e a especificidade. Também é possível adaptar o risco para que cada tipo de erro seja penalizado de forma diferente. Vimos que o classifi- cador de Bayes é o melhor classificador segundo o risco 0-1, o que motiva o uso de classificadores plugin, que se baseiam em estimar a probabilidade de uma observa- ção percentecer a uma classe dadas as covariáveis associadas a ela. Contudo, nem todos os classificadores se baseiam nisso. Finalmente, vimos ferramentas para lidar com situações de predição em que os dados não são i.i.d. 186
  • 207.
  • 209.
    Capítulo 10 Redução deDimensionalidade e Mudança de Representação Métodos de redução de dimensionalidade buscam encontrar transformações das covariáveis originais que capturam uma parte considerável das informações presen- tes nelas, de modo a retirar redundâncias nas covariáveis e diminuir o número des- sas. Existem diversas razões para isso, como, por exemplo, facilitar a visualização dos dados e promover a criação de funções de predição com maior poder preditivo. Veja, por exemplo, a Figura 10.1, que apresenta um diagrama de dispersão de duas variáveis criadas a partir dos pixels das imagens de dígitos escritos a mão (como na Figura 7.1) utilizando a técnica de componentes principais. Cada ponto é repre- sentado pelo dígito correspondente. Note que 9’s e 7’s estão bastante sobrepostos, indicando uma maior similaridade entre si. 189
  • 210.
    10.1. Componentes Principais(PCA - Principal Component Analysis) Figura 10.1: Diagrama de dispersão de duas variáveis criadas a partir dos pixels das imagens de dígitos escritos a mão (veja a Figura 7.1). Cada ponto é representado pelo dígito correspondente. As técnicas de redução de dimensionalidade têm como objetivo a criação de um número pequeno de variáveis Z1,Z2,... a partir de X1,X2,... que resumam bem as informações presentes nelas. Neste capítulo estudamos diversas formas de se fazer essa redução. De forma mais geral, veremos também como alterar a representação das covariá- veis originais (isto é, fazer uma mudança de coordenadas), mesmo que isso envolva aumentar o número de variáveis. A nova representação pode ser útil para, posteri- ormente, utilizar técnicas de aprendizado supervisionado. 10.1 Componentes Principais (PCA - Principal Compo- nent Analysis) Por simplicidade, nesta seção iremos assumir que as covariáveis estão normali- zadas para ter média zero. Na técnica de componentes principais, a informação de uma variável Zi é medida através de sua variabilidade. Mais especificamente, ela é medida utilizando sua va- riância. Além disso, a redundância entre duas variáveis Zi e Zj é medida através de sua correlação. Finalmente, essa técnica se restringe a buscar por variáveis que sejam 190
  • 211.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação combinações lineares das covariáveis originais. Formalmente, o primeiro componente principal de X é a variável Z1 que 1. é combinação linear das variáveis X, isto é, pode ser escrito como Z1 = φ11X1 + ... + φd1Xd (10.1) 2. tem a maior variância possível. Assim, Z1 é a variável que pode ser representada pela Equação 10.1, em que os coeficientes φ11,...,φd1 são tais que Z1 resultante possui a maior variabilidade possível. Adiciona-se também a restrição de que ∑d k=1 φ2 k1 = 1, caso contrário os coeficientes φk1 teriam valor absoluto tão grande quanto se queira e, dessa forma, poderia se aumentar a variância diretamente em função desses coeficientes. Da mesma maneira, o segundo componente principal de X é a variável Z2 que 1. é combinação linear das variáveis X, isto é, pode ser escrito como Z2 = φ12X1 + ... + φd2Xd com a restrição: ∑d k=1 φ2 k2 = 1 2. tem a maior variância possível. 3. tem correlação zero com Z1. Em outras palavras, o segundo componente também deve ser função linear das variáveis, deve ter a maior variância possível (para trazer o máximo de informação) e deve ter correlação zero com o componente já calculado (de modo que não haja informação redundante entre ambos). De modo genérico, o i-ésimo componente principal de X, i 1, é a variável Zi que 1. é combinação linear das variáveis X, isto é, pode ser escrito como Zi = φ1iX1 + ... + φdiXd com a restrição: ∑d k=1 φ2 ki = 1 2. tem a maior variância possível. 191
  • 212.
    10.1. Componentes Principais(PCA - Principal Component Analysis) 3. tem correlação zero com Z1,...,Zi−1. Felizmente a solução para esse problema é simples. Ela consiste em primeira- mente encontrar autovetores de C = X|X, que é matriz de variância-covariância das covariáveis (a menos de um fator multiplicativo), pois estamos assumindo que elas têm média zero. Seja U a matriz d × d em que a i-ésima coluna contém o i-ésimo autovetor de C. U é justamente a matriz de cargas, i.e., o seu elemento i, j é dado pelo coeficiente ótimo φij. Assim, Z = XU é a matriz n × d com as d novas covariáveis para cada uma das n observações. A Figura 10.2 apresenta uma ilustração dos dois primeiros componentes princi- pais para um conjunto de dados simulados Nesse caso, o primeiro componente, z1, representa a posição de cada ponto com relação ao eixo marcado de vermelho, que é o eixo de maior variabilidade dos dados. Note que, sabendo o valor desta posição (por exemplo, z1 = −1), pode-se ter uma noção do valor tanto de x1 quanto de x2. Assim, de fato o primeiro componente captura o que é mais importante sobre os da- dos. O segundo componente, z2 é a posição de cada ponto com relação ao eixo azul. Essa informação complementa aquela dada pelo componente z1: com base em z1 e z2 é possível reconstruir x1 e x2. Além disso, os eixos são ortogonais entre si. Isso sempre ocorre devido ao fato que se exige que a correlação entre Z1 e Z2 seja zero. Figura 10.2: Componentes principais encontrados para um conjunto de dados simu- lado. 192
  • 213.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação 10.1.1 Interpretação alternativa: escalonamento multidimensional Uma outra forma de motivar a utilização dos componentes principais é dada pelo escalonamento multidimensional. Suponha que deseja-se encontrar as transforma- ções lineares Z = (Z1,...,Zm), m d de X = (X1,...,Xd) tais que ∑ i,j (||xi − xj||2 − ||zi − zj||2 ) tenha o menor valor possível. Ou seja, deseja-se buscar a transformação linear das variáveis originais tal que as distâncias euclidianas entre os pares de vetores origi- nais, ||xi − xj|| sejam o mais próximas possíveis das distâncias euclidianas entre os pares de novos vetores, ||zi − zj|| no sentido de minimizar ∑ i,j ||xi − xj||2 − ||zi − zj||2 . A solução para esse problema consiste justamente em tomar Z como sendo o vetor dos m primeiros componentes principais de x. Exemplo 10.1. Considere o conjunto de dados Zip Code1, que contém a imagem de dígitos escritos a mão. Figura 10.3: Dois primeiros componentes principais encontrados para o conjunto de dados de dígitos escritos à mão, juntamente com a imagem de um dígito outlier (correspondente ao ponto circulado na primeira figura) e um dígito inlier. 1http://statweb.stanford.edu/~tibs/ElemStatLearn/. 193
  • 214.
    10.1. Componentes Principais(PCA - Principal Component Analysis) A Figura 10.3 ilustra o diagrama de dispersão dos dois primeiros componen- tes principais, assim como a imagem de um dígito outlier (correspondente ao ponto circulado na primeira figura) e um dígito inlier. Claramente o dígito outlier possui características diferentes do que é esperado para um dígito 1 escrito à mão. 10.1.2 Aplicação: compressão de imagens Seja X a matriz n × d com os dados observados. Em PCA, fazemos a decomposi- ção SVD da matriz de covariâncias: X| X = UΣU| , em que U é uma matriz d × d cujas colunas contém os autovetores da matriz X|X (a chamada matriz de cargas) e Σ é uma matriz diagonal com seus autovalores. Os autovetores de U são ordenados de acordo com a magnitude do respectivo autovalor de forma decrescente, ou seja, o primeiro autovetor corresponde ao maior autovalor. A matriz Z = X|U (que é n × d) contém os valores das d novas covariáveis ava- liadas em cada uma das n observações. Além disso, os dados X podem ser recons- truídos calculando-se ZU|. Note que a i-ésima linha de ZU| é dada por d ∑ k=1 zi,kuk, em que zi,k = u| k xi é o valor da k-ésima nova variável para a i-ésima amostra e uk é a k-ésima coluna de U. É possível mostrar que p ∑ k=1 zi,kuk ≈ d ∑ k=1 zi,kuk para p d, contanto que os autovalores da matriz de covariâncias decaiam rapida- mente para zero. Isso sugere aproximar xi truncando ∑ p k=1 ci,kuk em um valor pequeno de p. A vantagem de tal aproximação é que ela reduz o espaço necessário para armazenar xi. Dessa forma, só é necessário armazenar o valor das p novas covariáveis (zi,1,...,zi,p) 194
  • 215.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação e os p primeiros pesos u1,...,up. Matricialmente, X ≈ ZpU| p, em que Zp contém as p primeiras colunas de Z e Up contém as p primeiras colunas de U. Nessa seção mostraremos como utilizar PCA para comprimir a seguinte imagem: Figura 10.4: Figura que será comprimida via PCA. A ideia central é tratar a imagem como sendo a coleção de três matrizes, uma para cada canal de cor (red/green/blue). Primeiramente, faremos a leitura da imagem no R. Note que o objeto imagem é um array 639 × 540 × 3. As duas primeiras dimensões indicam o tamanho da imagem e a última dimensão indica as camadas de cor (nesse caso, RGB). library(jpeg) library(gridExtra) imagem - readJPEG(../Figures/izbicki.jpg, native = FALSE) red - imagem[,,1] green - imagem[,,2] blue - imagem[,,3] 195
  • 216.
    10.1. Componentes Principais(PCA - Principal Component Analysis) rotate - function(x) t(apply(x, 2, rev)) # canal vermelho image(rotate(red), col = grey.colors(300, 0, 1)) Aplicaremos a decomposição SVD na matriz de cada canal separadamente. r_svd - svd(t(red) %*% red) g_svd - svd(t(green) %*% green) b_svd - svd(t(blue) %*% blue) 196
  • 217.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação Com isso, iremos aplicar PCA para comprimir as imagens. Para comparar dife- rentes níveis de compressão, utilizaremos diferentes opções para o número de com- ponentes utilizados. ncolunas - c(3, 5, 25, 100, 200, 300) # níveis # de compressão for(i in ncolunas) { # (novas variaveis) r_projecao - red %*% r_svd$u[, 1:i] # (reconstrucao) r_approx - r_projecao %*% t(r_svd$u[, 1:i]) g_projecao - green %*% g_svd$u[, 1:i] g_approx - g_projecao %*% t(g_svd$u[, 1:i]) b_projecao - blue %*% b_svd$u[, 1:i] b_approx - b_projecao %*% t(b_svd$u[, 1:i]) imagemFinal - array(NA, dim = c(nrow(red), ncol(red), 3)) imagemFinal[,,1] - r_approx imagemFinal[,,2] - g_approx imagemFinal[,,3] - b_approx imagemFinal - ifelse(imagemFinal 0, 0, ifelse(imagemFinal 1, 1, imagemFinal)) grid.raster(imagemFinal) cat(Numero de componentes =, i, n, Economia de espaço = , paste0(round(100 - (prod(dim(r_projecao)) + prod(dim(r_svd$u[, 1:i])))/prod(dim(red))* 100, 2),%)) } 197
  • 218.
    10.2. Kernel PCA(KPCA) (a) 3 componentes; 98,9% de compressão (b) 5 componentes; 98,3% de compressão (c) 25 componentes; 91,46% de compressão (d) 100 componentes; 65,8% de compressão (e) 200 componentes; 31,2% de compressão (f) 300 componentes; - 2,5% de compressão Figura 10.5: Imagens recuperadas a partir dos componentes principais 10.2 Kernel PCA (KPCA) Se restringir a transformações lineares das variáveis originais, como feito na seção anterior, pode ser um fator muito limitante. Considere a Figura 10.6. Intuitivamente, o primeiro componente principal deveria ser capaz de distinguir os grupos vermelho e preto. No entanto, o primeiro componente, como mostrado na figura, não é capaz de fazer isso. Contudo, Kernel PCA, a técnica descrita nesta seção, é capaz de fazê-lo. A ideia do Kernel PCA é utilizar o truque do kernel (já utilizado na Seção 4.6.3.2 no contexto de regressão) de forma a considerar transformações não lineares das covariáveis. Lembre-se que a solução do PCA consiste em encontrar autovetores de C = X|X. O fato fundamental para usar o truque do kernel é que Z também pode ser calculado 198
  • 219.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação via o cálculo dos autovetores de K = XX| , a matriz com os produtos internos entre cada par de observações. Note que essa matriz é diferente de C. Mais especificamente, tem-se que Z = U| 2 , em que U2 é a matriz de autovetores de K. Assim, para calcular as componentes principais, basta saber os produtos internos entre as observações. Figura 10.6: Primeiro componente da PCA e do KPCA encontrados para um con- junto de dados simulado. O truque do kernel na análise de componentes principais consiste em utilizar 199
  • 220.
    10.2. Kernel PCA(KPCA) outros produtos internos (kernels) ao invés de hxi,xji = ∑d k=1 xi,kxj,k. Ou seja, ao invés de calcular a autodecomposição de K = XX|, utilizamos outros kernels, K =       K(x1,x1) K(x1,x2) ··· K(x1,xn) K(x2,x1) K(x2,x2) ··· K(x2,xn) . . . . . . ... . . . K(xn,x1) K(xn,x2) ··· K(xn,xn)       , em que K(xi,xj) corresponde ao produto interno de alguma transformação das co- variáveis x. Lembre-se que o truque consiste no fato de que a transformação não precisa ser calculada analiticamente (Seção 4.6.3.2). No R, o KPCA (e, em particular, PCA) pode ser ajustado utilizando o pacote kernlab. library(kernlab) # kernel polinomial (note que degree=1 corresponde a # PCA usual): kpc - kpca(dados, kernel = polydot, kpar = list(degree = 2), features = 2) # ou kernel gaussiano (sigma = 1/variancia): kpc - kpca(dados, kernel = rbfdot, kpar = list(sigma = 1), features = 2) variaveis_novos_dadoss - predict(kpc, novos_dados) Para kernels diferentes do kernel linear, o número de componentes criados pode ser maior que d. Assim, essa técnica não necessariamente faz uma redução de di- mensão; ela cria um novo sistema de coordenadas para os dados. Observação 10.1. KPCA também pode ser motivada via escalonamento multidimen- sional: fazer KPCA equivale a fazer escalonamento multidimensional com base na distância d(xi,xj) = q 2(1 − K(xi,xj)). Na Seção 11.2 estudaremos outra técnica que também utilizar um kernel de Mer- cer para criar uma nova representação dos dados. 200
  • 221.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação 10.3 Projeções Aleatórias Uma estratégia alternativa para reduzir a dimensionalidade dos dados é o mé- todo de projeções aleatórias. Nele, cada componente zi é criado de modo a ser uma projeção linear das covariáveis originais com coeficientes escolhidos aleatoriamente. Mais especificamente, seja S uma matriz com m linhas e d colunas cujas entradas são amostras i.i.d. de normais com média zero e variância um. Seja si,j a entrada (i, j) desta matriz. Definimos a k-ésima projeção aleatória de x como zi = d ∑ k=1 si,k √ m xk. Seja zi = (zi,1,...,zi,m) o vetor composto pelas novas variáveis. O teorema a se- guir mostra que, com probabilidade alta, tal transformação preserva distâncias, i.e., ||xi − xj|| ≈ ||zi − zj|| para todos índices i e j. Teorema 14 (Johnson-Lindenstrauss, (Johnson e Lindenstrauss, 1984)). Fixe e 0 e seja m ≥ 32logn/e2. Então, com probabilidade ao menos 1 − e−me2/16, vale que (1 − e)||xi − xj||2 ≤ ||zi − zj||2 ≤ (1 + e)||xi − xj||2 para todos i, j = 1,...,n. Exemplo 10.2. Considere novamente o conjunto de dados Zip Code (Exemplo 10.1). As Figuras 10.7 e 10.8 ilustram as duas e três primeiras projeções aleatórias calcula- das. Note como imagens referentes aos mesmos dígitos tendem a se agrupar. Figura 10.7: Duas primeiras projeções aleatórias calculadas no conjunto de dados de dígitos escritos à mão. 201
  • 222.
    10.4. Autoencoders Figura 10.8:Três primeiras projeções aleatórias calculadas no conjunto de dados de dígitos escritos à mão. Além das aplicações de técnicas de redução de dimensionalidade já discutidas, projeções aleatórias também podem ser utilizadas como forma de deixar diversos al- goritmos mais rápidos. Isso ocorre pois esse método preserva distâncias (e produtos internos) e é muito rápido de ser calculado. Isso permite que métodos de regressão e classificação, que exigem apenas o cálculo do produto interno para serem implemen- tados (como a regressão ridge e support vector machines), possam ser aproximados sem grandes perdas de desempenho estatístico. 10.4 Autoencoders Redes neurais podem ser utilizadas para reduzir a dimensão dos dados. Uma maneira de fazer isso é através de autoeconders, que são redes com camada de saída 202
  • 223.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação com o mesmo número de neurônios que a camada de entrada (Figura 10.9). Em um autoencoder, a função de perda é dada por 1 n n ∑ k=1 d ∑ i=1 xk,i − gβ;i(xk) 2 , que incentiva que a saída da rede seja a mesma que a da entrada: como a camada oculta tem menos neurônios que a camada de entrada, a saída deve recuperar a entrada a partir de um número menor de variáveis. Assim, essa estrutura exige que as camadas ocultas consigam capturar o máximo de informação sobre x em um número pequeno de variáveis. x1 x2 x3 x4 gβ;1(x) gβ;2(x) gβ;3(x) gβ;4(x) Camada Oculta Camada de entrada Camada de saída Figura 10.9: Exemplo de autoencoder. Quando há apenas uma camada oculta, esse processo leva essencialmente aos mesmos resultados que PCA (Seção 10.1). Autoenconders, contudo, podem ter uma estrutura muito mais geral, com várias camadas ocultas e outras arquiteturas. Exemplo 10.3. Nesse exemplo apresentamos dados processados obtidos a partir da página de dados estatísticos da Secretaria de Segurança Pública de São Paulo (www.ssp.sp.gov.br/Estatistica) para o número de ocorrências registradas no ano de 2019. Utilizaremos os seguintes indicadores: • homicídio doloso • nº de vítimas em homicídio doloso • homicídio doloso por acidente de trânsito 203
  • 224.
    10.4. Autoencoders • nºde vítimas em homicídio doloso por acidente de trânsito • homicídio culposo por acidente de trânsito • homicídio culposo outros • tentativa de homicídio • lesão corporal seguida de morte • lesão corporal dolosa • lesão corporal culposa por acidente de trânsito • lesão corporal culposa - outras • latrocínio • nº de vítimas em latrocínio • total de estupro • estupro • estupro de vulnerável • total de roubo - outros • roubo - outros • roubo de veículo • roubo a banco • roubo de carga • furto - outros • furto de veículo Utilizaremos uma rede com 23 unidades de entrada (o número de indicado- res/covariáveis), três unidades na camada oculta e 23 unidades na camada de saída. Assim, o erro observado será pequeno se não houver grande perda de informação após a redução de dimensão dos dados com três unidades na camada oculta. Para avaliar o desempenho da rede neural, faremos a reconstrução dos dados de diversos municípios separados em um conjunto de teste e avaliaremos a diferença absoluta de cada indicador. Essa diferença pode ser observada na Figura 10.10. library(viridis) library(tidyverse) library(tidymodels) library(keras) dados - read_csv2(../dados/indicadores_ssp.csv) # processamento dos dados -------------------------------- receita_prep - dados %% 204
  • 225.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação select(-(municipio_cod:pop_19)) %% recipe(~ .) %% step_normalize(all_numeric()) %% prep() # treinamento e teste ------------------------------------ set.seed(314) splits - juice(receita_prep) %% initial_split(0.8) treinamento - training(splits) %% as.matrix() teste - testing(splits) %% as.matrix() network - keras_model_sequential() %% layer_dense(units = 3, activation = relu, input_shape = 23) %% layer_dense(units = 23) network %% compile(optimizer = adam, loss = mean_squared_error) network %% fit(treinamento, treinamento, epochs = 40, batch_size = 16, validation_split = 0.2) preditos - predict(network, teste) diferenca - data.frame(abs(teste - preditos)) tibble(id = 1:nrow(diferenca)) %% bind_cols(diferenca) %% pivot_longer(-id, names_to = indicador, 205
  • 226.
    10.4. Autoencoders values_to =diferenca) %% ggplot(aes(id, indicador, fill = diferenca)) + geom_tile() + labs(x = município, y = , fill = diferença entre observado e predito) + scale_fill_viridis(direction = -1) + scale_x_continuous(expand = c(0, 0)) + theme_minimal() + theme(legend.position = top, text = element_text(size = 8)) 206
  • 227.
    Capítulo 10. Reduçãode Dimensionalidade e Mudança de Representação Figura 10.10: Erro de reconstrução da compressão dada pelo autoencoder em obser- vações de um conjunto de teste. 207
  • 228.
  • 229.
    Capítulo 11 Análise deAgrupamento Métodos de análise de agrupamento (análise de cluster) têm por finalidade divi- dir a amostra em grupos. Essa divisão é feita de modo que os grupos sejam diferentes uns dos outros, mas os elementos pertencentes ao mesmo grupo sejam parecidos en- tre si. Esses métodos podem ser utilizados com diversas finalidades. Por exemplo, uma loja de departamento pode utilizar análise de agrupamento para segmentar seus clientes. Assim, pode decidir como deve agir em relação a cada grupo. Por exemplo, a empresa poderá enviar um tipo diferente de publicidade para cada cli- ente de acordo com o perfil do grupo que pertence. Outro exemplo são as resenhas de usuários mostradas em sites de compras online quando um indivíduo busca por um produto. Em geral, a empresa escolhe automaticamente duas ou três resenhas bastante distintas, mas que ao mesmo tempo são representativas das milhares de resenhas feitas sobre esse produto. Formalmente, o objetivo de um método de clustering é criar uma partição C1,...,CK dos elementos amostrais {1,...,n}. Isto é, devemos ter ao mesmo tempo C1 [ C2 [ ... [ CK = {1,2...,n} e Ci Cj = ∅ ∀i , j. Neste capítulo apresentamos diversos métodos de análise de agrupamento com diferentes heurísticas para criar tais partições. Um conceito essencial a diversos métodos de agrupamento é como medir dissi- 209
  • 230.
    11.1. K-Médias milaridade (ousimilaridade) entre dois elementos com covariáveis xi e xj. Existem várias medidas possíveis. A seguir, listamos alguns exemplos: • distância Euclidiana: d2(xi,xj) = ∑d k=1(xi,k − xj,k)2; • distância de Mahalanobis: d(xi,xj) = ∑d k=1 |xi,k − xj,k|; • distância cosseno: d(xi,xj) = 1 − xi·xj ||xi|| ||xj|| ; • distância de Jaccard: d(xi,xj) = 1 − ∑d k=1 xi,kxj,k ∑d k=1 xi,k+∑d k=1 xj,k−∑d k=1 xi,kxj,k , em que x as- sume valores 0 e 1. Cada distância apresentada é mais adequada em um tipo de contexto. Por exem- plo, a distância cosseno é muito utilizada em aplicações de texto. Para aplicações de exemplos reais com a distância de Jaccard, veja Fernandez e F. (2020). Na próxima seção apresentaremos um método em que é necessário fixar previa- mente o número de clusters. 11.1 K-Médias O método das K-Médias assume que a medida de dissimilaridade usada é a dis- tância Euclidiana. Para utilizá-lo, é necessário especificar de antemão o valor de K, quantos clusters se deseja. Nesse algoritmo, buscar o melhor clustering é entendido como buscar pela partição C1,...,CK da amostra tal que K ∑ k=1 1 |Ck| ∑ i,j∈Ck d2 (xi,xj) seja o menor possível. Essa quantidade é a soma de quadrados dentro de cada clus- ter. Como há KN partições dos dados, não é possível minimizar essa função objetivo de forma exata. Um método para aproximar a solução desse problema é um algo- ritmo iterativo chamado Algoritmo de Lloyd. Embora não haja garantias de que a melhor solução será de fato encontrada, esse método, frequentemente, leva a bons resultados. O algoritmo consiste nos seguintes passos: 1. Escolha aleatoriamente k centróides c1,...,ck. 210
  • 231.
    Capítulo 11. Análisede Agrupamento Itere até obter convergência: 2. Atribuição: Defina o cluster Cj (j = 1,...,k) como sendo Cj = {xi : argmin r d(xi,cr) = r} 3. Atualização: Calcule os novos centroides utilizando os grupos que foram cria- dos: cj ←− 1 |Cj| ∑ j:xj∈Cj xj A Figura 11.1 ilustra o algoritmo de Lloyd. Nela, os centróides são denotados por círculos vazios, enquanto que dados observados têm cor sólida. Além disso, o centróide atribuido a cada ponto é denotado por vermelho ou azul. Neste caso, o algoritmo convergiu em apenas quatro interações. O algoritmo de Lloyd depende de escolhas iniciais feitas no passo 1. Cada esco- lha pode levar a um mínimo (local) diferente; veja os exemplos da Figura 11.2. Em ambos os casos o algoritmo convergiu para um mínimo que não é global. Uma forma de contornar esse problema é utlizar o algoritmo k-médias++ (Arthur e Vassilvitskii, 2006), que é uma variação do algoritmo de Lloyd. Essa variação con- siste em alterar a escolha dos pontos iniciais de forma a aumentar a chance de que o mínimo global seja encontrado. Para tanto, no k-médias++ escolhe-se C, o conjunto de pontos iniciais, da seguinte forma: 1. Escolha c1 aleatoriamente entre {x1,...,xn} e defina C = {c1}. 2. Para j = 2,...,k : (a) Calcule D(xi) = min c∈C ||xi − c|| para cada xi (b) Escolha uma amostra xi aleatoriamente entre todas as amostras observa- das com probabilidade pi = D2(xi) ∑n j=1 D2(xj) (c) Defina cj como sendo o ponto escolhido. Atualize C ← C ∪ {cj} 211
  • 232.
    11.1. K-Médias A partirdesses passos, o kmédias++ prossegue de forma similar ao K-médias. No R, K-médias pode ser aplicado com a função kmeans. Já o K-médias++ pode ser utilizado via a função kmeanspp do pacote LICORS. Figura 11.1: Algoritmo de Lloyd. 212
  • 233.
    Capítulo 11. Análisede Agrupamento Figura 11.2: Exemplos em que o K-médias com Algoritmo de Lloyd não converge para o mínimo global. Exemplo 11.1. Neste exemplo iremos utilizar o K-médias para fazer um agrupa- mento de pixels de uma imagem. O agrupamento será feito de acordo com as cores do pixel. Cada pixel passará então a ser representado pelo centróide do cluster. As- sim, o número de clusters será o número de cores de cada imagem. library(jpeg) imagem - readJPEG(../Figures/izbicki2.jpg) # organiza a imagem em data frame imagemRGB - tibble( x = rep(1:dim(imagem)[2], each = dim(imagem)[1]), y = rep(dim(imagem)[1]:1, dim(imagem)[2]), R = as.vector(imagem[,, 1]), G = as.vector(imagem[,, 2]), B = as.vector(imagem[,, 3])) k - 2 # especifique o valor de k kMeans - kmeans(imagemRGB[, c(R, G, B)], centers = k) imagemRGB %% 213
  • 234.
    11.1. K-Médias mutate(kColours =rgb(kMeans$centers[kMeans$cluster,])) %% ggplot(aes(x = x, y = y, color = I(kColours))) + geom_point(show.legend = FALSE) + labs(title = paste(k-Means (k =, k, cores))) + theme_minimal() 214
  • 235.
    Capítulo 11. Análisede Agrupamento 11.2 Agrupamento Espectral Métodos de agrupamento espectral são uma classe de algorítmos que fazem agru- pamentos a partir de autovetores. Nessa seção introduziremos um método específico 215
  • 236.
    11.2. Agrupamento Espectral deagrupamento espectral, os mapas de difusão (Coifman e Lafon, 2006; Nadler et al., 2006). Seja K um kernel de Mercer (Definição 1) e K a matriz de Gram associada (Equa- ção 4.11). A ideia chave de mapas de difusão é construir um passeio aleatório nos dados a partir do qual é definida uma métrica entre as observações do banco. Vere- mos que, em algumas situações, essa distância captura melhor a conectividade entre esses pontos que a distância euclidiana. O passeio aleatório utilizado é dado por uma cadeia de Markov no espaço de estados A := {x1,...,xn} que tem matriz de transição M := D−1 K, em que D é a matriz diagonal cuja entrada (i,i) é dada por ∑n j=1 K(xi,xj). Seja pt(xi|xj) a probabilidade de o passeio visitar o estado xi daqui a t passos dado que ele está atualmente no estado xj. A medida estacionária dessa cadeia é dada por s(xi) := ∑n j=1 K(xi,xj) ∑n i=1 ∑n j=1 K(xi,xj) . A distância de difusão no tempo t entre xi e xj é dada por Dt(xi,xj) = ∑ a∈A pt(a|xi) − pt(a|xj) 2 s(a) . (11.1) Dois pontos serão próximos segundo Dt quando houver muitos pontos que são facilmente acessíveis saindo de xi ou de xj. Ou seja, xi e xj são próximos se a cadeia consegue facilmente transitar entre esses pontos em um dado tempo t. Quanto maior t, mais próximos os pontos se tornam. A Figura 11.3 mostra como a distância de difusão difere da distância euclidiana em dois exemplos em que os dados foram simulados de forma a terem como do- mínio dois círculos concêntricos. Em ambos os casos, mostramos os 75 pontos mais próximos ao ponto marcado com um círculo preto. A distância de difusão tende a considerar como próximos pontos que estão no mesmo círculo, enquanto a distância euclidiana não leva em conta a geometria local. Uma forma de usar mapas de difusão para fazer agrupamento é utilizando o al- gorítmo k-médias. Para isso, inicialmente, transformaremos os dados para um novo 216
  • 237.
    Capítulo 11. Análisede Agrupamento espaço em que a distância euclidiana corresponde à distância de difusão no espaço original, de modo que o k-médias possa ser implementado. Figura 11.3: Em azul são mostradas as 75 observações mais próximas ao ponto preto segundo a distância de difusão (acima) e segundo a distância euclidiana (abaixo) . Para isso, denote por λ0,...,λn os autovalores de M ordenados de forma que λ0 ≥ ... ≥ λn. Sejam ψ0,...,ψn ∈ Rn os autovetores à direta correspondentes. Pode- se mostrar que D2 t (xi,xj) = n ∑ k=1 λ2t k ψk(xi) − ψk(xj) 2 = ||Ψ(xi) − Ψ(xj)||2 , (11.2) em que Ψ(xi) := (λt 1ψ1(xi),...,λt nψn(xi)). A transformação Ψ é chamada de mapa (ou transformação) de difusão. Nesse novo 217
  • 238.
    11.2. Agrupamento Espectral espaço,a distância euclidiana pode ser mais apropriada que no espaço original. De fato, a Equação 11.2 mostra que ela corresponde à distância de difusão no espaço original. O mapa de difusão também pode ser utilizado como uma técnica de mudança de representação dos dados, como estudado no Capítulo 10. De fato, o Teorema de Eckart-Young-Mirsky mostra que os primeiros componentes do mapa de difusão são os mais importantes para aproximar a distância de difusão: D2 t (xi,xj) ≈ K ∑ k=1 λ2t k ψk(xi) − ψk(xj) 2 . Isso motiva, por exemplo, a utilização das primeiras coordenadas desse mapa para fazer visualização de dados. Para ajustar mapas de difusão no R, podemos usar o seguinte código: # distâncias Euclidianas: distances - fields::rdist(dados,dados) # tamanho da banda eps - quantile(distances^2, probs = 0.02) # kernel (gaussiano): L - exp(-distances^2/eps) D_inverse - diag(1/rowSums(L)) # matrix de Markov M - D_inverse %*% L # autovetores da direita: eigen_decomp - eigen(M) right_eigen_vectors - Re(eigen_decomp$vectors) # autovetores da esquerda: eigen_decomp - eigen(t(M)) left_eigen_vectors - Re(eigen_decomp$vectors) # autovalores values - Re(eigen_decomp$values) 218
  • 239.
    Capítulo 11. Análisede Agrupamento Figura 11.4: Clusters encontrados pelo k-médias (esquerda) e pelo agrupamento es- pectral via mapas de difusão (direita). # calcular o mapa (transformação) de difusão: mapa - sweep(right_eigen_vectors, MARGIN = 2, values^50, '*') distancias_difusao - fields::rdist(mapa, mapa) A Figura 11.4 mostra os clusters encontrados pelo k-médias usual e pelo k-médias aplicado no mapa de difusão. Esses agrupamentos foram obtidos via library(LICORS) cl - kmeanspp(data = dados, k = 2) # K-médias usual cl_diff - kmeanspp(data = mapa, k = 2) # K-médias espectral 11.3 Métodos Hierárquicos Um problema do método K-médias é que K deve ser especificado de antemão. Métodos hierárquicos são uma alternativa ao K-médias que evitam isso. Esses mé- todos se baseiam na aplicação do seguinte algoritmo (ou uma variação dele): 219
  • 240.
    11.3. Métodos Hierárquicos 1.Atribua cada observação a um cluster diferente. Calcule cada uma das (n 2) distâncias entre esses clusters. 2. Para i = n,n − 1,...,2: (a) Procure entre todos os pares formados por dois dos i clusters aqueles mais parecidos. Junte esses dois clusters em um só. A dissimilaridade entre esses dois clusters indica a altura do dendrograma em que a junção será feita. (b) Calcule cada uma das distâncias entre os novos i − 1 clusters. A Figura 11.5 ilustra esse procedimento passo a passo para um conjunto de dados simulado. Para fazer o agrupamento é necessário definir a distância entre dois clusters. Há várias formas de se definir essas distâncias chamadas de linkages. Algumas formas são: • Complete: a maior das distâncias entre todos os pares de observações perten- centes aos dois clusters. • Single: a menor das distâncias entre todos os pares de observações pertencen- tes aos dois clusters. • Average: a média das distâncias entre todos os pares de observações perten- centes aos dois clusters. • Centroid: a distância entre os centroides dos dois clusters. No R, clustering hierárquico pode ser ajustado com a função hclust, os agrupa- mentos obtidos com a função cutreet e a visualização com a função plot. dendrograma - hclust(dist(dados), method = ave) plot(dendrograma) # particionar os dados em 3 grupos: clusters - cutree(dendrograma, k = 3) 220
  • 241.
    Capítulo 11. Análisede Agrupamento Figura 11.5: Exemplificação da construção do clustering hierárquico. Uma alternativa para visualização pode ser obtida com a função fviz_dend do pacote factoextra (Kassambara e Mundt, 2020). Esse pacote é uma excelente op- ção para rotinas relacionadas a agrupamento, estatística multivariada e visualização, como mostra a Figura 11.6. fviz_dend(dendrograma, k = 3) 221
  • 242.
    11.3. Métodos Hierárquicos Figura11.6: Dendrograma obtido a partir do processo acima. 222
  • 243.
    Capítulo 12 Regras deAssociação Imagine que temos um banco de dados em que cada linha representa a ida de uma pessoa a um supermercado e cada coluna indica se ela comprou ou não deter- minado produto, como mostra a Tabela 12.1. Tabela 12.1: Exemplo de banco de dados utilizado para criar regras de associação. Produto Compra Leite Pão Cerveja Refrigerante 1 0 1 1 0 2 1 1 0 0 3 0 0 1 1 O objetivo de regras de associação (market basket) é descobrir regras que ocorram com alta frequência no banco de dados. Por exemplo, • Quem compra leite em geral também compra pão” • Quem compra cerveja e refrigerante em geral também compra carne”. Com base nessas regras, o mercado pode, por exemplo, decidir a organização dos produtos de forma a maximizar suas vendas ou melhorar a experiência de seus clientes. Outro exemplo de aplicação de regras de associação se dá no contexto de sites de vendas. Os administradores dos sites podem decidir, com base nessas regras, quais produtos oferecer a um usuário com base no histórico de compras. Note que, ainda que a tarefa abordada por regras de associação pareça simples (a princípio basta investigar diversas tabelas de contingência), a chave do problema 223
  • 244.
    . é como fazerisso de forma eficiente. Os bancos de dados obtidos nessas aplicações, geralmente, contém muitas covariáveis e, consequentemente, o número de tabelas a serem investigadas é extremamente grande. Nesta seção, vamos assumir que cada variável Xi do banco é binária (indicadora do produto i ter sido comprado). A fim de tornar o problema de regras de associação factível, nos restringiremos a regras que envolvam subconjuntos S das d variáveis (por exemplo, S = {2,4,10}) tais que P i∈S Xi = 1 ! (12.1) é alto. Assim, nos restringiremos a regras que envolvam combinações de produtos que são frequentemente comprados. A probabilidade da Eq. 12.1 é chamada de suporte do conjunto de itens S e é estimada utilizando-se 1 n ∑n k=1 I(Xk,i = 1 ∀i ∈ S). Busca-se, portanto, entre todos os subconjuntos de itens S, aqueles que tenham suporte maior ou igual a um corte predefinido t. Para tornar a busca por esses conjuntos eficiente, pode-se utilizar o algoritmo Apriori (Agrawal et al., 1993). Para tanto, esse algoritmo explora o fato de que se S0 ⊆ S1, então o suporte de S1 é necessariamente menor ou igual ao suporte de S0. Isso limita o número de subconjuntos que devem ser investigados. Após encontrar todos os subconjuntos S com suporte alto, o algoritmo Apriori busca por regras do tipo A ⇒ B, em que A é chamado de antecedente e B de consequente. Dada uma regra deste tipo, definem-se duas estatísticas que são úteis para descobrir regras de associação interessantes: • Confiança: uma estimativa de P(B|A) (entre os usuários que compraram A, quantos compraram B?) • Lift/Levantamento: Uma estimativa de P(B|A) P(B) (quanto o usuário ter comprado A aumenta a probabilidade dele comprar B?) Assim, buscamos, entre todas as regras que têm suporte maior que t prefixado, aquelas que têm levantamento ou confiança alta. Essa busca é factível, pois, em geral, há poucas regras com suporte alto. 224
  • 245.
    Capítulo 12. Regrasde Associação Regras de associação podem ser implementadas no R com o pacote arules. library(arules) library(arulesViz) # carregar o conjunto de dadis data(Groceries) # encontrar Regras com suporte ao menos 0.005 e confianca 0.5: # obs: maxlen = 3, no máximo 3 itens regras - apriori(Groceries, parameter = list(supp = 0.005, conf = 0.5, maxlen = 3)) ## Apriori ## ## Parameter specification: ## confidence minval smax arem aval originalSupport maxtime support minlen ## 0.5 0.1 1 none FALSE TRUE 5 0.005 1 ## maxlen target ext ## 3 rules TRUE ## ## Algorithmic control: ## filter tree heap memopt load sort verbose ## 0.1 TRUE TRUE FALSE TRUE 2 TRUE ## ## Absolute minimum support count: 49 ## ## set item appearances ...[0 item(s)] done [0.00s]. ## set transactions ...[169 item(s), 9835 transaction(s)] done [0.00s]. ## sorting and recoding items ... [120 item(s)] done [0.00s]. ## creating transaction tree ... done [0.00s]. ## checking subsets of size 1 2 3 done [0.00s]. ## writing ... [99 rule(s)] done [0.00s]. ## creating S4 object ... done [0.00s]. 225
  • 246.
    . arules::inspect(regras[1:5]) lhs rhs supportconfidence coverage lift count baking powder = whole milk 0.01 0.52 0.02 2.05 91 other vegetables,oil = whole milk 0.01 0.51 0.01 2.00 50 root vegetables,onions = other vegetables 0.01 0.60 0.01 3.11 56 onions,whole milk = other vegetables 0.01 0.55 0.01 2.82 65 other vegetables,hygiene articles = whole milk 0.01 0.54 0.01 2.12 51 # reoderdenar por confianca: regras - sort(regras, by = confidence, decreasing = TRUE) arules::inspect(regras[1:5]) lhs rhs support confidence coverage lift count butter,whipped/sour cream = whole milk 0.01 0.66 0.01 2.58 66 pip fruit,whipped/sour cream = whole milk 0.01 0.65 0.01 2.54 59 butter,yogurt = whole milk 0.01 0.64 0.01 2.50 92 root vegetables,butter = whole milk 0.01 0.64 0.01 2.50 81 tropical fruit,curd = whole milk 0.01 0.63 0.01 2.48 64 # reoderdenar por lift: regras = sort(regras, by = lift, decreasing = TRUE) arules::inspect(regras[1:5]) lhs rhs support confidence coverage lift count tropical fruit,curd = yogurt 0.01 0.51 0.01 3.69 52 pip fruit,whipped/sour cream = other vegetables 0.01 0.60 0.01 3.12 55 root vegetables,onions = other vegetables 0.01 0.60 0.01 3.11 56 citrus fruit,root vegetables = other vegetables 0.01 0.59 0.02 3.03 102 tropical fruit,root vegetables = other vegetables 0.01 0.58 0.02 3.02 121 # buscar regras que envolvam cerveja no lado direto (rhs): regras - apriori(data = Groceries, parameter = list(supp = 0.001, conf = 0.08), appearance = list(default = lhs, rhs = bottled beer), 226
  • 247.
    Capítulo 12. Regrasde Associação control = list(verbose = FALSE)) regras - sort(regras, by = lift, decreasing = TRUE) arules::inspect(regras[1:5]) lhs rhs support confidence coverage lift count liquor,red/blush wine = bottled beer 0 0.90 0.00 11.24 19 soda,liquor = bottled beer 0 0.57 0.00 7.10 12 liquor = bottled beer 0 0.42 0.01 5.24 46 herbs,bottled water = bottled beer 0 0.40 0.00 4.97 12 whole milk,soups = bottled beer 0 0.38 0.00 4.71 11 # buscar regras que involvam cerveja no lado esquedo (lhs): regras - apriori(data = Groceries, parameter = list(supp = 0.001, conf = 0.15, minlen = 2), appearance = list(default = rhs, lhs = bottled beer), control = list(verbose = FALSE)) arules::inspect(regras) lhs rhs support confidence coverage lift count bottled beer = bottled water 0.02 0.20 0.08 1.77 155 bottled beer = soda 0.02 0.21 0.08 1.21 167 bottled beer = rolls/buns 0.01 0.17 0.08 0.92 134 bottled beer = other vegetables 0.02 0.20 0.08 1.04 159 bottled beer = whole milk 0.02 0.25 0.08 0.99 201 Para visualizar interativamente as regras, pode-se utilizar regras - apriori(Groceries, parameter = list(supp = 0.001, conf = 0.8)) plot(regras[1:20], method = graph, interactive = TRUE, shading = NA) 227
  • 248.
    . Em geral, utilizam-sematrizes esparsas para representar os dados binários, pois a ma- triz de dados contém poucas entradas 1”. Dessa forma, a representação esparsa leva a uma grande economia de memória. Veja mais detalhes na Seção A.3. 228
  • 249.
    Capítulo 13 Sistemas deRecomendação No Capítulo 12 vimos que regras de associação são uma maneira de indicar um produto a um usuário a partir do seu histórico de compra. Neste capítulo, estudaremos algumas técnicas de recomendação que funcionam em contextos mais gerais. Assuma que cada usuário pode atribuir uma nota (avaliação) para cada produto. Por exemplo, no Netflix, podemos avaliar cada filme como 1, 2, 3, 4 ou 5 estrelas. De um ponto de vista formal, considere os conjuntos U = {u1,...,um} e I = {i1,...,in}, em que U indica o conjunto de usuários e I indica o conjunto de produtos (itens). Seja Rj,k a avaliação dada pelo usuário j ao produto k, como mostrado na Tabela 13.1. Tabela 13.1: Estrutura dos dados para um problema sistemas de recomendação. Usuário/Produto i1 i2 ... in u1 R1,1 R1,2 ... R1,n u2 R2,1 R2,2 ... R2,n . . . . . . . . . . . . . . . um Rm,1 Rm,2 ... Rm,n Normalmente diversas entradas dessa matriz são desconhecidas, pois muitos usuários nunca atribuíram notas para uma grande quantidade de produtos. Uma questão central em um problema de recomendação consiste em como imputar essas notas do modo a descobrir, para cada usuário, produtos não avaliados por ele que provavelmente o agradarão. Existem dois principais grupos de sistemas de recomendação: 229
  • 250.
    13.1. Filtro ColaborativoBaseado no Usuário • Sistemas baseados no conteúdo. Esses sistemas são baseados em características dos produtos que o usuário gosta (por exemplo, diretores dos filmes, gêneros etc) e, com base nesses produtos, busca-se descobrir outros produtos com as mesmas característi- cas. • Sistemas baseados em filtros colaborativos. Esses sistemas fornecem recomendações baseadas somente na matriz de notas. Utilizando essa matriz, procura-se por padrões (por exemplo, usuários parecidos com o usuário de interesse). A suposição básica de filtros colaborativos é que usuários que concordaram no passado irão concordar no fu- turo. Sistemas baseados no conteúdo, em geral, são obtidos através de métodos de regressão já estudados anteriormente. Assim, focaremos aqui em filtros colaborativos. Observação 13.1 (Normalização das notas). É comum se observar um viés nas notas. Alguns usuários tendem a dar notas muito altas para todos os produtos; outros tendem a dar notas muito baixas. Para tentar levar isso em consideração, é comum normalizar as notas de cada usuário antes de aplicar os métodos descritos nesse capítulo. Uma forma de se fazer isso é trabalhar com as avaliações dadas por e Rj,k = Rj,k − R̄j, em que R̄j é a média das notas dadas pelo usuário j. Nas Seções 13.1-13.3 apresentaremos alguns filtros colaborativos comumente utilizados enquanto na Seção 13.4 discutiremos como avaliar a performance desses métodos, bem como fazer seleção de modelos. 13.1 Filtro Colaborativo Baseado no Usuário Filtros colaborativos baseados no usuário funcionam de forma parecida com o método KNN (Seções 4.3 e 8.6). Inicialmente, define-se uma medida de similaridade entre os usuários que avalia a similaridade entre as notas por eles atribuídas. Uma medida usual é a correlação de Pearson: sim(ua,ub) = cor(R∗ ua,.,R∗ ub,.), em que R∗ ua,. é o vetor de notas atribuídas pelo usuário ua aos produtos avaliados por ambos ua e ub. 230
  • 251.
    Capítulo 13. Sistemasde Recomendação Seja k ≥ 1 fixo. Para estimar Rj,l, a nota que o usuário j daria para o produto l caso o avaliasse, buscam-se os k usuários mais parecidos a j (isto é, os usuários com maior similari- dade com j) que avaliaram o produto l. Calcula-se, então, as médias das notas dadas por esses k usuários ao produto l b Rj,l = 1 k ∑ s∈Vj Rs,l, em que Vj é o conjunto dos k usuários mais similares ao usuário j. O valor de k pode ser escolhido com a utilização de técnicas abordadas na Seção 13.4. 13.2 Filtro Colaborativo Baseado no Produto Filtros colaborativos baseados no produto são muito parecidos com filtros colaborativos baseados no usuário (Seção 13.1). A diferença básica entre ambos é que, para se estimar Rj,l, a nota que o usuário j daria para o produto l caso o avaliasse, buscam-se agora os k produtos mais parecidos ao item l (e não os k usuários mais parecidos com j). Para medir a similaridade entre as notas atribuídas por cada um dos usuários ao produto l com as notas atribuídas por cada um dos usuários aos outros produtos, pode-se, novamente, utilizar a correlação de Pearson. Dessa vez, definida como: sim(ia,ib) = cor(R∗ .,ia ,R∗ .,ib ), em que R∗ .,ia é o vetor de notas atribuídas para o produto ia por cada um dos usuários que avaliaram ia e ib. A predição para Rj,l é então dada pelas médias das notas dos k produtos mais parecidos a l: b Rj,l = 1 k ∑ s∈Vl Rj,s, em que Vl é o conjunto dos k produtos mais similares ao produto l. Novamente, o valor de k pode ser escolhido com a utilização de técnicas abordadas na Seção 13.4. 13.3 FunkSVD Neste método, desenvolvido por Simon Funk em https://sifter.org/simon/journal/20061211. html, cada usuário j é descrito por um vetor de variáveis latentes uj e cada produto l é des- crito por um vetor de variáveis latentes vl. A ideia é modelar cada nota utilizando a seguinte aproximação: Rj,l ≈ u | j vl. 231
  • 252.
    13.4. Seleção deModelos Os vetores latentes são estimados de forma a minimizar ∑ j ∑ l Rj,l − u | j vl 2 , em que a somatória é feita sob todos os índices referentes às avaliações feitas por cada usuário. Essa minimização é feita utilizando-se um método de gradiente descendente estocástico, o que torna o processo rápido e eficiente em termos de utilização de memória. 13.4 Seleção de Modelos Para comparar modelos de sistemas de recomendação, utilizamos uma variação de data splitting (Seção 1.5.1). Essa técnica permite também escolher parâmetros dos modelos utili- zados (por exemplo, k no filtro colaborativo). Primeiramente, separamos os usuários em dois conjuntos: treinamento e validação. Então, consideramos que algumas das notas dadas por alguns dos usuários do conjunto de validação são desconhecidas e verificamos a capacidade de previsão dos algoritmos utilizados para essas notas. Seja K o conjunto de todos os pares usuário/produto para o qual a nota real Ri,j é conhe- cida, mas não foi utilizada para treinar o modelo. Diversas medidas da capacidade preditiva podem ser utilizadas, dentre as quais • MSE: ∑(i,j)∈K(Ri,j−b Ri,j)2 |K| • RMSE: √ EQM • MAE: ∑(i,j)∈K |Ri,j−b Ri,j| |K| . Essas medidas avaliam o desempenho preditivo dos modelos e podem ser utilizadas para fazer seleção de modelos. Contudo, podemos ter interesse apenas em medir se o método está fornecendo boas recomendações, e não se as notas individuais são preditas de forma satisfatória. Para tanto, outras medidas podem ser utilizadas. Assuma que recomendamos para um dado usuário os N produtos com maior valor predito para a avaliação. Assuma também que definimos o que é uma avaliação boa e o que é uma avaliação ruim (por exemplo, uma avaliação boa é uma nota maior que 3). Com base nas N recomendações feitas para cada usuário do conjunto de validação (isto é, os N produtos com maior nota predita), podemos construir a matriz de confusão apresentada na Tabela 13.2. 232
  • 253.
    Capítulo 13. Sistemasde Recomendação Tabela 13.2: Matriz de confusão para produtos recomendados. Valor Verdadeiro Valor Predito Ruim Bom Ruim a b Bom c d A partir dessa tabela diversas medidas podem ser utilizadas para fazer seleção de mode- los. Entre elas destacamos: • Acurácia: a+d a+b+c+d • VPP/Precision: d b+d • Sensibilidade/Recall: d c+d Outra medidas de desempenho definidas na Seção 7.4 no contexto de classificação podem também ser utilizadas. A Figura 13.1 ilustra algumas dessas medidas para três sistemas de recomendação aplicados ao banco de dados MovieLense. Esses sistemas foram treinados com a utilização do pacote recommenderlab: library(recommenderlab, verbose = FALSE) # dados de filmes data(MovieLense) # listar algoritmos utilizados atribuindo nomes metodos - list( item-based CF 1 = list(name = IBCF, param = list(k = 5)), user-based CF 1 = list(name = UBCF, param = list(nn = 5)), funkSVD = list(name = SVDF)) # definir o esquema do data splitting esquema1 - evaluationScheme(MovieLense, method = split, train = 0.8, given = 15) # given: nº de avaliações já feitas # por cada usuário do conjunto de teste 233
  • 254.
    13.4. Seleção deModelos Figura 13.1: Valor verdadeiro positivo vs valor verdadeiro negativo para diferentes métodos e N = 1, 5 e 10. # parte 1: avaliar o quao bom sao as notas atribuidas results1 - recommenderlab::evaluate(esquema1, metodos, type = ratings, progress = FALSE) # parte 2: avaliar o quao bom sao as recomendacoes top-N esquema2 - evaluationScheme(MovieLense, method = split, train = 0.8, given = 10, goodRating = 3) # goodRating: a partir de que nota consideramos que temos # uma boa predicao? results2 - recommenderlab::evaluate(esquema2, metodos, n = c(1, 5, 10), progress = FALSE) # n: quantos produtos estamos recomendando 234
  • 255.
  • 257.
    Apêndice A Apêndice A.1 Imagens Estecapítulo descreve brevemente como manipular imagens que têm formato do tipo ras- ter, como por exemplo JPEG e PNG. Um formato é dito do tipo raster quando ele representa uma dada imagem utilizando uma ou mais matrizes que contenham informações sobre os pi- xels da figura. Para entender esse conceito, vamos começar com uma ideia simples: considere a matriz binária M =    1 1 0 1 1 0 0 0 0    A ideia chave é que podemos associar a essa matriz a imagem Figura A.1: Imagem correspondente à matriz M. Nessa representação uma entrada 1 na matriz simboliza que o pixel correspondente a esse 237
  • 258.
    A.1. Imagens elemento naimagem tem a cor preto enquanto o valor 0 simboliza um pixel de cor branca. A partir dessa ideia podemos criar imagens como Figura A.2: Imagem feita utilizando-se apenas uma matriz binária. Note que, quanto mais pixels em uma imagem (i.e., quanto mais entradas há em uma matriz), maior a resolução da imagem. Essa ideia pode ser sofisticada. Ao invés de utilizar apenas 0 (branco) e 1 (preto), pode- mos utilizar qualquer número entre 0 e 1 para denotar uma intensidade de cinza. Com isso, podemos fazer imagens como Figura A.3: Imagem feita utilizando-se uma matriz cujas entradas representam o tom de cinza a ser utilizado. A partir desse princípio podemos construir imagens coloridas. Qualquer cor pode ser des- crita como uma combinação das cores vermelho, verde e azul. Assim, podemos representar uma imagem com três matrizes simultaneamente: • A primeira indica quanto vermelho vamos ter em cada pixel (cada elemento é um nú- mero entre 0 e 1) 238
  • 259.
    Apêndice A. Apêndice •A segunda indica quanto verde vamos ter em cada pixel (cada elemento é um número entre 0 e 1) • A terceira indica quanto azul vamos ter em cada pixel (cada elemento é um número entre 0 e 1) Com isso, podemos fazer imagens como Figura A.4: Imagem feita utilizando três matrizes cujas entradas representam a in- tensidade de vermelho, verde e azul utilizada em cada pixel. Essas matriz são as chamadas de RGB channels (RGB é a sigla em inglês para vermelho, verde e azul). Cada matriz é chamada de um canal. Note que utilizar o valor 0 para branco e 1 preto é apenas uma convenção. Formatos diferentes utilizam convenções diferentes (por exemplo, alguns formatos atribuem 0 a branco e 256 a preto). Em vários dos formatos também é feita uma compressão da imagem, de modo que ela ocupe menos espaço. Nesse caso, leitores destes formatos devem saber também como descomprimi-las (o que muitas vezes leva a uma pequena perda de resolução). Para ler uma imagem no R, podemos utilizar o seguinte código. m - matrix(c(1, 1, 0, 1, 1, 0, 0, 0, 0), 3, 3) image(m[,3:1], col = c(white, black)) ## Exemplo do simbolo da ufscar: library(jpeg) imagem - readJPEG(1024px-UFSCar.jpg) # ler a imagem dim(imagem) #[1] 746 1024 3 # 3 matrizes com 746*1024 pixels image(t(imagem[746:1,, 3]), col = grey.colors(1000, start = 0, end = 1)) # imagem em tons de cinza (utilizando apenas a terceira matriz) rasterImage(imagem, 0, 0, 1, 1) # imagem colorida 239
  • 260.
    A.2. Textos A.2 Textos Digamosque observamos diversos documentos de texto, como, por exemplo, o texto em uma página de internet, o texto de um tweet ou de um post do facebook. Nesta seção descre- veremos o método bag-of-words. Esse método é utilizado para criar uma representação vetorial (ou seja, criar covariáveis) para cada texto. Considere os seguintes textos, retirados de uma conta de e-email: Texto 1: x1 = Poderoso Estimulante Natural - Esquente sua noite na cama.” Texto 2: x2 = Olá professor, sou aluna de Mineração de Dados.” Texto 3: x3 = Boa tarde professor Rafael, segue contato como pedido.” Texto 4: x4 = Aumente sua performance na cama a noite usando esse estimulante. Es- quente seu relacionamento!” A ideia do bag-of-words (literalmente, sacola de palavras”) é listar todas as palavras que aparecem nos documentos e registrar a frequência com que cada uma aparece. Esse processo leva à seguinte matriz documento-termo: Tabela A.1: Exemplo de matriz documento-termo poderoso estimulante natural esquente sua noite na ... esse Texto 1 1 1 1 1 1 1 1 ... 0 Texto 2 0 0 0 0 0 0 1 ... 0 Texto 3 0 0 0 0 0 0 0 ... 0 Texto 4 0 1 0 1 1 1 1 ... 1 Nessa matriz documentos próximos” têm uma representação mais parecida, pois utili- zam palavras parecidas. Há algumas variações que podem ser feitas nessa matriz documento- termo. Por exemplo, como documentos diferentes têm tamanhos diferentes, pode-se norma- lizar esses vetores (por exemplo, dividindo-se as frequências absolutas pelo tamanho de cada um dos documentos. Isso torna os diferentes documentos mais comparáveis. Outra alteração comumente feita na representação bag-of-words consiste em remover pa- lavras muito comuns, como artigos e preposições. Essas palavras são chamadas de stop words. A maioria dos pacotes para trabalhar com texto (como o tm do R) já contém uma lista delas. Finalmente, também pode-se juntar palavras que têm mesma raiz (um processo chamado de stemming). Um problema da representação da Tabela A.1 é que ela ignora completamente a ordem das palavras. Uma maneira de contornar isso é adicionar termos que são bigramas. Bigra- mas são conjuntos de duas palavras que aparecem simultaneamente, uma seguida da outra (como poderoso estimulante” no exemplo). Cada bigrama pode também fazer parte da ma- triz documento-termo. Essa ideia é generalizada para n-gramas. 240
  • 261.
    Apêndice A. Apêndice A.3Matrizes esparsas Matrizes esparsas são matrizes com muitas entradas 0. Elas ocorrem naturalmente em diversas aplicações. Por exemplo, a matriz documento-termo descrita na Seção A.2 possui, em geral, quase todas as entradas 0, uma vez que cada texto utiliza poucas palavras de todo o dicionário. Analogamente, matrizes de dados utilizadas em algoritmos de regras de as- sociação também costumam ser esparsas: a maior parte das compras de mercado envolvem pouquíssimos produtos. Matrizes esparsas podem ser armazenadas de forma mais eficiente. Por exemplo, consi- dere a matriz       0 −5 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 0 0 0 5 0 0 9 0 8 0 0       Uma representação ingênua dessa matriz requer o armazenamento de 4 × 7 = 28 números, um para cada entrada da matriz. Uma representação mais eficiente consiste em armazenar apenas as entradas que são diferentes de zero. Assim, temos a seguinte representação nesse caso: Linha Coluna Valor 1 2 -5 2 3 10 3 7 5 4 3 9 4 5 8 Essa segunda representação, que é chamada de representação esparsa, exige armazenar ape- nas 5 × 3 = 15 números. Assim, ela utiliza menos memória do computador, o que permite que matrizes muito maiores possam ser armazenadas. Tanto o pacote tm quando o arules fornecem matrizes com essa representação. Con- tudo, nem todos os pacotes com algoritmos de aprendizado de máquina dão suporte para matrizes com representação esparsa. Por exemplo, enquanto o pacote glmnet pode ajustar uma regressão com uma matriz de covariáveis nesse formato, a função lm requer que a matriz seja convertida para uma matriz em sua representação usual. Essa limitação é um obstáculo para que algumas dessas funções possam ser utilizadas em bancos de dados grandes (mas esparsos). 241
  • 262.
  • 263.
    Índice Remissivo Agrupamento espectral,215 AIC, 34 Análise de agrupamento, 209 Análise discriminante, 147 Aprendizado não supervisionado, xiv Aprendizado supervisionado, xiv Atributos, 4 Autoencoders, 202 Backpropagation, 95 Bag-of-words, 240 Bagging, 82 Bayes ingênuo, 144 Boosting, 89, 159 Características (features), 4 Classificadores plug-in, 141 Classificação, 133 Clustering hierárquico, 219 Combinação de classificadores, 177 Componentes principais, 190 Conjunto de teste, 14 Conjunto de treinamento, 14 Conjunto de validação, 14 Convergência, 102 Covariate shift, 173 Curva ROC, 170 Data splitting, 14 Dataset shift, 172 Deep learning, 96 Densidade condicional, 124 Dimensão VC, 182 Escalonamento multidimensional, 193 Esparsidade, 109 ExplainableML, 119 Filtro colaborativo, 230, 231 Florestas aleatórias, 82, 85 FunkSVD, 231 Função de ativação, 92 Função de perda, 9 ICE, 122 Individual conditional expectation, 122 Inferência Conformal, 127 Interpretabilidade, 119 K-médias, 210 Kernel de Mercer, 64 Kernel de suavização, 59 Kernel PCA, 198 Kernel ridge regression, 67 Lasso, 37 LIME, 120 243
  • 264.
    . Lipschitz, 102 Maldição dadimensionalidade, 107 Mapas de difusão, 215 Matriz de Gram, 68 Matrizes esparsas, 241 Minimax, 106 Modelos aditivos, 74 Modelos aditivos esparsos, 115 Método de mínimos quadrados, 28 Nadaraya-Watson, 59 Oráculo, 29 Overfitting, 12 Paramétrica, 27 Partial dependence plot, 122 PDP, 122 Penalização, 21, 34 Perda 0-1, 134 Prior shift, 176 Projeções aleatórias, 201 Rótulo (label), 4 Redes neurais artificiais, 91, 161 Redundância, 110 Redução de dimensionalidade, 189 Regras de associação, 223 Regressão, 3 Regressão linear, 27 Regressão logística, 142 regressão polinomial local, 61 Regressão ridge, 40 Risco, 9, 134 Risco condicional, 11 Risco esperado, 11 Risco quadrático, 10 RKHS, 62 Seleção de variáveis, 42 Shattering number, 181 Sistemas de recomendação, 229 Smoothing splines, 68 Splines, 56 Stepwise, 35 Sub-ajuste, 12 Super-ajuste, 12 Support vector machines, 151 Support vector regression machine, 73 Séries ortogonais, 53 Teoria do aprendizado estatístico, 179 Truque do kernel, 69 Tuning parameters, 24 Underfitting, 12 Validação cruzada, 14 Variáveis explicativas, 4 Variável resposta, 4 Viés de seleção, 172 XGBoost, 91 Árvore de regressão, 77 Árvores de classificação, 156 244
  • 265.
    Bibliografia Agrawal, R., Imieliński,T. Swami, A. (1993). Mining association rules between sets of items in large databases, Em Proceedings of the 1993 ACM SIGMOD international conference on Management of data. Aronszajn, N. (1950). Theory of Reproducing Kernels. Transactions of the American Mathematical Society, 68(3), 337–404. Arthur, D. Vassilvitskii, S. (2006). k-means++: The advantages of careful seeding (rel. técn.). Stanford. Aswani, A., Bickel, P., Tomlin, C. Et al. (2011). Regression on manifolds: estimation of the exterior derivative. The Annals of Statistics, 39(1), 48–81. Belkin, M., Hsu, D., Ma, S. Mandal, S. (2019a). Reconciling modern machine- learning practice and the classical bias–variance trade-off. Proceedings of the National Academy of Sciences, 116(32), 15849–15854. Belkin, M., Hsu, D. J. Mitra, P. (2018). Overfitting or perfect fitting? Risk bounds for classification and regression rules that interpolate, Em Advances in neural information processing systems. Belkin, M., Rakhlin, A. Tsybakov, A. B. (2019b). Does data interpolation contra- dict statistical optimality?, Em The 22nd International Conference on Artificial Intelligence and Statistics. Bellman, R. (1966). Dynamic programming. Science, 153(3731), 34–37. Benedetti, J. K. (1977). On the nonparametric estimation of regression functions. Jour- nal of the Royal Statistical Society. Series B (Methodological), 248–253. Bengio, Y., Delalleau, O., Roux, N. L., Paiement, J.-F., Vincent, P. Ouimet, M. (2004). Learning eigenfunctions links spectral embedding and kernel PCA. Neural computation, 16(10), 2197–2219. Beran, R. (2000). REACT scatterplot smoothers: Superefficiency through basis eco- nomy. Journal of the American Statistical Association, 95(449), 155–171. 245
  • 266.
    . Biau, G. (2012).Analysis of a Random Forests Model. JMLR, 13(1), 1063–1095. Bickel, P. J. Li, B. (2007). Local polynomial regression on unknown manifolds. Em Complex datasets and inverse problems (pp. 177–186). Institute of Mathematical Statistics. Bishop, C. M. (2006). Pattern recognition and machine learning. Springer. Botari, T., Izbicki, R. de Carvalho, A. C. (2019). Local Interpretation Methods to Machine Learning Using the Domain of the Feature Space, Em Joint European Conference on Machine Learning and Knowledge Discovery in Databases. Sprin- ger. Breiman, L. (2001a). Statistical modeling: The two cultures. Statistical Science, 16(3), 199–231. Breiman, L. (1996). Stacked regressions. Machine learning, 24(1), 49–64. Breiman, L. (2001b). Random Forests. Machine Learning, 45(1), 5–32. Chen, T. Guestrin, C. (2016). Xgboost: A scalable tree boosting system, Em Procee- dings of the 22nd acm sigkdd international conference on knowledge discovery and data mining. Chentsov, N. (1962). Evaluation of an unknown distribution density from observati- ons. DOKLADY, 147(1), 1559–1562. Cherkassky, V., Shao, X., Mulier, F. M. Vapnik, V. N. (1999). Model complexity control for regression using VC generalization bounds. IEEE transactions on Neural Networks, 10(5), 1075–1089. Cleveland, W. S. (1979). Robust locally weighted regression and smoothing scatter- plots. Journal of the American statistical association, 74(368), 829–836. Coifman, R. R. Lafon, S. (2006). Diffusion maps. Applied and computational harmonic analysis, 21(1), 5–30. Cortes, C. Vapnik, V. (1995). Support vector machine. Machine learning, 20(3), 273– 297. Coscrato, V., de Almeida Inácio, M. H. Izbicki, R. (2020). The NN-Stacking: Feature weighted linear stacking through neural networks. Neurocomputing. Coscrato, V., Inácio, M. H. d. A., Botari, T. Izbicki, R. (2019). NLS: an accurate and yet easy-to-interpret regression method. arXiv preprint arXiv:1910.05206. Dalmasso, N., Pospisil, T., Lee, A. B., Izbicki, R., Freeman, P. E. Malz, A. I. (2020). Conditional density estimation tools in python and R with applications to photometric redshifts and likelihood-free cosmological inference. Astronomy and Computing, 100362. 246
  • 267.
    Apêndice A. Bibliografia DeBoor, C., De Boor, C., Mathématicien, E.-U., De Boor, C. De Boor, C. (1978). A practical guide to splines (Vol. 27). Springer-Verlag New York. DeGroot, M. H. Schervish, M. J. (2012). Probability and statistics. Pearson Education. Dietterich, T. G. (2000). Ensemble methods in machine learning, Em International workshop on multiple classifier systems. Springer. Diniz, M. A., Izbicki, R., Lopes, D. Salasar, L. E. (2019). Comparing probabilistic predictive models applied to football. Journal of the Operational Research Soci- ety, 70(5), 770–782. Drineas, P. Mahoney, M. W. (2005). On the Nyström method for approximating a Gram matrix for improved kernel-based learning. Journal of Machine Learning Research, 6(Dec), 2153–2175. Drucker, H., Burges, C. J., Kaufman, L., Smola, A. J. Vapnik, V. (1997). Support vec- tor regression machines, Em Advances in neural information processing systems. Efromovich, S. (1999). Nonparametric Curve Estimation: Methods, Theory and Applica- tion. Springer. Fan, J. (1993). Local Linear Regression Smoothers and Their Minimax Efficiencies. Annals of Statistics, 21, 196–216. Fan, J. Gijbels, I. (1996). Local polynomial modelling and its applications (Vol. 66). Mo- nographs on statistics; applied probability 66, CRC Press. Fan, J., Yao, Q. Tong, H. (1996). Estimation of conditional densities and sensitivity measures in nonlinear dynamical systems. Biometrika, 83(1), 189–206. Fernandez, P. F., P. C. M. (2020). Data Science, Marketing Business. Insper. https: //datascience.insper.edu.br Forman, G. (2006). Quantifying trends accurately despite classifier error and class imbalance, Em Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining. Freeman, P. E., Izbicki, R. Lee, A. B. (2017). A unified framework for constructing, tuning and assessing photometric redshift density estimates in a selection bias setting. Monthly Notices of the Royal Astronomical Society, 468(4), 4556– 4565. Freund, Y. Schapire, R. E. (1995). A desicion-theoretic generalization of on-line lear- ning and an application to boosting, Em European conference on computational learning theory. Springer. Friedman, J., Hastie, T. Tibshirani, R. (2010). Regularization paths for generalized linear models via coordinate descent. Journal of statistical software, 33(1), 1. 247
  • 268.
    . Friedman, J. H.(2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189–1232. Gauss, C. (1809). Theoria motus corporum coelestium in sectionibus conicis solem ambien- tium. Goldstein, A., Kapelner, A., Bleich, J. Pitkin, E. (2015). Peeking inside the black box: Visualizing statistical learning with plots of individual conditional ex- pectation. Journal of Computational and Graphical Statistics, 24(1), 44–65. Goodfellow, I., Bengio, Y. Courville, A. (2016). Deep learning. MIT press. Greenshtein, E., Ritov, Y. Et al. (2004). Persistence in high-dimensional linear predic- tor selection and the virtue of overparametrization. Bernoulli, 10(6), 971–988. Györfi, L., Kohler, M., Krzyzak, A. Walk, H. (2006). A distribution-free theory of non- parametric regression. Springer Science Business Media. Hall, P., Racine, J. S. Li, Q. (2004). Cross-Validation and the Estimation of Condi- tional Probability Densities. Journal of the American Statistical Association, 99, 1015–1026. Hastie, T. Tibshirani, R. (1986). Generalized Linear Models (with Discussion). Sta- tistical Science, 1(3), 297–318. Hastie, T., Tibshirani, R. Friedman, J. (2001). The Elements of Statistical Learning. New York, NY, USA, Springer New York Inc. Hoerl, A. E. Kennard, R. W. (1970). Ridge regression: Biased estimation for no- northogonal problems. Technometrics, 12(1), 55–67. Hyndman, R. J., Bashtannyk, D. M. Grunwald, G. K. (1996). Estimating and visua- lizing conditional densities. Journal of Computational Graphical Statistics, 5, 315–336. Izbicki, R. Lee, A. B. (2016). Nonparametric Conditional Density Estimation in a High-Dimensional Regression Setting. Journal of Computational and Graphical Statistics, 25(4), 1297–1316. Izbicki, R. Lee, A. B. (2017). Converting high-dimensional regression to high-dimensional conditional density estimation. Electron. J. Statist., 11(2), 2800–2831. Izbicki, R., Lee, A. B. Freeman, P. E. (2017). Photo-z estimation: An example of non- parametric conditional density estimation under selection bias. The Annals of Applied Statistics, 11(2), 698–724. Izbicki, R., Lee, A. B. Pospisil, T. (2019). ABC–CDE: Toward approximate bayesian computation with complex high-dimensional data and limited simulations. Journal of Computational and Graphical Statistics, 28(3), 481–492. 248
  • 269.
    Apêndice A. Bibliografia Izbicki,R. Musetti, M. (2020). Combinando Métodos de Aprendizado Supervi- sionado para a Melhoria da Previsão do Redshift de Galáxias. TEMA (São Carlos), 21(1), 117. Izbicki, R., Shimizu, G. Stern, R. B. (2020a). CD-split: efficient conformal regions in high dimensions. arXiv preprint arXiv:2007.12778. Izbicki, R., Shimizu, G. T. Stern, R. B. (2020b). Distribution-free conditional predic- tive bands using density estimators. Proceedings of Machine Learning Research (AISTATS Track). Izbicki, R. Stern, R. B. (2013). Learning with many experts: model selection and sparsity. Statistical Analysis and Data Mining: The ASA Data Science Journal, 6(6), 565–577. James, G., Witten, D., Hastie, T. Tibshirani, R. (2013). An introduction to statistical learning (Vol. 112). Springer. Johnson, W. B. Lindenstrauss, J. (1984). Extensions of Lipschitz mappings into a Hilbert space. Contemporary mathematics, 26(189-206), 1. Kassambara, A. Mundt, F. (2020). factoextra: Extract and Visualize the Results of Mul- tivariate Data Analyses [R package version 1.0.7]. R package version 1.0.7. https://CRAN.R-project.org/package=factoextra Kimeldorf, G. Wahba, G. (1971). Some results on Tchebycheffian spline functions. Journal of Mathematical Analysis and Applications, 33(1), 82–95. Kimeldorf, G. S. Wahba, G. (1970). A correspondence between Bayesian estimation on stochastic processes and smoothing by splines. The Annals of Mathematical Statistics, 495–502. Kpotufe, S. (2011). k-NN regression adapts to local intrinsic dimension, Em Advances in Neural Information Processing Systems. Krantz, S. G. Parks, H. R. (2002). A primer of real analytic functions. Springer. Lad, F. (1996). Operational subjective statistical methods: A mathematical, philosophical, and historical introduction (Vol. 315). Wiley-Interscience. Lee, A. B. Izbicki, R. (2016). A spectral series approach to high-dimensional non- parametric regression. Electronic Journal of Statistics, 10(1), 423–463. Legendre, A. M. (1805). Nouvelles méthodes pour la détermination des orbites des comètes. F. Didot. Lei, J., G’Sell, M., Rinaldo, A., Tibshirani, R. J. Wasserman, L. (2018). Distribution- free predictive inference for regression. Journal of the American Statistical As- sociation, 113(523), 1094–1111. 249
  • 270.
    . Lei, J. Wasserman, L. (2014). Distribution-free prediction bands for non-parametric regression. Journal of the Royal Statistical Society: Series B (Statistical Methodo- logy), 76(1), 71–96. Lundberg, S. M. Lee, S.-I. (2017). A unified approach to interpreting model predic- tions, Em Advances in neural information processing systems. McCulloch, W. S. Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics, 5(4), 115–133. Minh, H. Q. (2010). Some properties of Gaussian reproducing kernel Hilbert spa- ces and their implications for function approximation and learning theory. Constructive Approximation, 32(2), 307–338. Minh, H. Q., Niyogi, P. Yao, Y. (2006). Mercer’s theorem, feature maps, and smo- othing, Em International Conference on Computational Learning Theory. Sprin- ger. Molnar, C. (2019). Interpretable machine learning. Lulu.com. Morettin, P. A. Singer, J. M. (2019). Introdução à Ciência de Dados. Nadaraya, E. A. (1964). On estimating regression. Theory of Probability Its Applica- tions, 9(1), 141–142. Nadler, B., Lafon, S., Coifman, R. R. Kevrekidis, I. G. (2006). Diffusion maps, spec- tral clustering and reaction coordinates of dynamical systems. Applied and Computational Harmonic Analysis, 21(1), 113–127. Neter, J., Kutner, M. H., Nachtsheim, C. J. Wasserman, W. (1996). Applied linear statistical models. Nosedal-Sanchez, A., Storlie, C. B., Lee, T. C. Christensen, R. (2012). Reproducing kernel hilbert spaces for penalized regression: A tutorial. The American Sta- tistician, 66(1), 50–60. Papadopoulos, H., Proedrou, K., Vovk, V. Gammerman, A. (2002). Inductive confi- dence machines for regression, Em European Conference on Machine Learning. Springer. Park, T. Casella, G. (2008). The bayesian lasso. Journal of the American Statistical Association, 103(482), 681–686. Parzen, E. (1962). On estimation of a probability density function and mode. The annals of mathematical statistics, 33(3), 1065–1076. Pearce, N. D. Wand, M. P. (2006). Penalized splines and reproducing kernel methods. The american statistician, 60(3). 250
  • 271.
    Apêndice A. Bibliografia Pearl,J. (2014). Probabilistic reasoning in intelligent systems: networks of plausible infe- rence. Elsevier. Pontil, M. (2003). Learning with reproducing kernel Hilbert spaces: a guide tour. Bulletin of the Italian Artificial Intelligence Association, AI* IA Notizie. Ravikumar, P., Lafferty, J., Liu, H. Wasserman, L. (2009). Sparse additive models. Journal of the Royal Statistical Society: Series B, 71(5), 1009–1030. Ribeiro, M. T., Singh, S. Guestrin, C. (2016). Why should i trust you?Explaining the predictions of any classifier, Em Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. Ribeiro, M. T., Singh, S. Guestrin, C. (2018). Anchors: High-precision model-agnostic explanations, Em Thirty-Second AAAI Conference on Artificial Intelligence. Rojas, R. (2013). Neural networks: a systematic introduction. Springer Science Business Media. Rosenblatt, F. (1958). The perceptron: a probabilistic model for information storage and organization in the brain. Psychological review, 65(6), 386. Rosenblatt, M. (1969). Conditional probability density and regression estimators. Em P. Krishnaiah (Ed.), Multivariate Analysis II. Saerens, M., Latinne, P. Decaestecker, C. (2002). Adjusting the outputs of a classifier to new a priori probabilities: a simple procedure. Neural computation, 14(1), 21–41. Schmidt, S. J., Malz, A. I., Soo, J. Y. H., Almosallam, I. A., Brescia, M., Cavuoti, S., Cohen-Tanugi, J., Connolly, A. J., DeRose, J., Freeman, P. E., Graham, M. L., Iyer, K. G., Jarvis, M. J., Kalmbach, J. B., Kovacs, E., Lee, A. B., Longo, G., Morrison, C. B., Newman, J. A., ... Izbicki, R. (2020). Evaluation of proba- bilistic photometric redshift estimation approaches for The Rubin Observa- tory Legacy Survey of Space and Time (LSST) [staa2799]. Monthly Notices of the Royal Astronomical Society, https://academic.oup.com/mnras/advance- article-pdf/doi/10.1093/mnras/staa2799/33745738/staa2799.pdf. https:// doi.org/10.1093/mnras/staa2799 Scholkopf, B. Smola, A. (2002). Learning with kernels. MIT Press, 110–146. Shi, T., Belkin, M., Yu, B. Et al. (2009). Data spectroscopy: Eigenspaces of convolution operators and clustering. The Annals of Statistics, 37(6B), 3960–3984. Stamey, T. A., Kabalin, J. N. Ferrari, M. (1989). Prostate Specific Antigen in the Diagnosis and Treatment of Adenocarcinoma of the Prostate. II. Radiation Treated Patients. The Journal of urology, 141(5), 1084–1087. 251
  • 272.
    . Steinwart, I. Christmann, A. (2008). Support vector machines. Springer Science Business Media. Stone, C. J. (1977). Consistent nonparametric regression. The annals of statistics, 595– 620. Stone, M. (1974). Cross-validatory choice and assessment of statistical predictions. Journal of the Royal Statistical Society: Series B (Methodological), 36(2), 111–133. Sugiyama, M., Lawrence, N. D. Schwaighofer, A. (2017). Dataset shift in machine learning. The MIT Press. Sugiyama, M., Takeuchi, I., Suzuki, T., Kanamori, T., Hachiya, H. Okanohara, D. (2010). Conditional density estimation via least-squares density ratio esti- mation, Em Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics. Tenenbaum, J. B., De Silva, V. Langford, J. C. (2000). A global geometric framework for nonlinear dimensionality reduction. science, 290(5500), 2319–2323. Tibshirani, R. (1996). Regression shrinkage and selection via the lasso. Journal of the Royal Statistical Society: Series B (Methodological), 58(1), 267–288. Tsybakov, A. B. (2008). Introduction to nonparametric estimation. Springer Science Business Media. Vapnik, V. N. (1999). An overview of statistical learning theory. IEEE transactions on neural networks, 10(5), 988–999. Vaz, A. F., Izbicki, R. Stern, R. B. (2019). Quantification Under Prior Probability Shift: the Ratio Estimator and its Extensions. Journal of Machine Learning Re- search, 20(79), 1–33. Vovk, V. Et al. (2005). Algorithmic learning in a random world. Springer Science Busi- ness Media. Vovk, V., Nouretdinov, I., Gammerman, A. Et al. (2009). On-line predictive linear regression. The Annals of Statistics, 37(3), 1566–1590. Wahba, G. (1990). Spline Models for Observational Data. SIAM. Wasserman, L. (2006). All of Nonparametric Statistics (Springer, Ed.). Springer-Verlag New York, Inc. Watson, G. S. (1964). Smooth regression analysis. Sankhyā: The Indian Journal of Statis- tics, Series A, 359–372. 252
  • 273.