AnálisisdeSeriesTemporals usandoR:Cluster, …r-es.org/9jornadasR/pdf/9JUR_paper_24.pdf · 2017....

Post on 22-Aug-2020

3 views 0 download

Transcript of AnálisisdeSeriesTemporals usandoR:Cluster, …r-es.org/9jornadasR/pdf/9JUR_paper_24.pdf · 2017....

Análisis deSeriesTemporalsusandoR:Cluster,ClasificaciónyContrastedeHipótesis

by

Pablo Montero José A. Vilar

26 Outubro, 2017

Financiación

Ministerio de Economía y CompetitividadMTM2014-52876-RXunta de Galicia ED431C 2016-015

1. Cluster2. Clasificación3. Contraste de Hipótesis

Cluster

1. Propósito del Cluster2. Métodos Cluster en Series Temporales3. Validación

Con valores verdaderosSin valores verdaderos

Propósito de Cluster

No hay una definición globalmente aceptada sobre qué es cluster“Agrupar los datos de manera que los objetos dentro decada grupo sonmás similares entre sí que a los de losotros grupos”“Extraer patrones interesantes de los datos”“Reducir la complejidad de los datos”Christian Hennig

Cluster Basado enDistancias

Contamos con algunamanera para medir cuánto se parecendos series.Muchos métodos de cluster se reducen a trabajar con estascomparaciones directamente, no con los datos originales.

K-meansK-medoids (PAM)JerárquicoVersiones Fuzzy

Distancias Entre Series TemporalesPodemos categorizar las distancias en las siguientes familias

Basadas en ModelosAjustar unmodelo de series temporales para cada serie, yse comparan los modelosInterpretabilidad

Basadas en características o datos en brutoBasadas en Complejidad

Teoría de la información: Información ConjuntaBasadas en Pronóstico (forecast)

Característico de Series TemporalesAsumen algún tipo demodelo para las series

Práctica: Distancia+MétododeCluster

Métodos de ClusterK-means

Cuidado en como se calcula el centro del grupoHacer la media de características o modelos suele notener sentidoCada distancia necesita de su método para obtener elcentro, fuera de la distancia euclídea no es trivial

K-medoidesSe substituye el centro por un centroide, un dato existenteen la muestraPermite trabajar con disimilaridades en generalMás robusto a atípicos

JerárquicoPermite trabajar con disimilaridades en generalSuele producir resultados interpretables que ayudan a suvez a escoger el número de clusters

Distancias basadas enmodelos1. Se asume unmodelo o familia de modelos2. Se ajustan los parámetros del modelo para cada serie

Idealmente de manera automática3. Se comparan los parámetros del modelo

Distancia entre parámetrosP-valores al contrastar igualdad demodelos

ARARMAARIMAModelos autoregresivos no-paramétricos

Permiten al usuario capturar o despreciar comportamientosque no le interesan, como la parte estacional de las series

Ejemplo R

#paquete TSclust contiene distancias entre series,# métodos de cluster, validación#y datasets de ejemplolibrary(TSclust)

#cargamos un dataset de datos simuladosdata(synthetic.tseries)

#pintamos unas seriesplot(synthetic.tseries[,c(1,4,7)])

Series Simuladas de Modelos Autoregresivos

−4

02

4

AR

.1

−2

02

4

BIL

IN.1

−3

−1

13

0 50 100 150 200

EX

PAR

.1

Time

Ejemplo R#aplicamos una distancia usando diss():#diss() aplica una distancia de TSclust#a todos los pares posibles de series# en nuestro dataset#y devuelve un objeto dist de R#que suelen usar los métodos de cluster

dCEPS <- diss(synthetic.tseries, ”AR.LPC.CEPS”)

#tomamos una distancia basada en modelos autoregresivos

#con el objeto dist dCEPS podemos hacer cluster#por ejemplo cluster jerárquico#se presta a la comparación visual

hcCEPS <- hclust(dCEPS)

Distancias entre características o datos en bruto

Características como:AutocorrelacionesPeriodogramaCorrelación temporal entre seriesDensidad Espectral

Datos en bruto:Distancia EuclídeaDynamic TimeWarpingDistancia Levehshtein (Edit Distance) (paquete TSdist)Longest Common Subsequences (paquete TSdist)

Ejemplo R

#apliquemos una distancia de datos en bruto# como la EuclídeadEUCL <- diss(synthetic.tseries, ”EUCL”)

#aplicamos el mismo método de cluster# que con la distancia basada en modeloshcEUCL <- hclust(dEUCL)

#comparemos visualmente las dosplot(hcEUCL)plot(hcCEPS)

Resultado con distancia Euclídea

AR

.2

BIL

IN.3

SE

TAR

.3

BIL

IN.2

SE

TAR

.2

BIL

IN.1

SE

TAR

.1

AR

.1

AR

.3

