Datahajautettu klusterointi. ITKC35 Rinnakkaislaskenta Harjoitustyö. Sami Äyrämö

Koko: px
Aloita esitys sivulta:

Download "Datahajautettu klusterointi. ITKC35 Rinnakkaislaskenta Harjoitustyö. Sami Äyrämö"

Transkriptio

1 Datahajautettu klusterointi ITKC35 Rinnakkaislaskenta Harjoitustyö Sami Äyrämö JYVÄSKYLÄN YLIOPISTO Informaatioteknologian tiedekunta Tietotekniikan laitos syksy 2003

2 Sisältö 1 Johdanto 1 2 Tutkimussuunnitelma 1 3 Klusterointi 2 4 K-means 4 5 Rinnakkainen K-means-algoritmi 5 6 Toteutus 5 7 Tulokset Suorituskyky Josef-koneella Suorituskyky its-koneilla Yhteenveto 9 References 10 A Suoritusajat (Josef) 11 B Suoritusajat (Its) 12 C Testauksessa käytetyt koodit 13

3 1 Johdanto Tämän dokumentti on tarkoitettu loppuraportiksi kurssinitck35 Rinnakkaislaskenta harjoitustyölle. Työssä sovelletaan rinnakkaislaskennan menetelmiä klusterointitehtävän ratkaisemisessa. Klusterointimenetelmiä hyödynnetään mm. data-analyysija tiedonlouhintatehtävien ratkaisuun [7, 3, 8, 2]. Varsinkin tiedonlouhintatehtävissä kohteena on usein hyvin suuret tietomassat. Tietomäärä voi kasvaa suureksi joko havaintojen lukumäärän tai havainnoista mitattavien muuttujien lukumäärän suhteen, tai pahimmassa tapauksessa molempien. Tästä seuraa haasteita klusterointimenetelmien kehittäjille algoritmien laskennallisen tehokkuuden suhteen, jotta tehtävät voidaan suorittaa inhimillisessä ajassa tinkimättä kuitenkaan liikaa algoritmin tuottaman tuloksen laadusta. Näistä lähtökohdista klusterointitehtävän hajauttaminen useammalle koneelle on varteenotettava vaihtoehto hyvä laatuisten klusterointituloksien tuottamiselle riittävän lyhyessä ajassa. Tämä raportti etenee siten, että ensin esitellään työn tutkimussuunnitelma, jossa kuvataan lähtökohdat ja tavoite. Seuraavaksi esitellään klusteroinnin perusidea, eri menetelmien luokittelu ja esimerkkinä käytettävä menetelmä. Tämän jälkeen esitetään eräs ratkaisumalli klusteroinnin rinnakkaistamisongelmalle ja sen toteutus. Tuloksia esitellään ja johtopäätökset työstä esitellään viimeisenä. 2 Tutkimussuunnitelma Harjoitustyön tarkoituksena on rinnakkaistaa yleisesti tunnettu ja usein hyödynnetty osittava klusterointialgoritmi nimeltä k-means ja testata sen rinnakkaistamisen vaikutusta algoritmin laskentanopeuteen. Pohjana työlle käytetään artikkelia [1]. Harjoitustyön ajankäyttösuunnitelma on seuraava: Vaihe Ajankäyttö Perehtyminen 2.5h Suunnittelu 10h Toteutus 12.5h Testaus 5h Raportointi ja esitykset 10h

4 Algoritmi toteutetaan Fortran 90 -kielellä käyttäen MPI-viestinvälityskirjastoa [6]. Rinnakkaistetun algoritmin toimivuutta testataan its-työasemista koostuvassa rinnakkaisverkossa sekä yhteisen muistin rinnakkaiskoneessa Josefissa eri suuruisilla datajoukoilla (tarkoittaa eri kokoisilla datapisteiden määrillä ja kahdella eri dimensiolla). Tulokset raportoidaan speedup-arvoina (tarkoittaa tehtävän suorittamiseen yhdellä prosessorilla kuluvan ajan suhdetta n:llä prosessorilla kuluvaan aikaan [5]) ja graafisina kuvina. 3 Klusterointi Klusterointi on hyvin yleisesti käytetty menetelmä tilastotieteessä ja mallinnuksessa [4, 2, 8]. Tämä kappale esittelee muutamia klusteroinnin perusasioita. Yksinkertaisesti kuvailtuna klusterointi on samankaltaisten havaintojen (tai objektien, datapisteiden, jne.) ryhmittelyä. Klusterointi liittyy hyvin läheisesti luokitteluun, mutta peruslähtökohta näiden kahden tehtävän välillä on kuitenkin erilainen. Luokittelussa on etukäteen annettu luokat, joihin analysoitava data pyritään sijoittamaan. Eli kukin havainto kuuluu johonkin ennalta määrättyyn luokkaan. Tämän vuoksi luokittelua voidaan kutsua myös ohjatuksi oppimiseksi (supervised learning). Klusteroinnissa alkutilanne on taas päinvastainen: on olemassa vain joukko havaintoja, mutta emme tiedä kuuluvatko ne joihinkin luokkiin tai onko luokkia yleensä ottaen edes olemassa. Tästä seuraa nimitys ohjaamaton oppiminen (unsupervised learning). Klusteroinnin tehtävä on löytää nämä luokat eli klusterit. Sana klusteri tarkoittaa tässä yhteydessä samanlailla käyttäytyvien objektien joukkoa. Klusteroinnissa tavoitteena on, että samaan klusteriin liitetyt havainnot ovat mahdollisimman samanlaisia, ja toisaalta eri klustereihin liitetyt havainnot mahdollisimman erilaisia mitattujen ominaisuuksiensa suhteen. Jos annettu havaintodata onnistutaan rypästelemään ja saadut klusterit voidaan todeta valideiksi, voidaan klustereita puolestaan tämän jälkeen käyttää luokittelun kriteerinä. Sovelluskohteita klusteroinnille on runsaasti, sillä lähes lähes kaikenlaista dataa voidaan klusteroida. Esimerkkeinä voidaan mainita asiakkaiden profilointi ja segmentointi ostoskäyttäytymisen mukaan, dokumenttien ja kuvien klusterointi, taivaankappaleiden ryhmittely ja taudinkuvausten muodostaminen.

