ROBUST 2004 c JČMF 2004 OPTIMÁLNÍ SEGMENTACE DAT Petr Novotný Klíčová slova: Výpočetní statistika, po částech spojitá regrese. Abstrakt: Snížení paměťové náročnosti při výpočtu po částech spojitého regresního modelu. Motivace Úkolem je rozdělit sekvenci DNA na úseky podle obsažené informace(stavba těla, trávení apod.). Biologické řešení DNAseskládáze4druhůbazí(adenosin(A),cytosin(C),guanin(G)athymin(T)).JedenzmožnýchpřístupůjerozdělitDNAnaúsekypodlepoměru dvojic bazí. Matematické řešení Použijeme po částech konstantní regresní model a budeme minimalizovat reziduálnísoučetčtverců.napříkladpřihledánípoměruaackugat budemekódovataacjako1azbyléjako0.početbodůnespojitostibudeme navíc penalizovat vhodnou funkcí. 0.0 0.2 0.4 0.6 0.8 1.0 0 20 40 60 80 100
262 Petr Novotný Americké výsledky Po spolupráci s NSA(National Security Agency) a jejich superpočítači se americkým vědcům podařilo rozdělit DNA bakteriofágu λ. DNA tohoto bakteriofágu se skládá z 48 502 bazí. Já jsem schopen dosáhnout stejného výsledku s použitím současného PC během několika málo hodin. Formalizace zadání Máme dáno: Vektor pozorování Ztrátovou funkci Hledáme: X 1,...,X N R(i, j) RSS(X i,..., X j ) 1 i j N Optimální dělení vektoru pozorování na právě K úseků. Matice Tj.hledáme J 2,..., J K : 1 = J 1 < J 2 <... < J K N,která minimalizují: K 1 i=1 R(J i, J i+1 1)+R(J K, N) J i jsoupočátečníbodyúsekůoptimálníhodělení. HornítrojúhelníkovámaticeRtypu N N: R(1,1)... R(1, N) R=..... 0... R(N, N) Tato obrovská matice obsahuje reziduální součty čtverců pro všechny možné úseky. MaticeQtypu K N: q(1,1)... q(1, K)... q(1, N) Q=...... 0... q(k, K)... q(k, N) Prvek q(i, j) vyjadřuje ztrátu odpovídající optimálnímu rozdělení podvektoru X 1,..., X j na iúseků.
Optimální segmentace dat 263 MaticePtypu K N: p(1,1)... p(1, K)... p(1, N) P=...... 0... p(k, K)... p(k, N) Prvek p(i, j) obsahuje odkaz na předchozí dělení: p(i, j)=k q(i, j)=q(i 1, k)+r(k+1, j). Klasické řešení Klasický algoritmus založený na dynamickém programování řeší naši úlohu ve dvou krocích. 1. Vypočteme si celou matici R. 2. Vedruhémkrokusepostupněvytvářímatice QaP. Proprvnířádek: q(1, i)=r(1, i) p(1, i)=0 Pro ostatní řádky: q(i, j)=min k<j (q(i 1, k)+r(k+1, j)) p(i, j)=argmin k<j (q(i 1, k)+r(k+1, j)) Problémy klasického řešení Největším nedostatkem klasického postupu je jeho paměťová náročnost. MaticeRsenámbrzynevejdedooperačnípamětiajejíčástsemusíuložit napevnýdiskaprávědíkypomalémupřístupunapevnýdiskjevýpočet neproveditelný. Operační paměť o velikosti 512 MB je spotřebována již pro vektor délky N = 9 000. Abychom zvýšili možné N na dvojnásobek potřebujeme čtyřikrát větší operační paměť. Mým cílem bylo tento nedostatek odstranit. Alternativní model situace Situacisimůžemepředstavitjakoorientovanýgrafnamnožině {0,...,N}, kdezvrcholu ivedehranadovrcholu jprávětehdy,když i < j.našedata jsoumezerymezivrcholygrafu.cílemjenajítnejkratšícestuz0do N, kterámáprávě Khran.Vtomtoalgoritmusiukaždéhovrcholugrafupamatujicenunejkratšícestyz0dotohotovrcholu,kterámáprávě1až Khran.
264 Petr Novotný 0.6 0.4 0.2 0.0 0.2 0.4 0.6 0.8 X[1] X[2] X[6] 0 1 2 3 4 5 6 Popis navrženého algoritmu Výstavbamatic QaP V prvním kroku spočítám první řádek matice R. q(1, i)=r(1, i) p(1, i)=0 V i-tém kroku napočtu i-tý řádek matice R. Pokudje i K,přičtukevšemhodnotám i 1 h=1r(h, h)avýsledek uložímdoi-téhořádkumatice Qodi-tésouřadniceai-týřádekmatice P inicializujina i 1. Tytohodnotymireprezentujídělení1,2,...i. Začnu přepočítávat hodnoty v dosud obsazených řádcích kromě prvního abudesejednatosložkysvyššímindexemnež i.pokusímsezlepšit optimální dělení za předpokladu, že počáteční bod posledního intervalu je i.
Optimální segmentace dat 265 Schematický zápis algoritmu: Pro lod2domin(i, K)apro j idělej: q(l, j)=min(q(l, j), q(l 1, i 1)+R(i, j)) Pokud došlo ke změně optimální hodnoty pak: p(l, j)=i 1 Tento způsob umožňuje použití paralelního přepočítávání jednotlivýchřádkůmatic P a Q. Výsledky simulací Všechny simulace proběhly na počítači Pentium IV 2.8 GHz, 512 MB RAM. Vlastní algoritmus byl naprogramován v Matlabu, Release 13. Výsledky v tabulce jsou uvedeny v sekundách. K\ N 10000 20000 50000 100000 200000 5 0:00:18 0:01:09 0:07:19 0:30:57 2:03:20 10 0:00:37 0:02:36 0:16:08 1:06:19 4:27:15 Simulacevýpočtunašehomotivačníhopříkladu(N=48502aK=40)trvala3hodiny,27minuta41sekund.Optimálnísegmentacevektoruodélce 10000000na5segmentůbytrvalaasi2dny. Zrychlení výpočtu reziduí Při výpočtu reziduí používám zrychlený postup, který umožňuje vypočítat R(i, j)zhodnot j k=i X ka j k=i X2 k. j 1 (X k j i+1 k=i j X l ) 2 = l=i j Xk 2 1 j j i+1 ( X k ) 2 Tímto způsobem snížím časovou náročnost o jeden řád. Postupně načítám první a druhé mocniny pozorování a z nich snadno spočítám odpovídající reziduální součet čtverců. Vnašichdatechjsousinavícprvníadruhémocninyrovny,protožestále sčítám buď 1 nebo 0, což velmi zrychlí výpočet reziduí. Paměťová a časová náročnost ZlepšenýalgoritmussnížícelkovoupaměťovounáročnostvýpočtuzO(N 2 ) na((2 K+1) N).ČasovánáročnostutohotoalgoritmujeO(N 2 K) oprotio(n 3 K)uklasickéhopostupu. k=i k=i
266 Petr Novotný Závěr Navržený algoritmus umožňuje nejen podstatné zrychlení našeho výpočtu, ale zejména významné zvýšení maximální délky dělených dat. Obrovskou výhodou je možnost použití vektorového paralelního programování, která odsouvá počet dělení do pozadí našeho zájmu. Další zlepšení při hledání optimálního dělení již zřejmě není možné, zbývá jen problematická heuristika. Reference [1] Braun J.V., Braun R.K., Müller H.-G.(2000). Multiple changepoint fitting via quasilikelihood, with application to DNA seqvence segmentation. Biometrica87,2,301 314. Poděkování: Děkuji prof. Jaromíru Antochovi CSc. za všestrannou podporu a neocenitelné rady k obsahu i formě. Adresa: P. Novotný, KPMS, Sokolovská 83,186 75 Praha 8 E-mail: reter@centrum.cz