Sekvenssien segmentointi. Merkkijonoja. Sekvenssien segmentointi. ja dynaaminen ohjelmointi

Samankaltaiset tiedostot
Sekvenssien segmentointi. Merkkijonoja. Sekvenssien segmentointi. ja dynaaminen ohjelmointi

Sekvenssien segmentointi. ja dynaaminen ohjelmointi. T Datasta tietoon Heikki Mannila, Jouni Seppänen syksy 2007

4 Tehokkuus ja algoritmien suunnittelu

Algoritmit 1. Luento 2 Ke Timo Männikkö

Tietorakenteet ja algoritmit - syksy

A TIETORAKENTEET JA ALGORITMIT

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Johdatus diskreettiin matematiikkaan Harjoitus 5, Ratkaise rekursioyhtälö

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Esimerkkejä vaativuusluokista

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Algoritmit 1. Luento 12 Ti Timo Männikkö

Numeeriset menetelmät

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

811120P Diskreetit rakenteet

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

1 Erilaisia tapoja järjestää

Algoritmit 1. Luento 12 Ke Timo Männikkö

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

58131 Tietorakenteet ja algoritmit (syksy 2015)

Algoritmit 2. Luento 3 Ti Timo Männikkö

Harjoitus 4: Matlab - Optimization Toolbox

Nopea kertolasku, Karatsuban algoritmi

Algoritmit 2. Luento 10 To Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö

Gaussin ja Jordanin eliminointimenetelmä

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Ellipsoidimenetelmä. Samuli Leppänen Kokonaislukuoptimointi. S ysteemianalyysin Laboratorio

Lineaarinen yhtälöryhmä

Ohjelmoinnin perusteet Y Python

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Algoritmit 2. Demot Timo Männikkö

Tietorakenteet, laskuharjoitus 1,

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Diskreetin matematiikan perusteet Laskuharjoitus 2 / vko 9

Etsintä verkosta (Searching from the Web) T Datasta tietoon Heikki Mannila, Jouni Seppänen

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

Algoritmit 1. Demot Timo Männikkö

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Numeeriset menetelmät

Ohjelmoinnin perusteet Y Python

811312A Tietorakenteet ja algoritmit , Harjoitus 2 ratkaisu

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Algoritmit 2. Luento 9 Ti Timo Männikkö

Vaihtoehtoinen tapa määritellä funktioita f : N R on

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

9 Erilaisia tapoja järjestää

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

811312A Tietorakenteet ja algoritmit I Johdanto

12. Algoritminsuunnittelun perusmenetelmiä

12. Algoritminsuunnittelun perusmenetelmiä

Algoritmit 1. Demot Timo Männikkö

MS-A0102 Differentiaali- ja integraalilaskenta 1

Numeerinen analyysi Harjoitus 1 / Kevät 2017

Reaalilukuvälit, leikkaus ja unioni (1/2)

2. Eukleideen algoritmi

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

Algoritmit 1. Luento 3 Ti Timo Männikkö

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 13 Ti Timo Männikkö

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet Y Python

811312A Tietorakenteet ja algoritmit, VI Algoritmien suunnitteluparadigmoja

Malliratkaisut Demo 4

MS-A0401 Diskreetin matematiikan perusteet

Tieto- ja tallennusrakenteet

Rinnakkaistietokoneet luento S

Stabilointi. Marja Hassinen. p.1/48

Ohjelmoinnin perusteet Y Python

Algoritmit 1. Luento 13 Ma Timo Männikkö

Uolevin reitti. Kuvaus. Syöte (stdin) Tuloste (stdout) Esimerkki 1. Esimerkki 2

Johdatus lukuteoriaan Harjoitus 11 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Osittaistuenta Gaussin algoritmissa: Etsitään 1. sarakkeen itseisarvoltaan suurin alkio ja vaihdetaan tämä tukialkioiksi (eli ko. rivi 1. riviksi).

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Sarja. Lukujonosta (a k ) k N voi muodostaa sen osasummien jonon (s n ): s 1 = a 1, s 2 = a 1 + a 2, s 3 = a 1 + a 2 + a 3,...,

