• Nenhum resultado encontrado

Redução de Dimensionalidade e Agrupamento de Dados

N/A
N/A
Protected

Academic year: 2021

Share "Redução de Dimensionalidade e Agrupamento de Dados"

Copied!
94
0
0

Texto

(1)

Redu¸

ao de Dimensionalidade e Agrupamento

de Dados

Fabr´ıcio Olivetti de Fran¸ca

(2)

opicos

1. An´alise de Componentes Principais

(3)

Redu¸

ao de Dimensionalidade

Quando trabalhamos com muitos atributos, alguns destes podem ser: • Redundantes: dois ou mais representam a mesma informa¸c˜ao

(Ex.: tempo em segundos e tempo em minutos)

• Ruidosos: possuem valores aleat´orios sem significado (Ex.: sinais ruidosos)

• Irrelevantes: n˜ao possuem rela¸c˜ao com a tarefa desejada (Ex.: termos irrelevantes para classifica¸c˜ao de sentimentos)

(4)

Redu¸

ao de Dimensionalidade

Al´em disso, quando poss´ıvel, ´e desej´avel compactar esses atributos para uma espa¸co de menor dimens˜ao.

Curse of Dimensionality: quanto maior a dimensionalidade, mais dif´ıcil se torna perceber diferen¸cas de similaridades; complexidade de algoritmos em fun¸c˜ao de d , etc.

(5)

An´

alise de Componentes

Principais

(6)

Principal Components Analysis (PCA)

Identifica as dire¸c˜oes de maior varia¸c˜ao de valores.

Rotaciona o eixo para que cada eixo rotacionado represente da maior para a menor varia¸c˜ao.

(7)

Principal Components Analysis (PCA)

−1.00 −0.75 −0.50 −0.25 0.00 0.25 0.50 0.75 1.00 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 y

(8)

Principal Components Analysis (PCA)

−1.00 −0.75 −0.50 −0.25 0.00 0.25 0.50 0.75 1.00 z −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5 y

(9)

Principal Components Analysis (PCA)

Para isso utiliza a informa¸c˜ao de autovalores e autovetores da matriz de covariˆancia dos atributos.

(10)

Covariˆ

ancia dos Atributos

Dada uma matriz de dados X ∈ <n×d, centralizamos os pontos para que fiquem com m´edia zero:

xi ,j0 = xi ,j− ˆxj,

(11)

Covariˆ

ancia dos Atributos

A covariˆancia dos atributos pode ser calculada como:

Cov = 1 nX

0TX0,

(12)

Covariˆ

ancia dos Atributos

O elemento i , j dessa matriz representa a correla¸c˜ao entre o atributo i e o atributo j .

(13)

Autovalores e Autovetores

Dessa matriz podemos extrair um total de d1autovalores (λ) e autovetores (e) tal que:

(14)

Autovalores e Autovetores

Se ordenarmos todos os autovalores/autovetores pela ordem do maior autovalor para o menor, temos que:

• Cada autovetor i representa a i -´esima dire¸c˜ao de maior varia¸c˜ao • O autovalor correspondente quantifica essa varia¸c˜ao

(15)

Principal Components Analysis (PCA)

Cada autovetor representa uma combina¸c˜ao linear dos atributos originais de tal forma a capturar a varia¸c˜ao descrita pelo autovalor.

Basicamente a matriz de autovetores ´e uma base de dados rotacionada que captura a varia¸c˜ao em ordem crescente.

(16)

Principal Components Analysis (PCA)

Se um autovalor for muito pequeno, significa que n˜ao existe varia¸c˜ao naquele eixo e, portanto, ele pode ser descartado.

Imagine um problema de classifica¸c˜ao utilizando apenas uma vari´avel xj

com variˆancia baixa. ´E f´acil perceber que tal vari´avel n˜ao tem poder discriminat´orio pois, para toda classe, ela apresenta um valor muito similar.

(17)

Rotacionando a base de dados

De posse da matriz E ∈ <d ×k dos k primeiros autovetores com um valor

significativo de λ, ´e poss´ıvel transformar a matriz de dados centralizada X0 com:

X∗= X0× E .

(18)

Principal Components Analysis (PCA)