5 Kuten em. listasta voidaan huomata, menetelmät eivät rajoitu vain suoraan numeerisen datan käsittelyyn. Käyttämällä sopivia esikäsittelymenetelmiä, esimerkiksi tekstin ja kuvien klusterointi on myös mahdollista. Esikäsittely jätetään kuitenkin tämän työn ulkopuolelle ja keskitytään vain numeerisen tiedon käsittelyyn. Klusterointimenetelmät jaetaan tyypillisesti kahteen eri pääryhmään: hierarkiset (hierarchical) ja ositukseen perustuvat (partition-based) menetelmät. Suurin ero näiden kahden ryhmän välillä on siinä, että hierarkisissa menetelmissä klustereiden lukumäärää ei päätetä etukäteen, kun taas ositukseen perustuvissa menetelmissä algoritmille alustetaan jokin ratkaisu, jota algoritmilla pyritään iteratiivisesti parantamaan. Hiearkiset menetelmät voidaan edelleen jakaa kokoaviin (agglomerative, merge) ja hajauttaviin menetelmiin (divisive, split). Kokoavat menetelmät lähtevät liikkeelle siten, että kukin datapiste muodostaa oman klusterin ja ensimmäisellä kierroksella yhdistetään pareittain lähimpänä toisiaan olevat pisteet. Näin saadaan joukko klustereita joiden lukumäärä on puolet alkuperäisten havaintojen määrästä. Seuraavalla kierroksella yhdistetään lähimpänä toisiaan olevat ensimmäisellä kierroksella saadut klusterit toisiinsa edelleen suuremmiksi klustereiksi. Näin jatketaan, kunnes koko havaintojoukko muodostaa yhden klusterin. Klusterien välisen etäisyyden mittana voidaan käyttää esimerkiksi lähimpänä toisiaan olevia pisteitä, etäisimpiä pisteitä tai klusterihavaintojen keskiarvojen välistä etäisyyttä. Hajauttavien menetelmien idea on päinvastainen: aloitetaan yhdestä isosta klusterista ja lopetaan yksittäisten havaintojen muodostamiin klustereihin. Hierarkisten menetelmien etenemistä ja niiden tuottamia klustereita voidaan kuvata ns. dendogram-puiden avulla. Dendogram-puista voidaan valita haluttu taso, josta lopullinen klusterijako valitaan. Hierarkisten menetelmien heikkous on mm. se, että yhdellä tasolla havainnon klusteriin liittämisessä tapahtunut virhe vaikuttaa kaikkiin seuraaviinkin iteraatioihin. Tässä työssä käytetään kuitenkin osittavaa periaatetta ja sen vuoksi seuraavassa kappaleessa esitetään tarkemmin niistä yleisin eli K-means-algoritmi.

6 4 K-means K-means-algoritmi on ehkä tunnetuin (osittava) klusterointialgoritmi ja siitä on johdettu monia erilaisia versioita ja toteutuksia [9, 7, 3, 2]. Perusalgoritmi on seuraava: 1. Valitaan klustereiden lukumäärä K ja aloituspisteet (prototyypit). 2. Lasketaan kunkin havainnon etäisyydet prototyyppeihin ja liitetään havainto lähimpään protoyyppiin. 3. Lasketaan uusi prototyyppi kullekin klusterille (= klusteriin liitettyjen havaintojen keskiarvo). 4. Jos lopetusehto saavutettu niin lopetetaan. Muutoin jatketaan kohdasta 2. Algoritmin laskennallinen vaativuus on luokkaa O(tKn), missä t on iteraatioiden lukumäärä, K klustereiden lukumäärä ja n datapisteiden lukumäärä. Algoritmi ei välttämättä löydä aina löydä globaalia minimiä vaan saattaa ajautua lokaaliin minimiin. Koska K-means-algoritmissa klusteriprototyyppien estimaattorina käytetään keskiarvoa, niin se löytää parhaiten normaalijakautuneet klusterit ja tuottaa siten vain konvekseja klustereita. K-means-algoritmin heikkoutena voidaan pitää sitä, että käyttäjän täytyy määritellä klustereiden lukumäärä etukäteen. Menetelmä on myös herkkä poikkeaville muuttujien arvoille (outliers) sillä estimaattina käytetyn keskiarvon murtumispiste on nolla mikä tarkoittaa, että klusterin paikkaa voidaan muuttaa mielivaltaisen paljon siirtämällä vain yhtä datapistettä riittävän kauas sen oikeasta paikasta. K-means ei sovellu myöskään suoraan diskreettien arvojen klusterointiin, mutta sitä varten on kehitetty muunneltu versio nimeltä K-modes. K-means-algoritmi voidaan itseasiassa kuvata minimointitehtävänä, jossa prototyyppien ja datapisteiden välisten etäisyyksien summaa minimoidaan: minj 2 2 (u), forj 2 2 (u) = N cl N j j=1 x i u 2 2, (1) missä N cl on klustereiden lukumäärä ja N j on j:nteen klusteriin liitettyjen datapisteiden lukumäärä. Jos datapisteiden väliset etäisyydet joudutaan laskemaan joka kierroksella uudestaan on algoritmi hyvin raskas. Tällöin algoritmin rinnakkaistamisella voidaan pienentää tehtävän ratkaisemiseen kuluvaa aikaa huomattavasti. i=1