Trimmitysongelman LP-relaksaation ratkaiseminen sarakkeita generoivalla algoritmilla ja brute-force-menetelmällä

Tietorakenteet, laskuharjoitus 3, ratkaisuja

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2

Dynaamiset regressiomallit

Harjoitus 6 ( )

Liite 1. Laajennettu Eukleideen algoritmi suoraviivainen tapa

Algoritmit 2. Luento 8 To Timo Männikkö

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

7. Olemassaolo ja yksikäsitteisyys Galois n kunta GF(q) = F q, jossa on q alkiota, määriteltiin jäännösluokkarenkaaksi

Algoritmianalyysin perusteet

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

ImageRecognition toteutus

Algoritmit 1. Luento 10 Ke Timo Männikkö

Transkriptio:

Sekvenssien segmentointi ja dynaaminen ohjelmointi T-61.2010 Datasta tietoon Heikki Mannila, Jouni Seppänen syksy 2007 Sekvenssien segmentointi Erilaisia aikasarjoja esiintyy usein Miten aikasarja voidaan jakaa paloihin (segmentteihin) jotka ovat keskenään homogeenisia? Dynaamisen ohjelmoinnin algoritmi: voimakas työkalu 1 2 Merkkijonoja Dokumentit DNA tataacacaaataataaatgcttgaggggatgaatatccaattttccatt atgtacttattgtacattgcatgcctgtaccaaaatatttcatgtacctc ataaatgtatacacctgctatgtacccacaaaaattaaattttaaaacaa tacattgttatccactatagtcaccatattgcacaatagatctgttgaat tcattcctcctgtacaatgcaattttgtaccctttgaccaacatctaccc aatcctcctggtaaccatcattctactctgtacttctatgtgttcagcct tcttagacctccacatacaagtgagattatgcagtatctggctttctgtg cctggattattttactcagtataatgtcctcccggttcattcatgttgtc acaaatgatactttttttattttttaaggttgtatactattctattgtgt atgtgtaccacattttcttcatccactcatgtgtcgatggatacttaagt taattccacatcttggctgttgtgaataatgctacaataaatatgggagt acagataactcattgacacactgatttgatatctttttaatatatgccca 4 1

Todellinen esimerkki Haiminen & Mannila, Discovering isochores by least-squares optimal segmentation, Gene 397 (2007), 53-60. 11 2

Virheen minimointi Syöte: data y1, y2, y3,..., yn segmenttien lukumäärä k Tuloste: segmenttien alut bj ja loput ej segmenttien vakiotasot wj Tavoite: mahdollisimman pieni virhe 14 Fibonaccin luvut Varhaista populaatiogenetiikkaa (1202): ajanhetkellä n + 2 ovat elossa ajanhetken n + 1 kanit ja (nyt sukukypsien) ajanhetken n kanien jälkeläiset F1 = F2 = 1 Fn+2 = Fn + Fn+1 17 3

Fibonaccin luvut (3) Fibonaccin luvut (4) Miksi idea on niin huono? Sama asia lasketaan moneen kertaan F2 F4 F1 F3 F2 F6 F5 F3 F4 F1 F2 F2 F3 F1 F2 Parempi idea: käytetään määritelmää rekursiivisesti mutta muistetaan mitä on jo laskettu Mitä tekemistä tällä on segmentoinnin kanssa? F2 F4 F1 F3 F2 F6 F3 F5 F4 19 20 Virheen minimointi (4) Virheen minimointi (5) Syöte: data y1, y2, y3,..., yn ; segm. määrä k Tuloste: segm. alut ja loput ja vakiotasot Tavoite: mahdollisimman pieni virhe Havainto 3: virhe on segmenttikohtainen: Oletetaan optimaalinen segmentointi Poistetaan datasta viimeinen segmentti Alkuosan segmentointi on edelleen optimaalinen! Havainto 3: virhe on segmenttikohtainen: Oletetaan optimaalinen segmentointi Poistetaan datasta viimeinen segmentti Alkuosan segmentointi on edelleen optimaalinen! Miksi? Jos alkuosalle olisi parempi ratkaisu, sitä voisi käyttää koko datan segmentointiin. 21 22 4