Usos do PCA:

• Transformar a base de dados mantendo a dimens˜ao.

• Reduzir a base de dados, eliminando eixos com pouca variˆancia. • Reduzir para duas dimens˜oes para visualizar os dados.

(19)

Principal Components Analysis (PCA)

Quando utilizado para redu¸c˜ao de dimensionalidade, verifique o custo-benef´ıcio de remover um eixo dado sua variˆancia.

Al´em disso, uma vez que a base ´e transformada, os atributos perdem totalmente seu significado original.

Se temos os atributos m2, garagens, andar, bairro; uma vez aplicado o

(20)

PCA funcional

-- Recebe dados e devolve a matriz de rota¸c~ao pca :: Int -> Data -> RotMtx

pca k x = subMatrix k eigenvectors

where

(eigenvalues, eigenvectors) = descSort $ H.eig covariance covariance = multMtx (transpose x’) x’

(21)

PCA funcional

A matriz de covariˆancia tem dimens˜ao d × d , costumeiramente cabendo na mem´oria.

A matriz de dados e a de dados centralizadas n˜ao cabem em mem´oria, portanto devemos pensar em op¸c˜oes de MapReduce para as fun¸c˜oes covariance e center.

(22)

PCA funcional distribu´ıdo

Lembrando do algoritmo Ordinary Least Square, podemos calcular a matriz de covariˆancia como a somat´oria dos produtos externos de cada linha de X , a centraliza¸c˜ao de dados tamb´em vimos em uma aula passada, no c´alculo do Desvio-Padr˜aoo.

(23)

PCA funcional distribu´ıdo

-- Recebe dados e devolve a matriz de rota¸c~ao pca :: Int -> Data -> RotMtx

pca k x = subMatrix k evecs

where

(evals, evecs) = descSort $ H.eig covMtx

covMtx = sum $ map (\xi -> outerProd xi xi) x’ media xi = (sum xi) / (length’ xi)

centraliza xi = (xi .- (media xi)) x’ = mapColunas centraliza x

(24)

PCA funcional distribu´ıdo

O grande desafio da implementa¸c˜ao distribu´ıda ´e calcular a matriz x centralizada e, ap´os esse procedimento, a matriz de covariˆancia. pca :: Int -> ChunksOf [[Double]] -> [[Double]] pca k x = subMatrix k evecs

where

(evals, evecs) = descSort

$ H.eig

$ covMtx

(25)

PCA funcional distribu´ıdo

Implemente as seguintes fun¸c˜oes:

center :: ChunksOf [[Double]] -> ChunksOf [[Double]]

(26)

PCA funcional distribu´ıdo

center :: ChunksOf [[Double]] -> ChunksOf [[Double]] center x = parmap (map (.-. m)) x

where

m = mapReduce (./n) (.+.) x n = sum $ parmap length’ x

covar :: (NFData a, Num a) => ChunksOf [[a]] -> [[a]] covar x = mapReduce (\xi -> outerprod xi xi) (..+..) x

(27)

PCA - PySpark

Traduza o c´odigo para PySpark:

center :: ChunksOf [[Double]] -> ChunksOf [[Double]] center x = parmap (map (.-. m)) x

where

m = mapReduce (./n) (.+.) x n = sum $ parmap length’ x

covar :: (NFData a, Num a) => ChunksOf [[a]] -> [[a]] covar x = mapReduce (\xi -> outerprod xi xi) (..+..) x

(28)

PCA - PySpark

Dada uma RDD X : n = X.lenght()

# 1 x d xmean = (X

.map(lambda xi: xi/n)

.reduce(lambda (xi, yj): xi+yj) )

Xcenter = X.map(lambda xi: xi - xmean)

Covar = (Xcenter

.map(lambda (k1,xi): np.outer(xi, xi))

.reduce(lambda x,y: x+y) )

(29)

PCA - PySpark

Com Covar calculado basta fazer: eva, eve = np.linalg.eigh(Covar) idx = np.argsort(-eva)

(30)
(31)

Aprendizado N˜

ao-Supervisionado

Muitas vezes n˜ao temos um r´otulo pr´e-definido que queremos extrair de nossos dados.

Contagem? 1 e 2 Tipo?