7 5 Rinnakkainen K-means-algoritmi Rinnakkainen K-means-algoritmi voidaan toteuttaa hajauttamalla data kullekin laskentatehtävälle siten, että kukin laskentatehtävä liittää jokaisella iteraatiolla sille annetut datapisteet niitä lähimpänä oleviin prototyyppeihin ja laskee etäisyydet datapisteistä niiden prototyyppeihin sekä kaikkien datapisteiden etäisyyksien neliöllisen summan niihin liitettyjen klustereiden keksipisteistä, mikä tarkoittaa neliöllinen keskivirhettä, jonka avulla voidaan arvioida ratkaisun hyvyyttä (eli kuinka lähellä (lokaalia) minimiä ollaan). Kun jokainen laskentatehtävä on suorittanut laskennan, niin ne lähettävät toisilleen etäisyydet kutakin klusteriprototyyppiä kohden, keskivirheen ja lukumäärän kuinka monta datapistettä kuhunkin prototyyppiin on liitetty. Tämän jälkeen jokainen tehtävä voi laskea uudet prototyypit ja tarkistaa lopetusehdon ja tarvittaessa jatkaa uudella iteraatiolla. Tämä aiheuttaa hieman rinnakkaista laskentaa, mutta tähän kuluva aika on pieni verrattuna siihen, että kaikki data lähettäisiin yhdelle tehtävälle, joka sitten laskisi keskipisteet ja lähettäisi ne takaisin muille tehtäville. 6 Toteutus Rinnakkainen K-means-algoritmi voidaan toteuttaa kollektiivisen viestinnän periaatteita käyttäen MPI-kirjaston avulla. Viestinnässä tarvittavia operaatioita ovat (tarkemmat määrittelyt aliohjelmille esim. MPI-oppaassa [6]: Viestinnän alustaminen: MPI_INIT MPI_COMM_SIZE MPI_COMM_RANK Tyyppimuunnokset: MPI_TYPE_VECTOR MPI_TYPE_COMMIT Viestintä:

8 MPI_BCAST MPI_SEND MPI_RECV MPI_BARRIER MPI_ALLREDUCE Viestinnän päättäminen: MPI_FINALIZE Viestinnän alustamisen jälkeen juurisolmu laskee kuinka suuri osuus datasta kullekin laskentatehtävälle kuuluu ja lähettää sen jälkeen ne MPI_SEND-aliohjelmalla käyttäen apuna MPI_TYPE_VECTOR- ja MPI_TYPE_COMMIT-aliohjelmilla tehtyjä ns. johdettuja tietotyyppejä. MPI_BARRIER-kutsulla synkronoidaan laskentatehtävien suoritus laskenta-ajan mittaamista varten. Itse laskennan aikana prototyyppeihin liitettyjen datapisteiden lukumäärät, etäisyyksien summat ja neliöllinen keskivirhe lähetetään "all-to-all-periaatteella MPI_ALLREDUCE-aliohjelmaa käyttäen kaikille laskentatehtäville, jotka kukin laskevat niistä summan. Protoyyppien laskenta lopetetaan kun neliöllinen keskivirhe ei enää muutu. Toteutuksen lähdekoodit ovat liittessä C. 7 Tulokset Tuloksia tarkastellaan vertaamalla speedup-arvoja, kun sama klusterointitehtävä suoritetaan erilaisilla prosessorien lukumäärillä. Speedup lasketaan seuraavasti [5]: S relative = T 1 T n, (2) missä T 1 on tehtävän yhdellä prosessorilla suorittamiseen kuluva aika ja T n on sen n:llä prosessorilla suorittamiseen kuluva aika. Kunkin speedup-arvon laskemiseen on ajettu viisi onnistunutta klusterointia (globaali minimi siis löytyi) ennalta määrätyistä aloituspisteistä. Näistä vertailuarvoksi on otettu aina paras aika.

9 7.1 Suorituskyky Josef-koneella Kuvissa 1 ja 2 on esitetty Josef-koneella suoritettujen testien speedup-kuvaajat. Testeissä saadut suoritusajat löytyvät liitteestä A. Kuvaajista voidaan havaita, että speedup on suurella datajoukolla jopa superlineaarista. Eli hyötysuhde on yli teoreettisen raja-arvon mikä tarkoittaa, että prosessorien määrän kaksinkertaistuessa laskennan nopeutuminen on yli kaksinkertaisesta. Tämä näkyy suuremmalla 6- ulotteisella datalla, jossa suurimmalla (n = 80000) datalla kahdeksalla prosesorilla saatu speedup-arvo on noin Tämä on seurausta mahdollisesti paremmasta tehokkaammasta muistin käytöstä, jolloin hajautetun datan hakemiseen kulutetaan suhteessa vähemmän aikaa kuin yhden koneen tapauksessa. Kuva 1: Speedup-käyrät eri kokoisille datoille Josefissa 2-ulotteisen datan tapauksessa. Kuva 2: Speedup-käyrät eri kokoisille datoille Josefissa 6-ulotteisen datan tapauksessa.

10 7.2 Suorituskyky its-koneilla Kuvissa 3 ja 4 on puolestaan esitetty its-koneilla suoritettujen testien speedupkuvaajat. Testeissä saadut suoritusajat löytyvät liitteestä B. Kuvaajista voidaan havaita, että speedup-arvo muuttuu suurilla datoilla käytännössä lineaarisesti. Pienemmillä datoilla kommunikointiin kuluvan ajan suhteellinen osuus on suurempi, joten speedup-arvot eivät saavuta aivan lineaarista tasoa. Josefiin verratuna hieman heikompi suorituskyky johtunee kommunikointiin kuluvasta ajasta. Josefissa kommunikointi tapahtuu yhteismuistin kautta, jolloin siihen kuluu vähemmän aikaa. Nämäkin tulokset ovat kuitenkin hyviä ajatellen algoritmin skaalautuvuutta suurten, esimerkiksi tiedonlouhinnassa analysoitavien, datamassojen suhteen. Kuva 3: Speedup-käyrät eri kokoisille datoille its-koneilla 2-ulotteisen datan tapauksessa. Kuva 4: Speedup-käyrät eri kokoisille datoille its-koneilla 6-ulotteisen datan tapauksessa.

11 8 Yhteenveto Tässä työssä testattiin rinnakkaistetun k-means-algoritmin toimivuutta kahdessa eri rinnakkaislaskenta ympäristössä. Erityisesti yhteismuistia käyttävän Josef-rinnakkaislaskentakoneen tulokset olivat hyviä. Sillä päästiin jopa superlineaarisiin speedup-arvoihin, minkä oletettiin johtuvan kommunikoinnin nopeudesta yhteismuistia käyttävässä rinnakkaiskoneessa. Its-työasemakoneista koostuvassa verkossa saatiin lineearisesti käyttäytyviä speedup-käyriä, mikä osoittaa myös hyvää skaalautuvuutta prosessori- ja datamäärän suhteen. Koska tavoitteena oli tutkia rinnakkaistamisesta saatavia hyötyjä suuriin datamassoihin kohdistuvissa tiedonlouhintatehtävissä, olivat varsin tulokset rohkaisevia. Varsinkin superlineaarinen käyttäytyminen mahdollistaa suurtenkin datamassojen louhinnan inhimillisessä ajassa. Lisäksi tiedossa on, että robustimpia klusterointimenetelmiä käytettäessä (kuten K-medians ja K-spatial medians), laskennallinen vaativuus vain kasvaa, jolloin ainakin tämän työn perusteella rinnakkaistamisesta voidaan olettaa olevan hyötyä laskenta-ajan ja muistin käytön suhteen.

12 Viitteet [1] Dhillon, I.S., and Modha, D.S., A data clustering algorithm on distributed memory machines. IBM Almaden Research Center, USA, Workshop on Large-Scale Parallel KDD Systems August 15th, 1999, San Diego, CA, USA in conjunction with ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. [2] Duda R.O., Hart, P.E. and Stork, D.G., Pattern classification, John Wiley & Sons Inc, [3] Dunham M. H., Data mining introductory and advanced topics, Pearson Education Inc, [4] Everitt, B.S., Landau, S. and Leese, M., Cluster Analysis, Arnold, a member of the Hodder Headline Group, London, [5] Foster, I., Designing and Building Parallel Programs, Available at ( ). [6] Haataja, J. and Mustikkamäki, K., Rinnakkaisohjelmointi MPI:llä. CSC - Tieteellinen laskenta Oy, Available at ( ). [7] Hand, D., Mannila H. and Smyth, P., Principles of data mining, MIT Press, [8] Hastie, T., Tibshirani R. and Friedman, J., The elements of statistical learning; data mining, inference, and prediction. Springer-Verlag, [9] Jain, A.K., Murty, M.N. and Flynn, P.J., Data clustering: A review. ACM Computing surveys, Vol. 31, No. 3, September 1999.

13 A Suoritusajat (Josef) Josef, d=2 Nbr of processors Datasize Josef, d=6 Nbr of processors Datasize

14 B Suoritusajat (Its) Its, d=2 Nbr of processors Datasize Its, d=6 Nbr of processors Datasize

15 C Testauksessa käytetyt koodit MODULE mpi IMPLICIT NONE! Otetaan käyttöön MPI-määrittelyt: INCLUDE mpif.h! Otetaan käyttöön MPI-määrittelyjä INTEGER, SAVE :: ntasks, rc, my_id END MODULE mpi MODULE prec1 IMPLICIT NONE INTEGER, PARAMETER :: prec = SELECTED_REAL_KIND(12,50) END MODULE prec1 MODULE file_io IMPLICIT NONE PUBLIC read_params, read_data CONTAINS SUBROUTINE read_params(fname,r,c,k) USE prec1 IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: fname INTEGER, INTENT(OUT) :: r,c,k INTEGER :: status OPEN(10,FILE=fname, IOSTAT=status) IF(status /= 0)THEN WRITE(*,*) Error (, status, ) in opening file:,fname,! STOP READ(10, (I5) ) r READ(10, (I1) ) c READ(10, (I1) ) k CLOSE(10) END SUBROUTINE read_params SUBROUTINE read_data(fname,data) USE prec1

16 IMPLICIT NONE CHARACTER(len=*),INTENT(IN) :: fname REAL, DIMENSION(:,:), INTENT(OUT):: data INTEGER :: r,c,k,i,j,status,err OPEN(10,FILE=fname, IOSTAT=status) IF(status /= 0)THEN WRITE(*,*) Error (, status, ) in opening file:,fname,! STOP READ(10, (I5) ) r READ(10, (I1) ) c READ(10, (I1) ) k DO i = 4,r+3 READ(10,*,IOSTAT=err) (data(i-3,j),j=1,c) IF(err < 0) THEN WRITE (*,*) End of file reached, execution continues! EXIT END DO CLOSE(10) END SUBROUTINE read_data END MODULE file_io MODULE clustering IMPLICIT NONE PUBLIC kmeans CONTAINS SUBROUTINE kmeans(data, k, cntrs, ncl, maxiters,comm) USE mpi USE prec1 IMPLICIT NONE REAL, DIMENSION(:,:), INTENT(IN) :: data REAL, DIMENSION(:,:), INTENT(INOUT) :: cntrs INTEGER, DIMENSION(:), INTENT(INOUT) :: ncl INTEGER, INTENT(IN) :: k, maxiters, comm INTRINSIC SIZE, MAX!Lokaalit datataulukot!globaalit klusterivektorit!globaalit pisteiden lukumäärät REAL :: msqe, msqe_tmp, oldmsqe, d, dmin

17 INTEGER :: i, j, n, ndim, kmin, h, it, allocstat INTEGER, DIMENSION(k) :: ncl_tmp REAL, DIMENSION(:,:), ALLOCATABLE :: cntrs_tmp REAL (KIND=prec) :: t0, t1!lokaalit pisteiden lukumäärät!lokaalit klusterivektorit!muuttujat kellotusta varten n = SIZE(data,1) ndim = SIZE(data,2)!Lokaalien data taulukoiden havaintolukumäärät!datan dimensioiden lukumäärä ALLOCATE(cntrs_tmp(k,ndim), STAT=allocstat) IF(allocstat/=0) STOP Memory allocation failed!!varataan tilaa lokaaleille aputaulukoille msqe = HUGE(msqe)!Alustetaan virhe (pitää olla suuri luku!) t0 = MPI_WTIME()!Aloitetaan kellotus DO it =1, maxiters oldmsqe = msqe msqe_tmp = 0 ncl_tmp = 0 cntrs_tmp = 0 DO i = 1,n dmin = HUGE(dmin) kmin = 1 DO j = 1,k d = SQRT(SUM((data(i,:)-cntrs(j,:))**2)) IF (d < dmin) THEN dmin = d kmin = j END DO cntrs_tmp(kmin,:) = cntrs_tmp(kmin,:) + data(i,:) ncl_tmp(kmin) = ncl_tmp(kmin) + 1 msqe_tmp = msqe_tmp + dmin END DO CALL MPI_ALLREDUCE(ncl_tmp, ncl, k, MPI_INTEGER, MPI_SUM, comm, rc) CALL MPI_ALLREDUCE(cntrs_tmp, cntrs, k*ndim, MPI_REAL, MPI_SUM, comm, rc) DO j = 1,k h = MAX(ncl(j),1) cntrs(j,:) = cntrs(j,:) / h END DO CALL MPI_ALLREDUCE(msqe_tmp, msqe, 1, MPI_REAL, MPI_SUM, comm, rc) IF(msqe >= oldmsqe) EXIT!Lopetusehto

18 END DO t1 = MPI_WTIME() IF(my_id == 0) THEN WRITE(*,*) Iters:,it WRITE(*,*) MSE :,msqe DO j = 1,k WRITE(*,*) Cntrs:, cntrs(j,:) END DO WRITE(*, ("Suoritusaika:",F0.4) ) t1 - t0 END SUBROUTINE kmeans END MODULE clustering PROGRAM kmeans_test USE mpi USE file_io, ONLY : read_data, read_params USE clustering, ONLY : kmeans USE prec1 IMPLICIT NONE CHARACTER(len=30) :: fname REAL, DIMENSION(:,:), ALLOCATABLE :: data REAL, DIMENSION(:,:), ALLOCATABLE :: l_data, cntrs INTEGER, DIMENSION(:), ALLOCATABLE :: l_datacount, displs INTEGER, DIMENSION(:), ALLOCATABLE :: ncl!globaalit pisteiden lukumäärät INTEGER, DIMENSION(MPI_STATUS_SIZE) :: status INTEGER :: r, c, k, my_cnt, local_nr, ival_mod, datamx1, datamx2, allocstat INTEGER :: i, j INTEGER, PARAMETER :: root_id = 0, tag = 50 CALL MPI_INIT(rc) IF(rc /= MPI_SUCCESS) THEN WRITE(*,*) MPI Initialization failed! STOP CALL MPI_COMM_SIZE(MPI_COMM_WORLD, ntasks, rc) CALL MPI_COMM_RANK(MPI_COMM_WORLD, my_id, rc) IF(my_id == root_id) THEN

19 fname = n8d6k4.dat CALL read_params(fname,r,c,k) ALLOCATE(data(r,c), STAT=allocstat) IF(allocstat/=0) STOP Memory allocation failed! CALL read_data(fname,data) WRITE(*,*) Rows:, r WRITE(*,*) Dims:, c WRITE(*,*) Clusters:, k!lähetetään dimensiot kaikille CALL MPI_BCAST(r, 1, MPI_INTEGER, root_id, MPI_COMM_WORLD, rc) CALL MPI_BCAST(c, 1, MPI_INTEGER, root_id, MPI_COMM_WORLD, rc) CALL MPI_BCAST(k, 1, MPI_INTEGER, root_id, MPI_COMM_WORLD, rc) local_nr = r/ntasks ival_mod = MOD(r,ntasks) IF(my_id < ival_mod) THEN my_cnt = local_nr + 1 ELSE my_cnt = local_nr!varataan paikalliset datataulukot ja taulukko pisteiden lukumäärille ALLOCATE(l_data(my_cnt,c), ncl(k), STAT=allocstat) IF(allocstat/=0) STOP Memory allocation failed! ncl = 0!Lasketaan osuudet globaalista datataulukosta IF(my_id == root_id) THEN ALLOCATE(l_datacount(0:ntasks-1), displs(0:ntasks-1),& STAT=allocstat) IF(allocstat /= 0) STOP Memory allocation failed! l_datacount(0:ival_mod-1) = local_nr+1 l_datacount(ival_mod:) = local_nr displs(0)=0 DO i=0, ntasks-2 displs(i+1) = displs(i) + l_datacount(i) END DO!create datatypes for local data matrix CALL MPI_TYPE_VECTOR(c, local_nr, r, MPI_REAL, datamx1, rc) CALL MPI_TYPE_VECTOR(c, local_nr+1, r, MPI_REAL, datamx2, rc) CALL MPI_TYPE_COMMIT(datamx1, rc) CALL MPI_TYPE_COMMIT(datamx2, rc) IF(my_id == root_id) THEN l_data = data(1:my_cnt,:)!juurisolmu kopioi oman datan ennen lähetystä

20 DO i=1,ntasks-1!lähetetään jokaiselle laskentatehtävälle niiden osuus datoista IF(i < ival_mod) THEN CALL MPI_SEND(data(displs(i)+1,1), 1, datamx2, i, tag, MPI_COMM_WORLD, rc) ELSE CALL MPI_SEND(data(displs(i)+1,1), 1, datamx1, i, tag, MPI_COMM_WORLD, rc) END DO ELSE CALL MPI_RECV(l_data, my_cnt*c, MPI_REAL, root_id, tag, MPI_COMM_WORLD, status, rc) ALLOCATE(cntrs(k,c))!Kuusi dimensioinen data cntrs(1,1:6)=(/5.0, 5.0, 4.0, 6.0, -7.0, -5.0/) cntrs(2,1:6)=(/0.0, -5.0, 6.0, -5.0, 0.0, -9.0/) cntrs(3,1:6)=(/5.0, 0.0, -1.0, 1.0, 8.0, 3.0 /) cntrs(4,1:6)=(/-5.0, 0.0, -4.0, -4.0, -4.0, 0.0/)!cntrs(1,1:2)=(/5.0, 5.0/)!cntrs(2,1:2)=(/0.0, -5.0/)!cntrs(3,1:2)=(/5.0, 0.0/)!cntrs(4,1:2)=(/-5.0, 0.0/) CALL MPI_BARRIER(MPI_COMM_WORLD,rc) CALL kmeans(l_data, k, cntrs, ncl, 50000, MPI_COMM_WORLD) CALL MPI_FINALIZE(rc)!DO i = 1,k! WRITE(*, (/,(4F0.3)) ) (cntrs(i,j),j=1,c)!end DO END PROGRAM kmeans_test

Numeriikan kirjastoja

Numeriikan kirjastoja Numeriikan kirjastoja + Säästää aikaa, hikeä ja kyyneleitä + Aliohjelmat testattuja ja luotettavia + Tehokkuus optimoitu - Ei aina sovellu kovin hyvin omaan tehtävään - Kaupallisista kirjastoista ei saa

Lisätiedot

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3

Johdatus f90/95 ohjelmointiin. H, R & R luvut 1-3 Johdatus f90/95 ohjelmointiin H, R & R luvut 1-3 Fortran-kieli ( 3.1-3) IBM 1954, FORmula TRANslator ISO/ANSI standardit f90, f95, f2003 tieteellinen & teknillinen laskenta rinnakkaislaskenta (HPF, openmp)

Lisätiedot

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö)