EX

PAR

.2

NLA

R.2

NLA

R.1

NLA

R.3

EX

PAR

.1

EX

PAR

.3 STA

R.2

STA

R.1

STA

R.3

1525

3545

dEUCL

Hei

ght

Resultado con distancia basada en modelo AR

AR

.1

AR

.2

AR

.3

STA

R.1

STA

R.2

STA

R.3

EX

PAR

.3

EX

PAR

.1

EX

PAR

.2

NLA

R.3

SE

TAR

.3

SE

TAR

.1

SE

TAR

.2

BIL

IN.3

NLA

R.1

NLA

R.2

BIL

IN.1

BIL

IN.2

0.0

0.5

1.0

1.5

dCEPS

Hei

ght

Ejemplo R

#las distancias en TSclust tienen su# función individual#documentada y con referencia al artículo# en el que fueron publicadas?diss.AR.MAH

#esta distancia basada en modelos# produce un p-valor#del contraste que compara si dos series#tienen el mismo modelodMAH <- diss(synthetic.tseries, ”AR.MAH”)

Ejemplo R

#TSclust tiene un método de cluster# basado en p-valores#que agrupa fijando un nivel de significación

#interés por interpretabilidad#en función de la significación#crea automáticamente#los clusters sin evidencias para separarlos

pvalues.clust(dMAH$p_value, 0.01)[1] 3 3 3 1 1 1 2 2 1 1 1 1 1 1 1 3 3 3

#menos conservador -> más clusterspvalues.clust(dMAH$p_value, 0.05)[1] 2 2 2 1 1 1 3 3 1 4 4 1 1 1 1 4 4 4

Distancias basadas en Complejidad

Basadas en compresión para aproximar la complejidadNúmero de bits al comprimir las dos series concatenadasRelativo al número de bits al comprimir las series porseparado

Basada en la distribución de permutacionesQuémaneras hay de ordenar las subsecuencias de lasseries

Ejemplo R

#cargar un dataset con series#de diferentes dominios#ECG, Sensores de movimiento,#Demanda eléctrica...data(”paired.tseries”)

#usamos la distancia PDC#del paquete pdc#incluida en TSclust por convenienciadPDC = diss(paired.tseries, ”PDC”, m=5,t=8)

plot(hclust(dPDC))

Series de diferentes dominios

Resultado con distancia basada en complejidad

Dffr

Dhg

eM

Ch1

MC

h2M

bb1

Mbb

2K

Es1

KE

s2K

Ef1

KE

f2 VS

Eg

VS

Eng

ER

SF

ER

GM

S:1

7t1

S:1

8t1

PD

:J−