(32)

Aprendizado N˜

ao-Supervisionado

Muitas vezes n˜ao temos um r´otulo pr´e-definido que queremos extrair de nossos dados.

Contagem? 1 e 2

(33)

Aprendizado N˜

ao-Supervisionado

Muitas vezes n˜ao temos um r´otulo pr´e-definido que queremos extrair de nossos dados.

Contagem? 1 e 2 Tipo?

(34)

Aprendizado N˜

ao-Supervisionado

O aprendizado n˜ao-supervisionado especifica as t´ecnicas para extrair conhecimento de um conjunto de dados sem que tenhamos:

• Informa¸c˜ao do que queremos encontrar.

(35)

Aprendizado N˜

ao-Supervisionado

Essas t´ecnicas se baseiam em:

• Forma¸c˜ao de grupos de dados similares. • Modelo de cria¸c˜ao de um dado. • Busca de objetos representativos.

(36)

Forma¸

ao de grupos de dados

Essas t´ecnicas se baseiam em:

Define-se uma medida de similaridade entre nossos dados.

(37)

Forma¸

ao de grupos de dados

(38)

Forma¸

ao de grupos de dados

(39)

Forma¸

ao de grupos de dados

(40)

Forma¸

ao de grupos de dados

(41)

Modelo de Cria¸

ao

Procura encontrar um modelo que explica a gera¸c˜ao dos dados:

(42)

Modelo de Cria¸

ao

(43)

Modelo de Cria¸

ao

(44)

Dados Representativos

Vamos considerar que uma imagem ´e um conjunto de pixels, e as cores desses pixels s˜ao nossos dados.

Se encontrarmos as k cores mais representativa dessa imagem, podemos redesenh´a-la utilizando essas cores, economizando bits!

(45)
(46)

Objetos Representativos

Vamos estudar a busca pelas k cores mais representativas. Os resultados ilustrados anteriormente utilizam o conceito de agrupamento, especificamente a t´ecnica k-means.

(47)

k-Means

Digamos que temos diversas cores que s˜ao tons de vermelho, verde e azul.

50 100 150 200 250 y

(48)

k-Means

Queremos escolher as 3 cores mais representativas desse conjunto!

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(49)

k-Means

E n˜ao necessariamente essas 3 cores devem fazer parte do conjunto de dados, podemos criar cores novas!

50 100 150 200 250 y

(50)

k-Means

O que caracteriza uma cor representativa de um conjunto?

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(51)

k-Means

Bom, para saber isso primeiro precisamos conhecer os conjuntos!

50 100 150 200 250 y

(52)

k-Means

Para nosso exemplo ´e f´acil:

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(53)

k-Means

A cor representativa de cada grupo ´e aquela que mais se aproxima de todas do grupo. 50 100 150 200 250 y

(54)

k-Means

Ou seja, ´e a que tem maior similaridade m´edia com os elementos do grupo. 0 50 100 150 200 250 x 0 50 100 150 200 250 y 49

(55)

k-Means

Ou seja, ´e a que tem maior similaridade m´edia com os elementos do grupo. 50 100 150 200 250 y

(56)

k-Means

Matematicamente, quem s˜ao esses elementos?

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(57)

k-Means

Dado um conjunto de pontos X n-dimensionais, queremos determinar o ponto c, representando o centro, que minimiza:

J(X , c) = 1 m m X i =1 dist(xi, c)

(58)

k-Means

O m´ınimo pode ser encontrado com:

∇J(X , c) = 1 m m X i =1 ∇dist(xi, c) = 0

(59)

k-Means

Utilizando a distˆancia Euclidiana temos:

1 m m X i =1 ∇(xi− c)2= 2 m m X i =1 (c − xi) = 0

(60)

k-Means

2 m(mc − m X i =1 xi) = 0 mc = m X i =1 xi c = 1 m m X i =1 xi

(61)

k-Means

O centro ´otimo para um conjunto de pontos X ´e a m´edia desses pontos.

c = 1 m m X i =1 xi

(62)

k-Means

Temos os centros...como definir os grupos?

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(63)

k-Means

Para cada amostra x, verificamos o centro mais pr´oximo...essa amostra far´a parte desse grupo.

