Algorithms to Live by kirjan on kirjoittanut Brian Christian ja Tom Griffiths.

Algoritmi tarkoittaa sarjaa ohjeita. Esimerkiksi: Kävele suoraan. Jos vastaan tulee seinä, käänny vasemmalle.

Kenelle Algorithms to live by äänikirja soveltuu?

Suosittelen, jos algoritmit, tilastotiede ja datatiede herättävät mielenkiinnon.

Algorithms to live by kirja esittelee mielestäni upealla tavalla yleisimpiä tietokone- ja laskenta-algoritmeja normaaliin arkeen sovellettuna.

Kirja oli erittäin mielenkiintoinen, vaikka kaikkia lukuarvoja ja tilastotieteellisiä teorioita onkin vaikea muistaa ensimmäisen äänikirjan kuuntelukerran jälkeen.

Vaikka algoritmit erityisesti tietokoneisiin sovellettuna voivat olla hyvinkin monimutkaisia, kirjassa ne on purettu helposti ymmärrettävään muotoon. Jokainen kirjan luku edustaa yhtä algoritmia, ongelmaa tai teknologiaa. Teoriaa on avattu oivallisesti esimerkeillä, joita kuka tahansa vois soveltaa käytännössä.

Algorithms to Live by - Kirjan sisältö

Seuraavaksi Algorithms to live by-kirjan aihepiirit esimerkkeineen. Osaa termeistä on melko vaikea kääntää suomeksi.

Valintaprosessin optimointi (Optimal Stopping Problem)

Sinulla on rajattu määrä vaihtoehtoja, esimerkiksi 100 työnhakijaa. Haluat palkata parhaan mahdollisen vaihtoehdon pienimmällä vaivalla. Hakijat haastatellaan satunnaisessa järjestyksessä ja päätös palkkauksesta on tehtävä välittömästi. Miten toimit?

Paras hyötysuhde tulee niin, että haastattelet ensin 37 % hakijoista, eli 37 hakijaa - mutta et palkkaakaan ketään heistä. 37 hakijan jälkeen valitset seuraavan hakijan, joka on parempi, kuin kukaan 37 ensimmäisestä.

Menetelmä maksimoi hyötysuhteen, vaikka se ei takaa että palkkaat absoluuttisesti parhaan hakijan.

Sama logiikka pätee teoriassa esimerkiksi elämänkumppanin löytämiseen. Jos oletat eläväsi 80 vuotiaaksi, tulisi 29,6 ikävuoden kohdalla valita parempi kuin kukaan aikaisemmin tapaamistasi ehdokkaista. Tässä tapauksessa muuttujia voi olla turhan paljon, että teoria toteutuisi käytännössä…

Esimerkki Wikipediassa: Secretary problem .

Testauksen minimointi tuoton maksimoimiseksi (Explore / Exploit)

Sinulla on kourallinen kolikoita ja pitäisi valita, mihin pelikoneeseen laitat rahat. Montako kolikkoa käytät eri pelikoneiden testaamiseen saadaksesi taustatietoa ja missä vaiheessa laitat loput rahat parhaaksi valittuun?

Esimerkki Wikipediassa: Multi-armed bandit .

Lajittelu (Sorting)

Eri lajittelumenetelmät kuuluvat algoritmiopin perusteisiin. Miten esimerkiksi kirjastonhoitajan kannattaa lajitella kirjat lajittelukärryyn ollakseen mahdollisimman tehokas.

Erilaiset lajittelumenetelmät Wikipediassa.

Välimuisti (Cache)

Tietokoneissa välimuistiin tallennetaan dataa, jota tarvitaan todennäköisesti useaan kertaan. Esimerkiksi selaimen on järkevää tallentaa nettisivun muotoilutietoja tai toiminnallisuuksiin liittyviä koodikirjastoja, jolloin sivusto latautuu nopeammin seuraavalla kerralla.

Välimuistista johdetun logiikan perusteella voidaan optimoida esimerkiksi työpöydällä olevan paperipinon järjestelyyn ja paperien etsimiseen käytetty aika. Hieman yllättäen optimaalinen tapa voi olla laittaa aina viimeisenä käytetty paperi pinon päälle. Todennäköisimmin tarvitset juuri sitä paperia seuraavalla kerralla.

Aikatauluttaminen (Scheduling)

Missä järjestyksessä tehtävät kannatta tehdä? Riippuu tehtävän tärkeydestä, kestosta ja vaadituista edeltävistä vaiheista. Jos tavoitteena on saada mahdollisimman monta tehtävää valmiiksi mahdollisimman nopeasti kannattaa aloittaa nopeimmin valmistuvasta.

Bayesin sääntö (Bayes Rule)

Ennustaminen bayesin säännöllä on hyvin yksinkertaista. Bayesin sääntö nojaa aiempiin tapahtumaan liittyviin havaintoihin. Puhutaan myös ehdollisista todennäköisyyksistä.

Esimerkiksi tämä tilastollinen pulma noudattaa Bayesin sääntöä.

Ylisovittaminen (Overfitting)

Monimutkaiset tilastolliset algoritmit eivät aina selitä havaintoja parhaalla tavalla. Liian monimutkaiset menetelmät löytävät syy-yhteyksiä tapauksissa, joissa niitä ei oikeasti ole.

Mietitään vaikkapa kolikonheittoa. Yksi kolikonheitto on täysin satunnainen muista heitoista riippumaton tapahtuma - tai ainakin riittävän satunnainen tähän esimerkkiin.

Sadan kolikonheiton lopputulokselle ei ole mitään muuta järkevää vaihtoehtoa, kuin veikata 50 kruunaa ja 50 klaavaa. Todellinen tulos on kuitenkaan harvoin tasan 50 ja 50.

Jos sadan heiton sarja tehdään vain muutaman kerran, olisi helppo tehdä vääriä johtopäätöksiä. Esimerkiksi: Kun heität vasemmalla kädellä, klaavoja tulee enemmän. Oikeasti kyse on satunnaisvaihtelusta.

Höllentäminen (Relaxation)

Joskus ongelma on laskennallisesti niin hankala, että on helpompaa tyytyä melko hyvään ratkaisuun, joka ei ole täysin optimaalinen. Tällainen ongelma voisi olla vaikkapa istumajärjestyksen luominen, jossa vaihtoehtoja on aivan järjetön määrä jopa tietokoneelle.

Satunnaisuus (Randomness)

Tieteellisissä tutkimuksissa käytetään jatkuvasti satunnaisuutta satunnaisotantojen muodossa.

Kokonaispopulaatiosta valitaan satunnaisesti pienempi osajoukko, josta tehdyt päätelmät oletetaan edustavan koko populaatiota. Tilastollisilla menetelmillä pystytään laskemaan, virherajat, joiden sisällä saadut tulokset ovat esimerkiksi 95% todennäköisyydellä.

Verkottuminen (Networking)

Tässä luvussa käsitellään erityisesti internetin toimintaa ja protokollia. Internetin peruspilarina ovat yhteisesti sovitut protokollat, joiden perusteella laitteet osaavat kommunikoida keskenään tietämättä toisistaan juuri mitään.

Peliteoria (Game Theory)

Peliteoria käsittelee tilanteita, joissa yksi päätös vaikuttaa muihin päätöksiin. Esimerkiksi kivi-paperi-sakset-pelissä voisi soveltaa joitakin peliteorian oppeja.