Iti0210lab10: erinevus redaktsioonide vahel
| 27. rida: | 27. rida: | ||
Eeltõenäosuse ja esimese vaatlustulemuse pealt saame ülaltoodud sammudega arvutada esimese sisemise oleku jaotuse. Selle võtame aluseks järgmisele olekule jne, kuni jõuame iteratiivselt vaatlustulemuste seeria lõppu. | Eeltõenäosuse ja esimese vaatlustulemuse pealt saame ülaltoodud sammudega arvutada esimese sisemise oleku jaotuse. Selle võtame aluseks järgmisele olekule jne, kuni jõuame iteratiivselt vaatlustulemuste seeria lõppu. | ||
== | == Treeningandmed == | ||
Treenimiseks leiad failid siit: | |||
* <code>users_5000.csv</code> - väiksem fail 5000 kasutaja säutsudega | |||
* <code>users_50000.csv</code> - suurem fail | |||
Treenimiseks on parem rohkem andmeid kasutada, aga esimesteks katsetusteks võib väiksem fail mugavam olla. | |||
Failid on CSV formaadis, ilma päiseta. | |||
<pre> | |||
klass,ajatempel,kasutaja," säuts" | |||
</pre> | |||
Kasutajad on anonümiseeritud. Klass on kas <code>0</code> - negatiivne või <code>4</code> - positiivne, mida võib tõlgendada meeleolu või hoiakuna. | |||
Tõenäosusjaotuste ''P(sõna|klass)'' leidmiseks pead säutsud sõnadeks tükeldama ja samasugust loendamist kasutama nagu [[Iti0210lab91|eelmises ülesandes]]. Täiendavalt on kasulik kirjavahemärke eemaldada. Võid eemaldada ka "@" märgiga algavad stringid. | |||
== Katsetamine == | == Katsetamine == | ||
Redaktsioon: 10. aprill 2019, kell 21:27
Peidetud Markovi mudel
Sissejuhatus
Peidetud Markovi mudel (hidden Markov model, HMM) esitab mingit ajas muutuvat nähtust, mis käitub nagu Markovi ahel. Seejuures ei ole see nähtus meile otseselt vaadeldav, vaid me näeme ainult mingit kaudset tunnust. Vt. Wikipedia näide.