Tiedonlouhinta rakenteisista dokumenteista (seminaarityö) Tiedonlouhinta rakenteisista dokumenteista (seminaarityö) Miika Nurminen (minurmin@jyu.fi) Jyväskylän yliopisto Tietotekniikan laitos Kalvot ja seminaarityö verkossa: http://users.jyu.fi/~minurmin/gradusem/

Lisätiedot

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1 1.1 Funktion optimointiin perustuvat klusterointialgoritmit Klusteroinnin onnistumista mittaavan funktion J optimointiin perustuvissa klusterointialgoritmeissä

Lisätiedot

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1 1.1 Funktion optimointiin perustuvat klusterointialgoritmit Klusteroinnin onnistumista mittaavan funktion J optimointiin perustuvissa klusterointialgoritmeissä

Lisätiedot

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne. Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Luentorunko perjantaille

Luentorunko perjantaille Luentorunko perjantaille 28.11.28 Eräitä ryvästyksen keskeisiä käsitteitä kustannusfunktio sisäinen vaihtelu edustajavektori etäisyysmitta/funktio Osittamiseen perustuva ryvästys (yleisesti) K:n keskiarvon

Lisätiedot

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) JOHDATUS TEKOÄLYYN TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA) KONEOPPIMISEN LAJIT OHJATTU OPPIMINEN: - ESIMERKIT OVAT PAREJA (X, Y), TAVOITTEENA ON OPPIA ENNUSTAMAAN Y ANNETTUNA X.