50 100 150 200 250 y

(64)

k-Means

Sabemos como calcular o centro, dado os grupos...e como definir os grupos dado os centros.

0 50 100 150 200 250 x 0 50 100 150 200 250 y

Mas como come¸camos?

(65)

k-Means

Come¸camos chutando pontos iniciais para os centros.

50 100 150 200 250 y

(66)

k-Means

Definimos os grupos de acordo com esses centros:

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(67)

k-Means

Para cada grupo, calculamos o novo centro:

50 100 150 200 250 y

(68)

k-Means

E remontamos os grupos: 0 50 100 150 200 250 x 0 50 100 150 200 250 y

(69)

k-Means

Repetimos esse procedimento...

50 100 150 200 250 y

(70)

k-Means

...at´e os centros ou os grupos n˜ao se alterarem mais.

0 50 100 150 200 250 x 0 50 100 150 200 250 y

(71)

k-Means

kmeans it points clusters

| it == 0 = clusters

| clusters’ == clusters = clusters

| otherwise = kmeans (it-1) points clusters’

where

(72)

k-Means

emStep points clusters = maximizationStep

(73)

k-Means

estimationStep :: [[Double]] -> [[Double]] -> [[[Double]]]

estimationStep points clusters = map (\(k,v) -> v)

$ groupByKey $ sortByKey

(74)

k-Means

assign points clusters = map closestTo points

where

(75)

k-Means

maximizationStep :: [[[Double]]] -> [[Double]] maximizationStep candidates = map meanVec candidates

(76)

k-Means - Paralelo

Temos dois procedimentos a serem realizados em cada itera¸c˜ao: • Alocar os elementos a um centro.

• Calcular um novo centro.

(77)

k-Means - Paralelo

Desenhe o fluxo dos dados dessa fun¸c˜ao e escreva o procedimento utilizando PySpark:

emStep :: ChunksOf [[Double]] -> [[Double]] -> [[Double]]

eemStep points clusters = maximizationStep

(78)

k-Means - Paralelo

