Wykład przeznaczony jest dla studentów stopnia studiów informatycznych na Wydziale Podstawowych Problemów Techniki. Odbywa się w czwartki w godz. - na platformie MIcrosoft Teams. Na stronie tej znajdziesz informacje o zasadach zaliczenia, realizowanym materiale, literaturze oraz listę zadań.
Zasady zaliczenia ćwiczeń ustalicie z prowadzącym ćwiczenia. Ocena z ćwiczeń będzie oceną bazową z kursu.
Jak ktoś będzie chciał podwyższyć tę ocenę, to będzie musiał ze mną odbyć indywidualny egzamin.
Literatura
Podstawowa
J. Leskovec, A. Rajaraman, J. D. Ullman, Mining of Massive Datasets, book.pdf,
Mohammed Guller, Big Data Analytics with Spark, APress,
MAPPER(L) {
split text L into words [w1, w2, ... wn]
emit (w1,1); emit (w2,1); ... ; emit (wn,1);
}
REDUCER(w,L) {
emit(w,L.length)
}
Przykład sesji w języku Scala (wy macie coś podobnego, ale znacznie lepszego, zrobić w języku Python):
val T = "ALA ma kota. ALA ma psa. Ala ma kota i kanarka"
val t = T.toLowerCase
var G = t.filterNot(x=>".;".contains(x)).split("\\s+").map(x=>(x,1))
val A = G.groupBy(x=>x._1).mapValues(x=>x.length)
var X = A.toSeq
X.sortWith((x,y)=>x._2>y._2)
Zadanie: załóżmy, że chcemy pomnożyć macierz $M$ przez wektor $X$, który nie mieści się w pamięci mapperów, ale mieści się po $\frac13$ części tego wektora.
Jak to możemy zrobić w paradygmecie Map-Reduce?
Projekcje w losowych kierunkach z płaszczyzny na podprzestrzeń jednowymiarową.
Pojęcie k-uniwersalnej rodziny haszującej
Tw. Jeśli $\mathcal{H}$ jest 2 uniwersalna o wartościach w $\{0,\ldots,n-1\}$, oraz $|X|=k$ i $L$ jest długością wyszukiwania w hasz-tablicy w ktorej umieściliśmy elementy $X$ to $E[L] \leq k/n$.
Liczbę $\alpha = k/n$ nazywamy wspołczynnikiem zapełnienia tablicy.
Przykład 2-uniwersalnej rodziny:
mamy ustaloną liczbę $n$ oraz liczbę pierwszą $p \gt n$; definiujemy
$\mathcal{H} = \{\phi_{a,b}: a \in \ZZ_{p}^{+} \land b \in \ZZ_p\}$, gdzie
$$
\phi_{a,b}(x) = (a x + b \mod p) \mod n
$$
Jest to 2-uniwersalna rodzina funkcji haszujących ze zbioru $\{0,\ldots,p-1\}$ do $\{0,\ldots,n-1\}$.
Uwaga: pewną trudność sprawiało nam to, że liczba pierwsza $p$ nie jest podzialna przez $n$.
Pojęcie silnie k-uniwersalnej rodziny haszującej
Zadanie: napisz w dowolnym języku programowania generator liczb losowych z rozkładu jednostajnego z odcinka $[0,\pi)$
Pytanie: dlaczego pojęcie funkcji 2-uniwersalnej nie ma sensu ?
Konstrukcja rodziny funkcji k-silnie niezależnej rodziny funkcji haszujących.
Przykład: konstrukcja ciała liczbowego o $2^8$ elementach.
Filtry Blooma
Wzór na "false positive":
$$\Pr[\mathrm{False Positive}] \approx \left(1-\left(1-\frac1m\right)^{kn}\right)^k ~,$$
gdzie: $m$ = rozmiar tablicy, $n$ = liczba wstawianych obiektów, $k$ = liczba funkcji haszujących
Tw. Dla ustalonych $m$ i $n$ liczba $k \approx \ln 2 \cdot \frac{m}{n}$ minimalizuje $\Pr[\mathrm{False Positive}]$
Zasada: jeśli używasz list lub zbiorów, a pamięć jest jest istotnym ograniczeniam oraz efekt fałszywych alarów nie jest istotnym problemem, to rozważ zastosowanie filtrów Blooma
Orginalny artykuł Burtona Bloom'a z roku 1970: Bloom.pdf
Fajny artykuł Andrei Brodera and Michaela Mitzenmachera z roku 2005: im2005b.pdf
02.12.2021: Podobieństwo Jaccarda.
Przypomnienie pojęcia przestrzeni metrycznej
Przekształcenia metryk:
Tw. Jeśli $d$ jest metryką, $f:[0,\infty)\to [0,\infty)$ jest funkcją wklęsłą , niemalejącą oraz $f(x)\gt 0$ dla $x\gt 0$, to funkcja $f\circ d$ jest również metryką.
Tw (Steinhaus). Jeśli $d$ jes metryką na zbiorze $X$, $a \in X$ oraz
$$
\rho(x,y) = \frac{2 d(x,y)}{d(x,a)+d(y,a)+d(x,y)} ~,
$$
to $\rho$ jest metryką na zbiorze $X\setminus\{a\}$.
Tw. Funkcja $d_J(A,B) = \frac{|A\triangle B|}{|A\cup B|}$ jest metryką na przestrzeni skończonych podzbiorów ustalonego $\Omega$