Mitä ovat Markovin ketjut ja milloin niitä käytetään, ja miten ne toimivat
Markovin ketjut ovat melko yleinen ja suhteellisen yksinkertainen tapa mallintaa satunnaisia prosesseja tilastollisesti. Niitä on käytetty monilla eri aloilla aina tekstien tuottamisesta finanssimallinnukseen. Suosittu esimerkki on r/SubredditSimulator, joka käyttää Markovin ketjuja automatisoidakseen kokonaisen subredditin sisällön luomisen. Kaiken kaikkiaan Markovin ketjut ovat käsitteellisesti varsin intuitiivisia, ja ne ovat hyvin helppokäyttöisiä, koska ne voidaan toteuttaa ilman kehittyneitä tilastollisia tai matemaattisia käsitteitä. Ne ovat loistava tapa aloittaa todennäköisyysmallinnuksen ja datatieteen tekniikoiden opettelu.
Skenaario
Aluksi kuvaan niitä hyvin tavallisella esimerkillä:
Imagine that there were two possible states for weather: sunny or cloudy. You can always directly observe the current weather state, and it is guaranteed to always be one of the two aforementioned states.Now, you decide you want to be able to predict what the weather will be like tomorrow. Intuitively, you assume that there is an inherent transition in this process, in that the current weather has some bearing on what the next day's weather will be. So, being the dedicated person that you are, you collect weather data over several years, and calculate that the chance of a sunny day occurring after a cloudy day is 0.25. You also note that, by extension, the chance of a cloudy day occurring after a cloudy day must be 0.75, since there are only two possible states.You can now use this distribution to predict weather for days to come, based on what the current weather state is at the time.
Tämä esimerkki havainnollistaa monia Markovin ketjun keskeisiä käsitteitä. Markovin ketju koostuu pohjimmiltaan joukosta siirtymiä, jotka määräytyvät jonkin Markovin ominaisuuden täyttävän todennäköisyysjakauman mukaan.
Huomaa, kuinka esimerkissä todennäköisyysjakauma saadaan pelkästään havainnoimalla siirtymiä nykyisestä päivästä seuraavaan päivään. Tämä havainnollistaa Markovin ominaisuutta, Markov-prosessien ainutlaatuista ominaisuutta, joka tekee niistä muistittomia. Tämän vuoksi ne eivät yleensä kykene tuottamaan menestyksekkäästi sekvenssejä, joissa jonkin taustalla olevan trendin odotetaan esiintyvän. Vaikka Markov-ketju voi esimerkiksi pystyä jäljittelemään kirjailijan kirjoitustyyliä sanataajuuksien perusteella, se ei pysty tuottamaan tekstiä, joka sisältää syvällisen merkityksen tai temaattisen merkityksen, koska nämä kehittyvät paljon pidempien tekstijaksojen aikana. Niiltä puuttuu siis kyky tuottaa kontekstiriippuvaista sisältöä, koska ne eivät voi ottaa huomioon koko ketjun aiempia tiloja.
Malli
Formallisesti ottaen Markovin ketju on todennäköisyysautomaatti. Tilasiirtymien todennäköisyysjakauma esitetään tyypillisesti Markovin ketjun siirtymamatriisina. Jos Markovin ketjussa on N mahdollista tilaa, matriisi on N x N -matriisi, siten että merkintä (I, J) on todennäköisyys siirtyä tilasta I tilaan J. Lisäksi siirtymämatriisin on oltava stokastinen matriisi, matriisi, jonka merkintöjen jokaisella rivillä on oltava täsmälleen 1. Tämä on täysin järkevää, koska jokainen rivi edustaa omaa todennäköisyysjakaumaansa.
Lisäksi, Markovin ketjulla on myös alkutilavektori, joka esitetään N x 1 -matriisina (vektorina) ja joka kuvaa todennäköisyysjakaumaa, jolla aloitetaan jokaisesta N mahdollisesta tilasta. Vektorin merkintä I kuvaa todennäköisyyttä sille, että ketju alkaa tilasta I.
Tyypillisesti näitä kahta kokonaisuutta ei tarvita muuta Markovin ketjun esittämiseen.
Me tiedämme nyt, miten saadaan todennäköisyys siirtymiselle tilasta toiseen, mutta miten olisi löytää todennäköisyys sille, että tämä siirtyminen tapahtuu useamman vaiheen aikana? Formalisoidaksemme tämän, haluamme nyt määrittää todennäköisyyden siirtyä tilasta I tilaan J yli M askeleen. Kuten käy ilmi, tämä on itse asiassa hyvin yksinkertaista selvittää. Siirtymämatriisi P voidaan määrittää laskemalla matriisin merkinnän (I, J) arvo, joka saadaan korottamalla P potenssiin M. Pienillä M:n arvoilla tämä voidaan helposti tehdä käsin toistuvalla kertolaskulla. Kuitenkin suurilla M:n arvoilla, jos olet perehtynyt yksinkertaiseen lineaarialgebraan, tehokkaampi tapa nostaa matriisi potenssiin on ensin diagonalisoida matriisi.
Johtopäätös
Nyt kun tunnet Markovin ketjujen perusteet, sinun pitäisi nyt pystyä helposti toteuttamaan ne valitsemallasi kielellä. Jos koodaaminen ei ole vahvuutesi, on myös monia kehittyneempiä Markov-ketjujen ja Markov-prosessien ominaisuuksia, joihin voit sukeltaa. Mielestäni luonnollinen eteneminen teoriaa pitkin olisi kohti piilomarkoviprosesseja tai MCMC:tä. Yksinkertaiset Markovin ketjut ovat muiden, kehittyneempien mallinnustekniikoiden rakennuspalikoita, joten tämän tiedon avulla voit nyt siirtyä erilaisiin tekniikoihin sellaisissa aiheissa kuin uskomusten mallintaminen ja otanta.