A fun¸c˜ao maximizationStep recebe uma lista de tuplas [(Int, ([Double], Double)] contendo k elementos representando o id do cluster, a soma dos vetores dos pontos daquele cluster e quantos elementos existem no cluster.

emStep :: ChunksOf [[Double]] -> [[Double]] -> [[Double]]

eemStep points clusters = maximizationStep

(79)

k-Means - Paralelo

Um simples map sequencial resolve:

emStep :: ChunksOf [[Double]] -> [[Double]] -> [[Double]]

eemStep points clusters = map (\(idx, (xs,n)) -> xs ./ n)

(80)

k-Means - Paralelo

A fun¸c˜ao estimationStep tem que mapear os pontos para esse formato [(Int, ([Double], Double)] e reduzir somando os elementos da tupla valor. emStep :: ChunksOf [[Double]] -> [[Double]]

-> [[Double]]

eemStep points clusters = map (\(idx, (xs,n)) -> xs ./ n)

(81)

k-Means - Paralelo

A fun¸c˜ao estimationStep tem que mapear os pontos para esse formato [(Int, ([Double], Double)] e reduzir somando os elementos da tupla valor. emStep :: ChunksOf [[Double]] -> [[Double]]

-> [[Double]]

eemStep points clusters = map (\(idx, (xs,n)) -> xs ./ n)

$ mapReduceByKey assign soma points

where

(82)

k-Means - Paralelo

Reescreva o procedimento utilizando PySpark: emStep :: ChunksOf [[Double]] -> [[Double]]

-> [[Double]]

eemStep points clusters = map (\(idx, (xs,n)) -> xs ./ n)

$ mapReduceByKey assign soma points

where

(83)

k-Means - Paralelo

centers = RDD.map(lambda xi: (assign(xi,c), xi))

.reduceByKey(lambda (pi1, n1), (pi2, n2) : (pi1+pi2, n1+n2))

.map(lambda (idx, (pi, n)): (pi/n))

(84)

Agrupamento Espectral

Nem sempre nossos dados apresentam um agrupamento ´obvio mensurado por uma medida de similaridade:

−1.0 −0.5 0.0 0.5 1.0 x −1.0 −0.5 0.0 0.5 1.0 y 79

(85)

Agrupamento Espectral

O uso do algoritmo k-Means ´e insuficiente para encontrar os dois grupos existentes: −0.5 0.0 0.5 1.0 y

(86)

Agrupamento Espectral

Mesmo utilizando um n´umero maior de clusters o algoritmo apresenta dificuldades para entender a estrutura da base de dados.

−1.0 −0.5 0.0 0.5 1.0 x −1.0 −0.5 0.0 0.5 1.0 y 81

(87)

Agrupamento Espectral

Uma forma alternativa de representar esses objetos ´e imaginar que eles formam um grafo em que os k pontos mais pr´oximos de um certo ponto, forma uma aresta com este.

−1.0 −0.5 0.0 0.5 1.0 −1.0 −0.5 0.0 0.5 1.0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 8788 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 82

(88)

Agrupamento Espectral

Dessa forma passamos a representar nossos dados atrav´es da matriz Laplaciana, que ´e dada por:

L = G − A,

com A sendo a matriz de adjacˆencia e G uma matriz diagonal com os elementos da diagonal igual ao grau do n´o correspondente.

(89)

Agrupamento Espectral

Essa matriz Laplaciana tem algumas propriedades interessantes: • O n´umero de autovalores iguais a 0 ´e igual ao n´umero de

componentes conexos.

• Os autovetores correspondentes aos autovalores iguais a 0

representam um grupo, sendo os n´os pertencentes a esse grupo com valores positivos e todo o restante igual a 0.

• Os autovetores consequentes representam diversas forma¸c˜oes de poss´ıveis agrupamentos.

(90)

Agrupamento Espectral

Com isso podemos calcular a Laplaciana de uma base de dados e utilizar os k primeiros autovetores dessa matriz (com autovalores diferentes de 0) e gerar (similar ao PCA) uma matriz n × k contendo a informa¸c˜ao dos grupos.

(91)

Agrupamento Espectral

Nesse ponto, temos a proje¸c˜ao dos nossos dados em um espa¸co de dimens˜ao reduzida.

Podemos agora aplicar a t´ecnica k-Means utilizando essa representa¸c˜ao para obtermos os grupos.

(92)

Agrupamento Espectral

Com isso ´e poss´ıvel encontrar os grupos corretos de nosso exemplo:

−1.0 −0.5 0.0 0.5 1.0 x −1.0 −0.5 0.0 0.5 1.0 y

(93)

Agrupamento Espectral

Fa¸ca uma implementa¸c˜ao do Agrupamento Espectral no Spark. Dica: aplicando o algoritmo SVD na matriz Laplaciana, temos que a matriz U representa os autovetores. Utilize o algoritmo svd j´a implementado no Spark.

(94)

Atividade 05

Referências

Documentos relacionados

--- A Câmara deliberou, por unanimidade, certificar de acordo com as minutas propostas que se anexam ao presente termo de aprovação de minuta. --- --- A presente deliberação

Tendo como parâmetros para análise dos dados, a comparação entre monta natural (MN) e inseminação artificial (IA) em relação ao número de concepções e

Quando contratados, conforme valores dispostos no Anexo I, converter dados para uso pelos aplicativos, instalar os aplicativos objeto deste contrato, treinar os servidores

Aos sete dias do mês de janeiro do ano 2002, o Perito Dr. OSCAR LUIZ DE LIMA E CIRNE NETO, designado pelo MM Juiz de Direito da x.ª Vara Cível da Comarca do São Gonçalo, para proceder

Os alunos que concluam com aproveitamento este curso, ficam habilitados com o 9.º ano de escolaridade e certificação profissional, podem prosseguir estudos em cursos vocacionais

• Quando o navegador não tem suporte ao Javascript, para que conteúdo não seja exibido na forma textual, o script deve vir entre as tags de comentário do HTML. &lt;script Language

Com a realização da Ficha de Diagnóstico, o professor deve averiguar as aprendizagens dos alunos já realizadas sobre números racionais não negativos – operações e propriedades.

São considerados custos e despesas ambientais, o valor dos insumos, mão- de-obra, amortização de equipamentos e instalações necessários ao processo de preservação, proteção