M(D

PD

:A−

J(D

R2a

sR

2:t

PD

:J−

M(I

PD

:A−

J(I

FE

Ca

FE

Ct

GL(

EG

L(O

E:ff

E:v

fB

ll1B

2()

F:h

iF

:ci

BS

NS

BS

ES

VS

Ag

VS

Ang

01

23

4

dPDC

Hei

ght

Distancias basadas en forecast

Se basan en comparar el comportamiento de las seriesen un horizonte futuro.Ejemplo motivador: Protocolo de Kyoto

Queremos agrupar países por como será sucomportamiento en 2020No nos interesa tanto toda su trayectoria pasada

Se ajusta unmodelo predictivo probabilístico y segeneran predicciones en el horizonte de interésSe comparan las densidades de las predicciones de cadaserie

Series de tipos de interés

Ejemplo R#aplicamos cluster basado en predicción#el método de predicción es un#autoregresivo no-paramétrico#que acepta transformaciones clásicas#diferenciación y logaritmos

#en este caso aplicamos las dos transformacionesdiffs <- rep(1, ncol(interest.rates))logs <- rep(TRUE, ncol(interest.rates))

?diss.PRED#comparamos las predicciones# a un horizonte de 6 añosdPRED <- diss(interest.rates, ”PRED”, h=6, B=1200, logarithms=logs,

differences=diffs, plot=TRUE)

plot(hclust(dPRED$dist))

Densidades de predicción

Resultado con distancia de predicción

Por

tuga

l

Spa

in

Italy

Irel

and

Sw

itzer

land

Japa

n

Den

mar

k

Ger

man

y

Sw

eden

US

A

Net

herla

nds

Fin

land Aus

tria

UK

Can

ada

EM

U

Fra

nce

Nor

way0.

01.

02.

0

dPRED$dist

Hei

ght

Validación

Con valor de verdad (externos): Medimos lo lejos queestá una solución dada de la ideal

Índice de Rand AjustadoSin valor de verdad (internos): Criterios comohomogeneidad dentro de los cluster, separación entreclusters..

Coeficiente de silueta

Ejemplo R#probamos con el datasaet inicial#de series temporales simuladas

#creamos el valor de verdad ”real”tssynthetic_truth <- rep(1:6, each=3)

#aplicamos cluster usando PAMpamCEPS <- pam(dCEPS, k=6)$clusteringpamEUCL <- pam(dEUCL, k=6)$clustering

#medida de evaluación implementada en TSclustcluster.evaluation(tssynthetic_truth, pamCEPS)[1] 0.875cluster.evaluation(tssynthetic_truth, pamEUCL)[1] 0.6944444

Ejemplo R#el paquete fpc contiene medidas más populares#de evaluación#con valor de verdad como sin ellibrary(fpc)

cluster.stats(dCEPS, clustering=pamCEPS,alt.clustering=tssynthetic_truth )

$corrected.rand[1] 0.7702703$avg.silwidth[1] 0.6442922cluster.stats(dEUCL, clustering=pamEUCL,

alt.clustering=tssynthetic_truth )$corrected.rand[1] 0.5142857$avg.silwidth[1] 0.1225102

ClasificacióndeSeriesTemporales

El state of the art avanza muy rápidoSemide comparando los ratios de clasificación correctaen las bases de datos de timeseriesclassification.comBuenos resultados se pueden obtener usando distanciasentre series temporales + k-NN

Especialmente usando ensembles de distancias

Ejemplo R#obtenemos un dataset de ejemplodownload.file(”http://timeseriesclassification.com/Downloads/ECG200.zip”,

”ECG200.zip”)unzip(”ECG200.zip”)

trainset <- as.matrix(read.arff(”ECG200/ECG200_TRAIN.arff”))class(trainset) <- ”numeric”trainclasses <- trainset[, ncol(trainset)]trainset <- trainset[,-ncol(trainset)]

dDTW <- diss(trainset, ”DTWARP”)#calculamos crossvalidation accuracy con TSclustloo1nn.cv(dDTW, trainclasses)

dCORT <- diss(trainset, ”CORT”)loo1nn.cv(dCORT, trainclasses)

Ejemplo R#con TSclust y TSdist tenemos una gama de distancias que permite reproducir#métodos publicadosdEDR <- proxy::dist(trainset, EDRDistance, epsilon=0.1)loo1nn.cv(dEDR, trainclasses)

#cargamos el conjunto de testtestset <- as.matrix(read.arff(”ECG200/ECG200_TEST.arff”))class(testset) <- ”numeric”testclasses <- testset[, ncol(testset)]testset <- testset[,-ncol(testset)]#1-NN para las 3 distancias de ejemplopredclassesDTW <- apply(testset, 1,function (xts) {distances <- apply(trainset, 1,

function(yts) diss.DTWARP(xts, yts))trainclasses[which.min(distances)]})

Ejemplo R#ensemble, majority voting ponderado por# loo1nn crossvalidationC <- unique(trainclasses)

C1 <- (predclassesEDR==C[1]) * loo1nn.cv(dEDR, trainclasses) +(predclassesCORT==C[1]) * loo1nn.cv(dCORT, trainclasses) +(predclassesDTW==C[1]) * loo1nn.cv(dDTW, trainclasses)

C2 <- (predclassesEDR==C[2]) * loo1nn.cv(dEDR, trainclasses) +(predclassesCORT==C[2]) * loo1nn.cv(dCORT, trainclasses) +(predclassesDTW==C[2]) * loo1nn.cv(dDTW, trainclasses)

mean(C[((C2 - C1) > 0) + 1] == testclasses)[1] 0.83

ContrastedeHipótesisdeHomogeneidad

Motivación

Se pretende responder a la siguiente pregunta: ¿Tienen dospoblaciones de series temporales la misma distribución?

Electrocardiogramas de pacientes y grupo de controlCapturas de pesca de distintos caladerosPatrones de voz de dos zonas geográficasPatrones de lluvia en distintas zonas

Necesidad de aproximación específica a series temporales

Constrastes clásicos no son útiles por muchos motivosComplejidad inherente a las series temporalesDistinta longitud de las seriesSe desean algunas invarianzas, por ejemplo: cambios defase, aceleraciones/deceleraciones, volumen

Método

Para atacar el problema utilizaremos también distanciasentre seriesCombinada con un test de hipótesis que acepta distintostipos de distnacias para comparar objetos

El estadístico energy

Ejemplo R

#usamos el energy statisticlibrary(energy)

dSPEC = diss(synthetic.tseries, ”PER”)energy::eqdist.etest(dSPEC, c(9,9), R=10000)p-value = 0.0436

dEUCL = diss(synthetic.tseries, ”EUCL”)energy::eqdist.etest(dEUCL, c(9,9), R=10000)p-value = 0.478

Conclusiones

Presentados métodos basados en distanciasCombinación de Distancia + Algoritmo

ClusterClasificaciónContraste de Hipótesis de Homogeneidad

PaquetesTSclustTSdistfpc, cluster