Dynaaminen ohjelmointi (3) Virheen minimointi (6) Havainto 4: Vj,i on laskettavissa luvuista Vj-1,i (i < i ). Paras i:n pisteen j-segmentointi saadaan lisäämällä yksi segmentti parhaaseen i :n pisteen (j 1)-segmentointiin jollakin i < i. Seuraa havainnosta 3. Ohjelman runko: Lasketaan kaikkien mahdollisten segmenttien kustannukset Kp,q. Alustetaan dynaamisen ohjelmoinnin taulukko: V1,i = K1,i. Lasketaan taulukon jokainen rivi Vj,* vasemmalta oikealle. Rekonstruoidaan segmentointi aputaulukosta P. 25 26 Ohjelmarunko koodina function segm = seg(data, nsegments) K = segment_costs(data); V = init_array(k, nsegments); [V, P] = dynprog(k, V); segm = reconstruct(p, data, K); fprintf(1, 'Minimum cost is %f\n', V(, )); fprintf(1, ['Achievable by the following segmentation ',... '(beg,, constant, cost):\n']); disp(segm); 27 Koodina 2. Taulukon alustus function K = segment_costs(data) n = length(data); K = inf * ones(n, n); for p = 1:n, for q = p:n, w = mean(data(p:q)); K(p,q) = sum((data(p:q) - w).^ 2); Taulukon V ensimmäiselle riville V1,* tulevat 1-segmentointien kustannukset. Ne itse asiassa laskettiin jo taulukkoon K: V1,i = K1,i. (Taulukon K muita rivejä käytetään myöhemmin.) 29 30 5

Koodina function V = init_array(k, nsegments) n = size(k, 2); V = zeros(nsegments, n); for i = 1:n, V(1,i) = K(1,i); 31 Koodina 4. Segmentointi function [V, P] = dynprog(k, V) [nsegments, n] = size(v); P = zeros(nsegments, n); for j=2:nsegments, for i=j:n, best = inf; idx = -1; for ii=1:i-1, cost = V(j-1, ii) + K(ii+1, i); if cost < best, best = cost; idx = ii; V(j,i) = best; P(j,i) = idx; Edellinen ohjelma laskee parhaan segmentaation virheen mutta ei itse segmentaatiota. Muutetaan ohjelmaa hieman: taulukon V lisäksi pidetään yllä taulukkoa P, jonka alkio i = Pj,i kertoo, mikä Pj-1,i havaittiin pienimmäksi Vj,i:tä laskettaessa. Taulukkoa P seuraamalla löydetään optimaalinen segmentaatio. 33 34 Koodina Aikavaatimus function segm = reconstruct(p, data, K) [nsegments, n] = size(p); segm = zeros(nsegments, 4); i = n; for j=nsegments:-1:1, start = P(j,i) + 1; segm(j,:) = [start, i,... mean(data(start:i)),... K(start,i)]; i = P(j,i); Tietojenkäsittelytieteen fundamentaalisin kysymys: Mitä voidaan laskea mekaanisesti? (Vastaus: kaikki erilaiset mekaanisen laskennan formulaatiot ovat osoittautuneet yhtä voimakkaiksi.) Seuraava kysymys: Mitä voidaan laskea tehokkaasti? 35 36 6

