tsmp s-a întors: un flux de lucru mai rapid și mai prietenos pentru profil Matrix pentru R

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Un nou capitol pentru Matrix Profile în R

Pentru o vreme, tsmp părea liniştit. Totuși, proiectul nu stătea nemișcat: instrumentele Matrix Profile pentru R au fost reorganizate în jurul unei împărțiri mult mai clare între motorul de calcul și interfața de zi cu zi de extragere a datelor.

În tsmp 0.5.1, pachetul pe care mulți dintre noi l-am folosit de ani de zile devine un strat analitic pur-R. Noul matrixprofiler pachetul preia munca intensivă din punct de vedere computațional într-un motor optimizat C++17. Rezultatul nu este un înlocuitor pentru tsmp; este o fundație mai puternică dedesubt.

Două pachete, două locuri de muncă

Mai în vârstă tsmp lansarea a adus algoritmi, ajutoare de analiză și o mare parte din calcul într-un singur pachet. Acest lucru l-a făcut un punct de plecare convenabil, dar pe măsură ce seria și volumul de lucru creșteau, munca de calcul implementată în jurul operațiunilor de nivel R ar putea deveni blocaj.

Noua arhitectură separă aceste responsabilități:

  • matrixprofiler furnizează algoritmi Matrix Profile de nivel scăzut și primitive numerice optimizate, cu multithreading nativ prin RcppThread.
  • tsmp menține fluxul de lucru de nivel superior aproape de analist: motive, lanțuri, segmentare, fragmente, plotare și instrumentele familiare pentru minerit de zi cu zi în serii de timp.

Calculul greu rulează acum în motorul nativ, în timp ce pachetul pe care îl utilizați pentru a explora și interpreta rezultatele rămâne accesibil. tsmp în sine nu mai are nevoie de compilare când este instalat din sursă; își deleagă backend-ul de calcul către matrixprofiler.

Fluxul de lucru de zi cu zi rămâne familiar:

library(tsmp)

profile <- tsmp(series, window_size = 80)
motifs <- find_motif(profile, n_motifs = 3)
plot(motifs)

Diferența este ceea ce se întâmplă sub capotă: pașii intensivi din punct de vedere computațional pot folosi backend-ul nativ și acesta n_workers controale, fără a cere fiecărui analist să lucreze direct cu rutine de nivel scăzut.

De la un scor de contrast la un model util

Noul motor adaugă, de asemenea, o implementare nativă a Profil de contrast. Este conceput pentru o întrebare practică: care subsecvență se repetă în exemplele care îmi pasă, dar lipsește din exemplele care nu îmi pasă?

Având în vedere seriile cronologice pozitive și negative, Profilul de contrast compară cea mai apropiată potrivire a fiecărei subsecvențe pozitive din datele negative cu cea mai apropiată potrivire netrivială din datele pozitive. În notație simplificată,

( C_m = frac{MP_m^{(+,-)} – MP_m^{(+,+)}}{sqrt{2m}}, )

unde (m) este dimensiunea ferestrei. Un scor mare evidențiază un model care este bine conservat în cadrul clasei pozitive și spre deosebire de clasa negativă. Lucrarea originală numește subsecvența cu cel mai mare punctaj Platon: o semnătură de candidat pentru comportamentul sau clasa de interes.

În R, matrixprofiler::contrast() calculează acest profil direct:

cp <- matrixprofiler::contrast(negative_data = negative_series, positive_data = positive_series,
    window_size = 80L, distance = "pearson", n_workers = 4L)

cp$plato
cp$plato_idx

Lucrarea originală Contrast Profile discută, de asemenea Top-K Platos pentru cazurile în care comportamentul țintă are mai multe forme. Ideea sa cheie este importantă: următorul rezultat ar trebui descoperit după luarea în considerare a modelului anterior, mai degrabă decât să luăm pur și simplu următorul vârf cel mai înalt, potențial redundant.

