Sunteți pe pagina 1din 2

UPT, Anul I Calculatoare 2012

Proiect P&S, Tema 1


Estimarea parametrului i simularea distributiei Zipf s Pentru a decide care pagini WEB sau alt continut internet se stocheaza cache, un n internet provider codic paginile, care istoric sunt vizitate de clietii si, printr-un nua a mar ntreg dintr-o multime {1, 2, 3, . . . , N }. Apoi nregistreaza ecare cerere de acces a unei pagini, scriind codul paginii accesate ntr-un sier. Tu primeti unul din ierele s s Zdate.txt (v alegeti unul din ierele incluse Zdate1.txt, Zdate2.txt, Zdate3.txt a s sau Zdate4.txt care contine nregistrri de tipul mentionat i ai sarcina s identici din a s a datele nregistrate parametrul al distributiei Zipf generalizate, ce modeleaz populari a tatea paginilor avnd codul {1, 2, . . . , N }. Accentuez c codul k al unei pagini nu a n a reprezinta indicele de popularitate, ci doar un cod numeric pt adresa URL. Dup ce a fost estimat din date, asociezi ecrei pagini indicele ei de popularitate a a i simulezi distributia Zipf corespunztoare, genernd nr = 2000 sau nr = 5000 valori de s a a observatie (care ar cereri virtuale de acces a paginilor monitorizate). Se compar apoi distributia teoretica Zipf de parametru , cu distributia datelor citite a din ier i respectiv cu cele generate prin simulare. s s 1. Cum estimm parametrul din date? Prin cea mai simpl metod de aare a a a nvt (extragere de informatie) din acestea, i anume metoda celor mai mici ptrate pentru s a logaritmii datelor. Datele din ier se citesc s ntr-un vector de ntregi, D. D[i] va contine codul paginii din a i + 1-a nregistre din ier. s din vectorul D se determin numrul de vizite a ecrei pagini k i se constituie a a a s vectorul viz. Apoi coordonatele lui, viz[k], se mpart la numrul de a nregistrri din a ier i rezult vectorul probabilist pe, unde pe[k] este probabilitatea ca pagina de cod s s a k + 1 s e vizitat (accesat) . a a a se ierarhizeaz paginile functie de numrul de cereri de acces a n a nregistrate i se s constituie un nou vector H, unde H[i] este probabilitatea de vizit a paginii cu indicele de a popularitate i + 1. Practic H reprezint o variabil aleatoare discret, X, ce ia ca valori a a a indicii de popularitate, 1, 2, 3, , iar pi = P (X = i) = H[i 1]). Testm dac X are distributia Zipf de parametru (necunoscut), adic dac pi este a a a a C a a de forma pi = . Logaritmnd aceast relatie avem: i log(pi ) = log C = log(C) log(i) i log(pi ) = log(C) + log(i)

Notnd y = log(pi ) i x = log(i), rezult c logaritmii acestor mrimi teoretice, veric a s a a a a ecuatia unei drepte: y = x + K, de pant i K = log(C). a s 1

Dac i punctele asociate datelor experimentale sunt distribuite jurul unei drepte, as n numit dreapta celor mai mici ptrate (ati fcut la MAC, dar vom mai discuta i noi la a a a s cursul de P&S pentru c reprezint o tem de baz machine learning), atunci panta a a a a n dreptei va parametrul al distributiei Zipf a datelor. Cum procedm? a Intr-un ier Zdateprel.txt, pentru ecare element H[i] din vecs torul H, scriem pe cte o linie, a log(i + 1) log(H[i]) Citim acest ier MATLAB, vizualizm punctele ce au coordonatele pe liniile ierului, s n a s trasm dreapta celor mai mici ptrate i evalum panta ei, adic pe . Executarea acestor a a s a a operatii se realizeaz rulnd scriptul MATLAB ZdetAlfa.m, inclus. a a ( ) i 2. Cu acest constituim variabila aleatoare Zipf distribuit Y = a C , i = i 1, 2, . . . , M (acest M poate diferit de N , dac exist pagini din cele codicate cu a a 1, 2, . . . , N care nu au fost vizitate deloc, adica codul lor nu apare ierul Zdate.txt. n s Constanta C ,se determin astfel at suma probabilitilor s e 1. Salvati ierul a nc at a n s Zprobteor.txt pe cte o linie P (Y = i). ierul Zdistr.txt se salveaz apoi proba In s a abilitile experimentale, H[i], deduse din at nregistrrile din ierul furnizat de internet a s provider (adic de mine) a aceeai imagine, format eps, desenm comparativ, distributia Zipf teoretic In s n a a de parametru (adic niste impulsuri ecare i de pe Ox, de altimea probabilitii a n n at P (Y = i) = C/i , i distributia de probabilitate a datelor citite din ier. Cele dou s s a iere Zprobteor.txt i Zdistr.txt se citesc scriptul Zdrawdistr1.m i acelai s s n s n s script se genereaz cele dou seturi de impulsuri, colorate diferit. a a 3. Simulati apoi variabila aleatoare Y , genernd nr = 2000 de observatii, crora a a la fel le asociati histograma prin impulsuri. Adic numrati codul C/C++ de cte a a n a ori a fost generat indicele de popularitate i (e ki acest numr) i atunci probabilitatea a s experimental, simulat, de vizit a paginii cu indicele i este pri = ki /nr. a a a Intr-un alt sier ZdateSim.txt scrieti pe cte o linie aceste probabiliti. Scrip a at tul MATLAB Zdrawdistr2.m citete cele dou iere Zdistr.txt, ZdateSim.txt i din s a s s ele genereaz histogramele prin impulsuri a distributiei Zipf ate din date (adic a nvat a maina=programul vostru a aat din datele din ierul Zdate.txt ce distributie au s nvt s acestea) i a celei experimentale, rezultate din simulare. s Dac totul este OK, cele dou histograme au aceeai alur, adic impulsurile din a a s a a aceeai locatie i au aproximativ aceeai altime. s s n Deoarece distributia Zipf ia un numr mare de valori, pentru simularea ei, dup a a generarea unui u=urand(); determinati intervalul care cade u prin cutare binar, n a a nu secvential. a Observatie: Structura codului i a datelor nu este obligatoriu s e cea din prezentarea s a de mai sus. Detaliile le-am dat ca ajutor. Cei avansati au libertatea s-si organizeze cum a vor codul i datele. s

S-ar putea să vă placă și