Aikavaatimus (2) Aikavaatimus (3) Suoraviivaisin tapa mitata ajoaikaa: lasketaan montako alkeisoperaatiota prosessori tekee. Ongelmia: prosessorien erot kääntäjien erot koodaajien erot ja tekniikka kehittyy koko ajan Käytännössä voidaan laskea, montako sellaista alkeisoperaatioita kuin kokonaislukujen yhteen- tai kertolasku suoritetaan (Tarkalleen ottaen näidenkin suoritusaika riippuu lukujen suuruusluokasta.) 37 38 Aikavaatimus (4) Tarkoista tehokkuuslaskuista tulee alkeellisissakin tapauksissa hyvin monimutkaisia, joten melkein aina tyydytään tarkastelemaan asymptotiikkaa. Esimerkiksi funktio 3n 3 n 2 + n + 100 kasvaa suunnilleen samoin kuin n 3 : vakiokerroin 3 ja alemman asteen termit eivät vaikuta. Kirjoitetaan 3n 3 n 2 + 100 = O(n 3 ). 39 Aikavaatimus (6) O(n), lineaarinen aika: Vakioaika jokaista data-alkiota kohden. Tämä aika kuluu jo datan lukemiseen. O(n log n): Lukujen suuruusjärjestykseen lajittelun viemä aika. O(n 2 ): Neliöllinen aika. Melko hyvä. O(n 3 ): Kuutiollinen aika. Alkaa olla hankala. O(2 n ): Eksponentiaalinen aika, erittäin hidas. 41 7

Aikavaatimus (11) O(n 3 ) O(kn) O(kn 2 ) O(kn) K = segment_costs(data); V = init_array(k, nsegments); [V, P] = dynprog(k, V); segm = reconstruct(p, data, K); O(n 3 +kn+kn 2 +kn) = O(n 3 +kn 2 ) operaatiota Oletettavasti k < n, joten termi n 3 hallitsee Voisiko kriittistä kohtaa nopeuttaa? 46 8

Aikavaatimus (12) O(n 2 ) O(kn) O(kn 2 ) O(kn) K = segment_costs(data); V = init_array(k, nsegments); [V, P] = dynprog(k, V); segm = reconstruct(p, data, K); O(n 2 +kn+kn 2 +kn) = O(kn 2 ) operaatiota 49 Muunnelmia d-ulotteinen data, d > 1 Eri virhemittoja: L1 (virheiden summa) L2 (tässä käytetty) Lp L (virheiden maksimi) 54 9

Eri muuttujien perusteella tehtyjä segmentaatioita Muunnelmia (2) Tapoja approksimoida dataa paloittain vakio (tässä käytetty) paloittain lineaarinen paloittain neliöllinen Kaikki nämä onnistuvat muuttamalla taulukon K laskentaa. Niina Haiminen, Heikki Mannila, Evimaria Terzi: Comparing segmentations, BMC Bioninformatics 2007 55 56 Muunnelmia (3) Ongelmia Esimerkki vaikeammasta muunnelmasta: paloittain vakio esitys k segmenttiä, virhemittana L1 tai L2 segmenttien vakiotasoina saa käyttää vain h erisuurta lukua (h < k) Havainto 3 ei pädekään: jos poistetaan viimeinen segmentti, aiempia voi kannattaa muuttaa Gionis, A. & Mannila, H. Finding Recurrent Sources in Sequences. RECOMB 2003. 57 Oikean k:n valinta Millä tahansa k:lla saadaan jokin ratkaisu. Erilaiset korjaustermit. Algoritmin nopeuttaminen O(kn 2 ) on turhan hidas suurilla n Online-ongelmat: dataa tulee koko ajan ja sitä pitäisi segmentoida saman tien. 58 Dynaaminen ohjelmointi Dynaaminen ohjelmointi sopii optimointitehtäviin, joissa optimaalinen ratkaisu sisältää optimaalisia ratkaisuja osatehtäviin samoja osatehtäviä joudutaan ratkomaan toistuvasti. 59 10

Dynaaminen ohjelmointi Merkkijonojen (esim. DNA:n) editointietäisyys: mikä on pienin määrä yhden merkin poistoja ja lisäyksiä, joilla GGGAATTGCA muutetaan GGAATTTCGA:ksi? GGGAATT*GCA GG*AATTTCGA Needlemanin Wunschin algoritmi (1970) 61 11