Lisätiedot

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

Johdatus rinnakkaislaskentaan Markus Inkeroinen Optimointiryhmän seminaari

Johdatus rinnakkaislaskentaan Markus Inkeroinen Optimointiryhmän seminaari Johdatus rinnakkaislaskentaan Markus Inkeroinen Optimointiryhmän seminaari 9.2.2004 0 MITÄ ON RINNAKKAISLASKENTA? 1 A parallel computer is a set of processors that are albe to work cooperatively to solve

Lisätiedot

Laskennallinen data-analyysi II

Laskennallinen data-analyysi II Laskennallinen data-analyysi II Ella Bingham, ella.bingham@cs.helsinki.fi Kevät 2008 Muuttujien valinta Kalvot perustuvat Saara Hyvösen kalvoihin 2007 Laskennallinen data-analyysi II, kevät 2008, Helsingin

Lisätiedot

Sovellusohjelmointi Matlab-ympäristössä: Vertaisverkon koneiden klusterointi

Sovellusohjelmointi Matlab-ympäristössä: Vertaisverkon koneiden klusterointi Sovellusohjelmointi Matlab-ympäristössä: Vertaisverkon koneiden klusterointi 28.4.2013 Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi) 1 Sisällysluettelo 1 JOHDANTO... 2 2 KÄYTETYT MENETELMÄT...

Lisätiedot

Laskut käyvät hermoille

Laskut käyvät hermoille Laskut käyvät hermoille - Miten ja miksi aivoissa lasketaan todennäköisyyksiä Aapo Hyvärinen Matematiikan ja tilastotieteen laitos & Tietojenkäsittelytieteen laitos Helsingin Yliopisto Tieteen päivät 13.1.2011

Lisätiedot

Hierarkkinen klusterointi

Hierarkkinen klusterointi Hierarkkinen klusterointi Kari Lehmussaari kari.lehmussaari@helsinki.fi Klusterointimenetelmät-seminaari Helsingin yliopisto, tietojenkäsittelytieteen laitos Raportti C-2002-54, s. 76-85, marraskuu 2002

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Numeeriset menetelmät

