Notacja i oznaczenia#
Autor sekcji: dr Filip Wójcik
W dyskusjach dotyczących data science i uczenia maszynowego, bardzo ważne jest ujednolicenie notacji i stosowanych oznaczeń. Nierzadko zdarza się, że różne źródła naukowe, czy też praktycy, stosują różne symbole dla tych samych pojęć. W celu uniknięcia nieporozumień, warto zdefiniować zestaw oznaczeń, które będą stosowane w dalszej części tego skryptu.
Język polski vs język angielski#
Dominacja języka angielskiego w (szeroko rozumianej) branży IT jest faktem, z którym trudno się spierać. Od lat toczą się debaty między zwolennikami tłumaczenia wszelkich terminów na język polski, nawet jeśli te nie przyjęły się jeszcze w codziennym użyciu, a entuzjastami pozostawiania oryginalnej nomenklatury. Nie inaczej jest w przypadku głównego tematu tego podręcznika.
Sama nazwa data science bywa tłumaczona na różne sposoby – najpopularniejszy to zapewne danologia, a bardziej opisowy wariant to zaawansowana analiza danych. Każdy z tych terminów ma swoje plusy i minusy, ale nie będziemy tu próbować rozstrzygać tej odwiecznej batalii.
Niniejszy podręcznik ma przede wszystkim służyć jako praktyczny przewodnik. Jego autorzy nie są wprawdzie ekspertami językowymi, ale za to mają doświadczenie w pracy w sektorze komercyjnym, często w międzynarodowych firmach. Nie popieramy bezmyślnego stosowania językowych kalek ani humorystycznie karykaturalnego “korpo-lengłydżu” („fokusujemy się na targecie, czekając na approvale tasków na tym ekałncie”), ale równie niekorzystne, naszym zdaniem, jest używanie polskich neologizmów, które mają zerową praktyczną użyteczność i rozpoznawalność.
Dlatego w tym podręczniku podajemy polskie terminy, o ile istnieją w powszechnie uznanej wersji, zawsze obok ich oryginalnych odpowiedników po angielsku. Jeśli polski odpowiednik nie istnieje, jest mało znany lub nie ma zgody co do jego stosowania – używamy jedynie oryginalnej nazwy, zapisanej kursywą.
Nasze założenie jest proste: Czytelnik lub Czytelniczka tego materiału najczęściej będą mieli do czynienia z terminologią anglojęzyczną – czy to przy przeglądaniu dokumentacji bibliotek, czy też współpracując z zagranicznymi partnerami. Osoba rozwiązująca problem w Pythonie z pomocą modułu scikit-learn
raczej nie będzie używać terminu „przeszukiwanie siatki parametrów”, tylko grid search. Dlatego też taki zapis będziemy stosować: przeszukiwanie siatki parametrów (ang. grid search).
Zachęcamy więc do odkrywania zagadnień zaawansowanej analizy danych, czyli data science – w duchu praktycznym, ale bez nadmiernego zapętlenia się w językowe rozważania.
Skalary i wektory#
Skalar oznaczamy małą literą zwykłą, np. \(x\) lub wielką, niepogrubioną (zwł. w przypadku wymiarowości macierzy lub liczności elementów zbioru).
Wektor oznaczamy małą literą zwykłą z pogrubieniem, np. \(\mathbf{x}\).
Macierze oznaczamy dużą literą z pogrubieniem, np. \(\mathbf{X}\).
Wymiarowość macierzy lub wektorów będzie oznaczana słowem dim np. \(\text{dim}(\mathbf{X}): N \times K\) lub w notacji przynależności do domeny np. \(\mathbf{X} \in \mathbb{R}^{N \times K}\).
Krotki / n-tki (ang. tuple) oznaczamy symbolami zgodnymi z ich zawartością (np. macierze, wektory, skalary), w okrągłym nawiasie: \((x_1, x_2, \ldots, x_n)\).
Zbiory oznaczamy wielkimi literami z frakturą/ręcznym pismem np. \(\mathcal{X}\).
Klasyczne zbiory / domeny takie jak liczny naturalne i rzeczywiste oznaczane są podwójnymi, wielkimi literami: \(\mathbb{N}\), \(\mathbb{R}\).
Operacje na macierzach#
Niejednokrotnie będzie stosowany zapis charakterystyczny dla bibliotek i narzędzie w Pythonie, związanych z indeksowaniem macierzy:
\(\mathbf{X}^T\) - transpozycja macierzy \(\mathbf{X}\).
\(\mathbf{X}^{-1}\) - odwrotność macierzy \(\mathbf{X}\).
\(a_i\) - \(i\)-ty element wektora \(\mathbf{a}\).
\(\mathbf{X}_{i,j}\) - element macierzy \(\mathbf{X}\) w \(i\)-tym wierszu i \(j\)-tej kolumnie.
\(\mathbf{X}_{i,:}\) - \(i\)-ty wiersz macierzy \(\mathbf{X}\). Taki zapis bezpośrednio koresponduje z notacją w Pythonie, w bibliotece
NumPy
.\(\mathbf{X}_{:,j}\) - \(j\)-ta kolumna macierzy \(\mathbf{X}\). Taki zapis bezpośrednio koresponduje z notacją w Pythonie, w bibliotece
NumPy
.\(\mathbf{X}_{i:j,k:l}\) - wycinek macierzy \(\mathbf{X}\) od wiersza \(i\) do \(j\) i od kolumny \(k\) do \(l\).
Funkcje#
Funkcje oznaczamy małą literą zwykłą, np. \(f\).
\(f: \mathbb{A}^N \rightarrow \mathbb{B}^M\) - funkcja \(f\) o dziedzinie \(\mathbb{A}^N\) i przeciwdziedzinie \(\mathbb{B}^M\).
\(f(x)\) - wartość funkcji \(f\) w punkcie \(x\).
\(f \circ g\) - złożenie funkcji \(f\) i \(g\).
\(f(\mathbb{x}, \theta)\) - funkcja \(f\) wektora \(\mathbb{x}\) i parametrów \(\theta\).