Ülesandes rakendame HMM-i sotsiaalvõrgu suhetele. Sõbraseosed sotsiaalvõrgus moodustavad graafi. Staatilisel kujul annab see graaf mingi ettekujutuse inimestevahelistest seostest, aga sõbraseoseid võib olla ka inimeste vahel, kes ei ole kunagi suhelnud ega kohtunud. Täpsema ettekujutuse suhetest saame, kui me jälgime ka sõnumite liikumist mööda graafi kaari ajas.
Võtame aluseks lähenemise, kus suhted sotsiaalvõrgus liigitatakse kolme faasi: avastamine, edaspidi tähistatud E(xploration), ülalhoidmine M(aintenance) ja unustamine F(orgetting) [1]. Kui leiame graafil kaared, mis on avastamise või ülalhoidmise faasis, siis see võiks anda meile inimese praeguse ja lähituleviku sõpruskonna.
Lähtume oletusest, et sõnumite arv ajaühikus on tingitud suhte faasist. Selle abil ehitame peidetud Markovi mudeli ning leiame Forward-algoritmiga praeguse oleku. Tegu on mänguülesandega, päris sotsiaalvõrgu andmeid ei kasutata.
Forward algoritm
Kõigepealt loe läbi [AIMA] 15.2.1 "Filtering and prediction", vajadusel mitu korda. Kokkuvõtlikult:
- Meil on mingi tõenäosusjaotus sisemisele olekule
. Tahame leida tõenäosusjaotust järgmisel ajahetkel t+1, kui me teame välist tunnust et+1 (antud juhul on selleks sõnumite sagedus). - Arvutame, mis üleminekumudel järmiseks olekuks annaks
. Tegu on jaotuse valemiga, et programmis seda arvutada, tuleb aru saada, et Xt+1 on muutuja ning selle asemele tuleb kordamööda panna kõik tema võimalikud väärtused. - Kasutades emissioonimudelit, täpsustame sisemise oleku hinnangut
. et+1 on välise tunnuse konkreetne väärtus. - Normaliseerime. See tähendab, et nüüd on õige hetk leida eelmises valemis olev
. Näiteks, kui eelmises sammus arvutame numbrid <0.13, 0.21, 0.04>, siis need tuleks mingi arvuga läbi korrutada, et saada jaotus mille summa on 1. Seda arvu on üsna lihtne leida: 1 / (0.13 + 0.21 + 0.04). Saame lõpliku jaotuse <0.34, 0.56, 0.1>.
Alguses on meil vaatlustulemuste seeria, aga sisemiste olekute jaotuseid pole. Võtame appi eeltõenäosuse (prior) ja väidame, et see on jaotus vahetult enne vaatlustulemuste seeriat. See on küll väga umbkaudne, aga esiteks pole midagi paremat võtta, teiseks mõjutab esimene jaotus sisemist olekut seeria lõpus palju vähem, kui seeria alguses. Meid huvitab just seeria lõpp ehk värskeim olek.
Eeltõenäosuse ja esimese vaatlustulemuse pealt saame ülaltoodud sammudega arvutada esimese sisemise oleku jaotuse. Selle võtame aluseks järgmisele olekule jne, kuni jõuame iteratiivselt vaatlustulemuste seeria lõppu.
Treeningandmed
Treenimiseks leiad failid siit:
users_5000.csv- väiksem fail 5000 kasutaja säutsudegausers_50000.csv- suurem fail
Treenimiseks on parem rohkem andmeid kasutada, aga esimesteks katsetusteks võib väiksem fail mugavam olla.
Failid on CSV formaadis, ilma päiseta.
klass,ajatempel,kasutaja," säuts"
Kasutajad on anonümiseeritud. Klass on kas 0 - negatiivne või 4 - positiivne, mida võib tõlgendada meeleolu või hoiakuna.
Tõenäosusjaotuste P(sõna|klass) leidmiseks pead säutsud sõnadeks tükeldama ja samasugust loendamist kasutama nagu eelmises ülesandes. Täiendavalt on kasulik kirjavahemärke eemaldada. Võid eemaldada ka "@" märgiga algavad stringid.
Katsetamine
Kas nad on heas või halvas tujus? Leia vastus oma programmiga. Kasuta Forward algoritmi. Eeltõenäosusteks võid võtta P(positiivne) = 0.5 ja P(negatiivne) = 0.5 või leida nende jaotus treeningandmetelt.
Kasutaja A:
"@anon @anon thx 4 the laughs. I'm going to sleep. My head hurts & my scan is butt crack early. Have fun @anon " "@anon doing good. Going to take pics of my sidekick in a little bit. She is going to prom today " "@anon how are you feeling that both of your teams lost hahahahahaha...sorry " "@anon lol looks like I'm just going to catch a regular season game NEXT YEAR " "@anon I like that. I'm going to put that one in my notebook " "@anon ok kidding about Dwight. He's cute but I really admire him as a bball player. I love the game again " "Wow once again home alone for the night...hmm now this is sad. I have no life. Nah I take that back, have time to spend w/ God " "@anon just wanted to say hi " "I'm sorry if I'm a downer but it's hard to not be emotional right now. I didn't want to see Monica pass so I stayed home... " "@anon yeah yeah I know.....not really thrilled about that place sorry....that was my bad "
Kasutaja B:
"Going to search out areas we would like for our dream home to also home my home based business one day soon. " "Have beautiful dreams all, I'm off to snuggle down with my beautiful babies as they are done with the outdoors. " "@anon Cheeers to a dull day girl.. hoping for one here also. " "@anon That sounds like an awesome day. Have a terrific time. " "Mmmm.. fresh nettle tea so yummy. " "I'm wondering what to have for Breaky along with my iced nettle tea??! Don't really feel hungry for anything else." "@anon Oh I love this and have joined myself.. or maybe it was Kind Blog I joined.. I best make sure. Peace to you lovely lady!" "@anon Cool! Thank you.. it's a beautiful flower now is it medicinal? " "@anon Good morning hairy vegan rock loving guy! No dreams that I remember but a lovely sleep non the less! What did you dream?" "@anon Sweet book! I think.. lol Sounds good anyway. " "@anon I'm excited but offering someone a sound healing also sounds great. I'm starting Reiki at the farmers market also! Here we go! " "http://twitpic.com/6v4u4 - Full Moon Wild Rose Petal Rose Quartz honey, vinegar and infusion picked and co-created today. Love!"
Kasutaja C:
"@anon @anon you guys are going to make me cry " "@anon I AM NOT MEAN " "@anon your not following me yet??? " "@anon why do you have nothing to say?? huh huh " "@anon i am not showing off you think so crude of me your so mean you make me want to cry" "@anon yeah i know i did that to my friends cats too " "@anon thanks for biting me hahaha" "@anon how sad " "@anon @anon hello swati chuby cheeks where are you people??!??!?!?! " "@anon but you scare me when you get mad " "@anon i am not a goddess no more cause colin is not there to help me rule! " "@anon happy ur back not happy chuby cheeks and i still fighting " "@anon oh i am okay my dog just had a seizure "
Kasutaja D:
"i can't go to sleep " "@anon thanx " "...on his car system...crazy...i love random moments " "no more puppy i'm really sad" "@anon it's a mini poodle my sis was going to get but she just told me some things came up and she's not getting it anymore " "i'm all awake but no one else is "