Pachetul actual nu oferă a contrast_top_k() funcţie. Deocamdată, utilizatorii care au nevoie de mai multe Plato de profil de contrast trebuie să implementeze ei înșiși orchestrația iterativă: descoperă un Plato cu contrast()adăugați modelul său la exemplele negative și recalculați înainte de a căuta următorul. Calculul scump al profilului de contrast se execută în continuare în modul nativ matrixprofiler motor; bucla Top-K este lăsată utilizatorului.

RFCP: când frecvența contează

Noul Profil de contrast de frecvență relativă (RFCP) duce această idee contrastantă mai departe. În loc să compare doar cele mai apropiate potriviri pozitive și negative, RFCP ia în considerare rândurile ordonate ale vecinilor care nu se suprapun. Acest lucru îi permite să se întrebe nu doar dacă apare un model, ci și cum diferă recurența acestuia între datele pozitive și cele negative.

matrixprofiler::rfcp() returnează profilul de contrast și Platon cu cel mai mare punctaj. Pentru un set ordonat, divers de descoperiri, matrixprofiler::rfcp_top_k() găsește în mod iterativ un model, își suprimă aparițiile și vecinii triviali și apoi îl caută pe următorul. Puteți solicita un rang de frecvență diferit la fiecare iterație, puteți activa selecția adaptivă a frecvenței și puteți utiliza apeluri inverse pentru a verifica rutări mai lungi.

top_patterns <- matrixprofiler::rfcp_top_k(positive_data = positive_series, negative_data = negative_series,
    window_size = 80L, k_platos = 3L, max_freq = c(4L, 3L, 2L), adaptive_max_freq = TRUE, n_workers = 4L)

top_patterns$platos

Aici, Top-K înseamnă o secvență de morfologii distincte, contrastive, nu doar cele mai înalte K vârfuri suprapuse. Acest lucru face ca rezultatul să fie mai util atunci când o clasă poate fi exprimată în mai multe moduri sau când prima descoperire ar domina, altfel, restul căutării.

Accelerație CUDA opțională

Standardul matrixprofiler instalarea este un motor CPU portabil, multithreaded. Pentru algoritmii acceptați, un GPU NVIDIA este, de asemenea, o opțiune: proiectul documentează o construcție manuală activată de CUDA, inclusiv suport pentru algoritmi precum MPX și RFCP.

Cu setul de instrumente CUDA și o configurare compatibilă NVIDIA, clonează depozitul și instalează-l prin scriptul său de compilare:

git clone https://github.com/matrix-profile-foundation/matrixprofiler.git
cd matrixprofiler
./inst/cuda/build_cuda_rcpp.sh R CMD INSTALL .

După instalare, verificați dacă pachetul a fost compilat cu suport CUDA:

matrixprofiler::has_cuda()

CUDA este opțional și trebuie activat în timpul construirii; instalarea pachetului obișnuit CRAN nu îl pornește automat.

O modalitate practică de a începe

Dacă utilizați deja tsmpîncepeți cu noul ghid de migrare, mai ales dacă scripturile dvs. creează doSNOW clustere sau presupunem că indicii de profil nevalidi sunt -1. Interfața paralelă actualizată folosește n_workersiar indicii lipsă folosesc acum R NA_integer_ convenţie.

Pentru analize noi, instalați instrumentele familiare de nivel înalt și backend-ul lor computațional:

install.packages(c("tsmp", "matrixprofiler"))

tsmp rămâne locul prietenos pentru extragerea zilnică a datelor Matrix Profile. matrixprofiler face acea experiență mai rapidă și oferă o casă pentru algoritmi optimizați care au nevoie de un control mai direct. Împreună, readuc ecosistemul R în dezvoltare activă și fac loc pentru mai multe metode fără a face fluxul de lucru zilnic mai greu de utilizat.

Explora tsmp pe CRAN, matrixprofiler pe CRAN și documentația matrixprofiler. Pentru cercetarea din spatele profilului de contrast, a se vedea Mercer și colab., „Profilul matricei XXIII: Profilul de contrast: o serie de timp romană primitivă care permite clasificarea în lumea reală”.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.