Numeeriset menetelmät Numeeriset menetelmät Luento 2 To 8.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 2 To 8.9.2011 p. 1/33 p. 1/33 Lukujen tallennus Kiintoluvut (integer) tarkka esitys aritmeettiset operaatiot

Lisätiedot

Tilastotiede ottaa aivoon

Tilastotiede ottaa aivoon Tilastotiede ottaa aivoon kuinka aivoja voidaan mallintaa todennäköisyyslaskennalla, ja mitä yllättävää hyötyä siitä voi olla Aapo Hyvärinen Laskennallisen data-analyysin professori Matematiikan ja tilastotieteen

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. Antti Rasila Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kevät 2016

Lisätiedot

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu Laskennallisesti Älykkäät Järjestelmät Sumean kmeans ja kmeans algoritmien vertailu Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi) 28.5.2002 1 Tehtävän kuvaus Tehtävänämme oli verrata

Lisätiedot

Luentorunko keskiviikolle Hierarkkinen ryvästäminen

Luentorunko keskiviikolle Hierarkkinen ryvästäminen Luentorunko keskiviikolle 3.12.2008 Hierarkkinen ryvästäminen Ryvästyshierarkia & dendrogrammi Hierarkkinen ryvästäminen tuottaa yhden ryvästyksen sijasta sarjan ryvästyksiä Tulos voidaan visualisoida

Lisätiedot

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI 1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI Ohjaamattomassa oppimisessa on tavoitteena muodostaa hahmoista ryhmiä, klustereita, joiden sisällä hahmot ovat jossain mielessä samankaltaisia ja joiden välillä

Lisätiedot

Yhden muuttujan funktion minimointi

Yhden muuttujan funktion minimointi Yhden muuttujan funktion minimointi Aloitetaan yhden muuttujan tapauksesta Tarpeellinen myös useamman muuttujan tapauksessa Tehtävä on muotoa min kun f(x) x S R 1 Sallittu alue on muotoa S = [a, b] tai

Lisätiedot

Numeerinen integrointi

Numeerinen integrointi Numeerinen integrointi Analyyttisesti derivointi triviaalia, integrointi vaikeaa. Numeerisesti laskettaessa tilanne on päinvastainen. Integrointi on yhteenlaskua, joka on tasoittava operaatio: lähtötietojen

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

805306A Johdatus monimuuttujamenetelmiin, 5 op

805306A Johdatus monimuuttujamenetelmiin, 5 op monimuuttujamenetelmiin, 5 op syksy 2018 Matemaattisten tieteiden laitos Johdatus monimuuttujamenetelmiin Luennot 30.10.13.12.-18 Tiistaina klo 12-14 (30.10., BF119-1) Keskiviikkoisin klo 10-12 (MA101,

Lisätiedot

Rinnakkaistietokoneet luento S

Rinnakkaistietokoneet luento S Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa

Lisätiedot

jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor

jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor T-1.81 Luonnollisten kielten tilastollinen käsittely Vastaukset 11, ti 8.4., 1:1-18: Klusterointi, Konekääntäminen. Versio 1. 1. Kuvaan 1 on piirretty klusteroinnit käyttäen annettuja algoritmeja. Sanojen

Lisätiedot

7.4 Sormenjälkitekniikka

7.4 Sormenjälkitekniikka 7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan

Lisätiedot

Ryhmäfaktorianalyysi neurotiedesovelluksissa (Valmiin työn esittely) Sami Remes Ohjaaja: TkT Arto Klami Valvoja: Prof.

Ryhmäfaktorianalyysi neurotiedesovelluksissa (Valmiin työn esittely) Sami Remes Ohjaaja: TkT Arto Klami Valvoja: Prof. Ryhmäfaktorianalyysi neurotiedesovelluksissa (Valmiin työn esittely) Sami Remes 11.06.2012 Ohjaaja: TkT Arto Klami Valvoja: Prof. Harri Ehtamo Työn saa tallentaa ja julkistaa Aalto-yliopiston avoimilla

Lisätiedot

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää

Lisätiedot

Osakesalkun optimointi

Osakesalkun optimointi Osakesalkun optimointi Anni Halkola Epäsileä optimointi Turun yliopisto Huhtikuu 2016 Sisältö 1 Johdanto 1 2 Taustatietoja 2 3 Laskumetodit 3 3.1 Optimointiongelmat........................ 4 4 Epäsileän

Lisätiedot

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

Lisätiedot

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

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =

Lisätiedot

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010 TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta Yliassistentti Jussi Hakanen jussi.hakanen@jyu.fi syksy 2010 Evoluutiopohjainen monitavoiteoptimointi MCDM ja EMO Monitavoiteoptimointi kuuluu

Lisätiedot

RINNAKKAISOHJELMOINTI MPI:LLÄ

RINNAKKAISOHJELMOINTI MPI:LLÄ RINNAKKAISOHJELMOINTI MPI:LLÄ JUHA HAATAJA JA KAJ MUSTIKKAMÄKI CSC TIETEELLINEN LASKENTA OY Tämän teoksen tekijänoikeudet kuuluvat CSC Tieteellinen laskenta Oy:lle. Teoksen tai osia siitä voi kopioida

Lisätiedot

Algoritmit 2. Luento 8 To Timo Männikkö

Algoritmit 2. Luento 8 To Timo Männikkö Algoritmit 2 Luento 8 To 4.4.2019 Timo Männikkö Luento 8 Algoritmien analysointi Algoritmien suunnittelu Rekursio Osittaminen Rekursioyhtälöt Rekursioyhtälön ratkaiseminen Master-lause Algoritmit 2 Kevät

Lisätiedot

E. Oja ja H. Mannila Datasta Tietoon: Luku 2

E. Oja ja H. Mannila Datasta Tietoon: Luku 2 2. DATASTA TIETOON: MITÄ DATAA; MITÄ TIETOA? 2.1. Data-analyysin ongelma Tulevien vuosien valtava haaste on digitaalisessa muodossa talletetun datan kasvava määrä Arvioita: Yhdysvaltojen kongressin kirjasto

Lisätiedot

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms.

Johnson, A Theoretician's Guide to the Experimental Analysis of Algorithms. Kokeellinen algoritmiikka (3 ov) syventäviä opintoja edeltävät opinnot: ainakin Tietorakenteet hyödyllisiä opintoja: ASA, Algoritmiohjelmointi suoritus harjoitustyöllä (ei tenttiä) Kirjallisuutta: Johnson,

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Tietotekniikan valintakoe

Tietotekniikan valintakoe Jyväskylän yliopisto Tietotekniikan laitos Tietotekniikan valintakoe 2..22 Vastaa kahteen seuraavista kolmesta tehtävästä. Kukin tehtävä arvostellaan kokonaislukuasteikolla - 25. Jos vastaat useampaan

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

Klusterointimenetelmät

Klusterointimenetelmät Klusterointimenetelmät Marko Tuononen Joensuun yliopisto, Tietojenkäsittelytiede Laudaturseminaariesityksen kirjallinen tukimateriaali 25. helmikuuta 2005 Tiivistelmä Klusterointi on menetelmä saada tietoa

Lisätiedot

Harjoitus 7: NCSS - Tilastollinen analyysi

Harjoitus 7: NCSS - Tilastollinen analyysi Harjoitus 7: NCSS - Tilastollinen analyysi Mat-2.2107 Sovelletun matematiikan tietokonetyöt Syksy 2006 Mat-2.2107 Sovelletun matematiikan tietokonetyöt 1 Harjoituksen aiheita Tilastollinen testaus Testaukseen

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

DOB valmennus Data-analyysi. Koneoppiminen. CC by

DOB valmennus Data-analyysi. Koneoppiminen. CC by DOB valmennus Data-analyysi Koneoppiminen CC by 4.0 30.08.2017 Datasta oivalluksia ja bisnestä Data-analytiikan menetelmien valmennusmateriaali Luentopäivän sisältö Johdanto Tiedonlouhinta Koneoppiminen

Lisätiedot

Harha mallin arvioinnissa

Harha mallin arvioinnissa Esitelmä 12 Antti Toppila sivu 1/18 Optimointiopin seminaari Syksy 2010 Harha mallin arvioinnissa Antti Toppila 13.10.2010 Esitelmä 12 Antti Toppila sivu 2/18 Optimointiopin seminaari Syksy 2010 Sisältö

Lisätiedot

Projektisuunnitelma. Projektin tavoitteet

Projektisuunnitelma. Projektin tavoitteet Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016 Osakesalkun optimointi Anni Halkola Turun yliopisto 2016 Artikkeli Gleb Beliakov & Adil Bagirov (2006) Non-smooth optimization methods for computation of the Conditional Value-at-risk and portfolio optimization.

Lisätiedot

Esimerkkejä vaativuusluokista

Esimerkkejä vaativuusluokista Esimerkkejä vaativuusluokista Seuraaville kalvoille on poimittu joitain esimerkkejä havainnollistamaan algoritmien aikavaativuusluokkia. Esimerkit on valittu melko mielivaltaisesti laitoksella tehtävään

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Monitavoitteiseen optimointiin soveltuvan evoluutioalgoritmin tarkastelu

Monitavoitteiseen optimointiin soveltuvan evoluutioalgoritmin tarkastelu Monitavoitteiseen optimointiin soveltuvan evoluutioalgoritmin tarkastelu (Valmiin työn esittely) 11.4.2011 Ohjaaja: Ville Mattila Valvoja: Raimo Hämäläinen Työn tavoite Tutkia evoluutioalgoritmia (Lee

Lisätiedot

4 Tehokkuus ja algoritmien suunnittelu

4 Tehokkuus ja algoritmien suunnittelu TIE-20100 Tietorakenteet ja algoritmit 52 4 Tehokkuus ja algoritmien suunnittelu Tässä luvussa pohditaan tehokkuuden käsitettä ja esitellään kurssilla käytetty kertaluokkanotaatio, jolla kuvataan algoritmin

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Algoritmit 2. Luento 14 Ke Timo Männikkö

Algoritmit 2. Luento 14 Ke Timo Männikkö Algoritmit 2 Luento 14 Ke 3.5.2017 Timo Männikkö Luento 14 Ositus ja rekursio Rekursion toteutus Kertaus ja tenttivinkit Algoritmit 2 Kevät 2017 Luento 14 Ke 3.5.2017 2/30 Ositus Tehtävän esiintymä ositetaan

Lisätiedot

Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh

Yleisen PSCR-menetelmän toteutus ohjelmoitavalla näytönoh Yleisen n toteutus ohjelmoitavalla näytönohjaimella Mirko Myllykoski mirko.myllykoski@jyu.fi 15.2.2011 Mitä teen? Tarkoituksena toteuttaa (ja osin jo toteutettukin) stä versio ohjelmoitavalle näytönohjaimelle

Lisätiedot

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Parinmuodostuksesta tietojenkäsittelytieteen silmin Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto Suomalainen Tiedeakatemia Nuorten Akatemiaklubi 18.10.2010 Sisältö Mitä tietojenkäsittelytieteessä

Lisätiedot

Johdatus tekoälyn taustalla olevaan matematiikkaan

Johdatus tekoälyn taustalla olevaan matematiikkaan Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3. luento 17.11.2017 Neuroverkon opettaminen (ohjattu oppiminen) Neuroverkkoa opetetaan syöte-tavoite-pareilla

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Otanta-aineistojen analyysi (78136, 78405) Kevät 2010 TEEMA 3: Frekvenssiaineistojen asetelmaperusteinen analyysi: Perusteita

Otanta-aineistojen analyysi (78136, 78405) Kevät 2010 TEEMA 3: Frekvenssiaineistojen asetelmaperusteinen analyysi: Perusteita Otanta-aineistojen analyysi (78136, 78405) Kevät 2010 TEEMA 3: Frekvenssiaineistojen asetelmaperusteinen analyysi: Perusteita risto.lehtonen@helsinki.fi OHC Survey Tilastollinen analyysi Kysymys: Millä

Lisätiedot

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

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2

Lisätiedot

Algoritmit 1. Luento 11 Ti Timo Männikkö

Algoritmit 1. Luento 11 Ti Timo Männikkö Algoritmit 1 Luento 11 Ti 14.2.2017 Timo Männikkö Luento 11 Algoritminen ongelmanratkaisu Osittaminen Lomituslajittelu Lomituslajittelun vaativuus Rekursioyhtälöt Pikalajittelu Algoritmit 1 Kevät 2017

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Klusterointiongelma. Luento 6: Klusterointi. Usein suotavia ominaisuuksia. Usein suotavia ominaisuuksia

Klusterointiongelma. Luento 6: Klusterointi. Usein suotavia ominaisuuksia. Usein suotavia ominaisuuksia Luento 6: Klusterointi Klusterointiongelma etäisyys-/erilaisuusfunktiot dimensionaalisuuden kirous (curse of dimensionality) Menetelmien pääluokat 1. Osittavat 2. Hierarkiset 3. Malliperustaiset (tiheysfunktioihin

Lisätiedot

Kimppu-suodatus-menetelmä

Kimppu-suodatus-menetelmä Kimppu-suodatus-menetelmä 2. toukokuuta 2016 Kimppu-suodatus-menetelmä on kehitetty epäsileiden optimointitehtävien ratkaisemista varten. Menetelmässä approksimoidaan epäsileitä funktioita aligradienttikimpulla.

Lisätiedot

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

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä JYVÄSKYLÄN YLIOPISTO 4. Luennon sisältö Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi Lineaarinen optimointitehtävä Minimointitehtävä

Lisätiedot

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

ja λ 2 = 2x 1r 0 x 2 + 2x 1r 0 x 2 Johdatus diskreettiin matematiikkaan Harjoitus 4, 7.10.2015 1. Olkoot c 0, c 1 R siten, että polynomilla r 2 c 1 r c 0 on kaksinkertainen juuri. Määritä rekursioyhtälön x n+2 = c 1 x n+1 + c 0 x n, n N,

Lisätiedot

Metsämuuronen: Tilastollisen kuvauksen perusteet ESIPUHE... 4 SISÄLLYSLUETTELO... 6 1. METODOLOGIAN PERUSTEIDEN KERTAUSTA... 8 2. AINEISTO...

Metsämuuronen: Tilastollisen kuvauksen perusteet ESIPUHE... 4 SISÄLLYSLUETTELO... 6 1. METODOLOGIAN PERUSTEIDEN KERTAUSTA... 8 2. AINEISTO... Sisällysluettelo ESIPUHE... 4 ALKUSANAT E-KIRJA VERSIOON... SISÄLLYSLUETTELO... 6 1. METODOLOGIAN PERUSTEIDEN KERTAUSTA... 8 1.1 KESKEISTEN KÄSITTEIDEN KERTAUSTA...9 1.2 AIHEESEEN PEREHTYMINEN...9 1.3

Lisätiedot

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia

Itsestabilointi: perusmääritelmiä ja klassisia tuloksia Itsestabilointi: perusmääritelmiä ja klassisia tuloksia Jukka Suomela Hajautettujen algoritmien seminaari 12.10.2007 Hajautetut järjestelmät Ei enää voida lähteä oletuksesta, että kaikki toimii ja mikään

Lisätiedot

Stabiloivat synkronoijat ja nimeäminen

Stabiloivat synkronoijat ja nimeäminen Stabiloivat synkronoijat ja nimeäminen Mikko Ajoviita 2.11.2007 Synkronoija Synkronoija on algoritmi, joka muuntaa synkronoidun algoritmin siten, että se voidaan suorittaa synkronoimattomassa järjestelmässä.

Lisätiedot

RINNAKKAINEN OHJELMOINTI A,

RINNAKKAINEN OHJELMOINTI A, RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka

Rinnakkaisuus. parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa. TTY Ohjelmistotekniikka Rinnakkaisuus parallel tietokoneissa rinnakkaisia laskentayksiköitä concurrent asioita tapahtuu yhtaikaa Rinnakkaisuuden etuja: laskennan nopeutuminen (sarjoittuvat operaatiojonot) ilmaisuvoima (ongelman

Lisätiedot

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

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35 Numeeriset menetelmät TIEA381 Luento 8 Kirsi Valjus Jyväskylän yliopisto Luento 8 () Numeeriset menetelmät 11.4.2013 1 / 35 Luennon 8 sisältö Interpolointi ja approksimointi Funktion approksimointi Tasainen

Lisätiedot

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8

Inversio-ongelmien laskennallinen peruskurssi Luento 7 8 Inversio-ongelmien laskennallinen peruskurssi Luento 7 8 Kevät 2011 1 Iteratiivisista menetelmistä Tähän mennessä on tarkasteltu niin sanottuja suoria menetelmiä, joissa (likimääräinen) ratkaisu saadaan

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017

Lisätiedot

Tarkennamme geneeristä painamiskorotusalgoritmia

Tarkennamme geneeristä painamiskorotusalgoritmia Korotus-eteen-algoritmi (relabel-to-front) Tarkennamme geneeristä painamiskorotusalgoritmia kiinnittämällä tarkasti, missä järjestyksessä Push- ja Raise-operaatioita suoritetaan. Algoritmin peruskomponentiksi

Lisätiedot

Tilastollisen analyysin perusteet Luento 11: Epäparametrinen vastine ANOVAlle

Tilastollisen analyysin perusteet Luento 11: Epäparametrinen vastine ANOVAlle Tilastollisen analyysin perusteet Luento 11: Epäparametrinen vastine ANOVAlle - Sisältö - - - Varianssianalyysi Varianssianalyysissä (ANOVA) testataan oletusta normaalijakautuneiden otosten odotusarvojen

Lisätiedot

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu

811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu 811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään

Lisätiedot

Hierarkkinen ryvästäminen

Hierarkkinen ryvästäminen Hierarkkinen ryvästäminen Juho Rousu Laskennallinen Data-Analyysi I, 20.2.2008 Ryvästyshierarkia & dendrogrammi Hierakkiset ryvästysmenetelmien tulos voidaan visualisoida nk. dendrogrammipuuna Puun lehtinä

Lisätiedot

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

Lisätiedot

Kombinatorinen optimointi

Kombinatorinen optimointi Kombinatorinen optimointi Sallittujen pisteiden lukumäärä on äärellinen Periaatteessa ratkaisu löydetään käymällä läpi kaikki pisteet Käytännössä lukumäärä on niin suuri, että tämä on mahdotonta Usein

Lisätiedot

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( ) Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,

Lisätiedot

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti. Tietorakenteet, laskuharjoitus 11, ratkaisuja 1. Leveyssuuntaisen läpikäynnin voi toteuttaa rekursiivisesti käsittelemällä jokaisella rekursiivisella kutsulla kaikki tietyllä tasolla olevat solmut. Rekursiivinen

Lisätiedot

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun

Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Sami Hokuni 12 Syyskuuta, 2012 1/ 54 Sami Hokuni Neuroverkkojen soveltaminen vakuutusdatojen luokitteluun Turun Yliopisto. Gradu tehty 2012 kevään

Lisätiedot

10. Painotetut graafit

10. Painotetut graafit 10. Painotetut graafit Esiintyy monesti sovelluksia, joita on kätevä esittää graafeina. Tällaisia ovat esim. tietoverkko tai maantieverkko. Näihin liittyy erinäisiä tekijöitä. Tietoverkkoja käytettäessä

Lisätiedot

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 8 Väliarvolause Oletetaan, että funktio f on jatkuva jollain reaalilukuvälillä [a, b] ja derivoituva avoimella välillä (a, b). Funktion muutos tällä välillä on luonnollisesti

Lisätiedot

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari Konsensusongelma hajautetuissa järjestelmissä Niko Välimäki 30.11.2007 Hajautetut algoritmit -seminaari Konsensusongelma Päätöksen muodostaminen hajautetussa järjestelmässä Prosessien välinen viestintä

Lisätiedot

MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi

MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi MS-A0502 Todennäköisyyslaskennan ja tilastotieteen peruskurssi 3B Tilastolliset datajoukot Lasse Leskelä Matematiikan ja systeemianalyysin laitos Perustieteiden korkeakoulu Aalto-yliopisto Syksy 2016,

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea. Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ]

Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ] Johdatus tekoälyyn Luento 6.10.2011: Koneoppiminen Patrik Hoyer [ Kysykää ja kommentoikaa luennon aikana! ] Koneoppiminen? Määritelmä: kone = tietokone, tietokoneohjelma oppiminen = ongelmanratkaisukyvyn

Lisätiedot