01 · Podstawy · 4 min czytania · aktualizacja
Czym jest wektor w uczeniu maszynowym i po co przestrzeń cech?
W skrócie
Wektor to uporządkowana lista liczb, którą można dodawać i skalować. W ML każdy przykład jest punktem w przestrzeni cech, a podobieństwo staje się odległością.
Co to jest
Wektor to uporządkowana lista liczb, np. (5,1; 3,5; 1,4; 0,2), na której wolno wykonywać dwie operacje: dodawanie (składowa po składowej) i mnożenie przez liczbę. Przestrzeń wektorowa to zbiór wszystkich takich obiektów razem z tymi operacjami; jej wymiar to liczba składowych potrzebnych do opisania dowolnego elementu.
W uczeniu maszynowym wektor jest przede wszystkim opisem jednego przykładu. Kwiat, pacjent, zdanie czy obrazek zamieniamy na listę liczb — cech — i od tej chwili każdy przykład jest punktem w przestrzeni, a cały zbiór danych chmurą punktów. Model nie „widzi” kwiatów ani pacjentów. Widzi tylko geometrię tej chmury.
Ta zmiana perspektywy jest potężna, bo pytania o dane zamieniają się w pytania geometryczne. „Czy te dwa przypadki są podobne?” to pytanie o odległość. „Czym różni się grupa A od grupy B?” to pytanie o wektor łączący ich środki. „Gdzie przebiega granica między klasami?” to pytanie o płaszczyznę tnącą przestrzeń.
Mechanizm — dlaczego tak działa
Wektory można czytać na dwa sposoby: jako punkt (miejsce w przestrzeni) albo jako strzałkę (przesunięcie od jednego miejsca do drugiego). Różnica dwóch punktów jest strzałką: jeśli a i b to dwa przykłady, to b − a mówi, o ile i w którą stronę trzeba się przesunąć wzdłuż każdej cechy, żeby przejść od a do b. Średnia z wielu wektorów to znowu wektor — „typowy przedstawiciel” grupy, czyli centroid.
Długość strzałki mierzy norma. Najczęściej używa się normy euklidesowej: ‖v‖ = √(v₁² + v₂² + … + vₙ²), czyli twierdzenia Pitagorasa uogólnionego na n wymiarów. Odległość między punktami to norma ich różnicy: d(a, b) = ‖a − b‖. Na tej jednej definicji opierają się k najbliższych sąsiadów, k-średnich, wykrywanie anomalii i wyszukiwanie podobnych dokumentów.
Dlaczego to w ogóle działa? Bo zakładamy, że bliskość w przestrzeni cech odpowiada podobieństwu w świecie. To założenie nie jest darmowe. Jeśli cechy mają różne jednostki, odległość zdominuje ta o największym rozrzucie — dochód w złotówkach przytłoczy wiek w latach, choć wcale nie musi być ważniejszy. Dlatego przed metodami opartymi na odległości zwykle skaluje się cechy.
Drugim zastrzeżeniem jest wymiar. Intuicje z dwóch i trzech wymiarów przenoszą się na sto wymiarów tylko częściowo: w bardzo wysokich wymiarach odległości między losowymi punktami stają się do siebie podobne, a „najbliższy sąsiad” przestaje być wyraźnie bliższy od najdalszego. To jedna z twarzy przekleństwa wymiarowości.
Wreszcie przestrzeń nie musi powstać z ręcznie wybranych cech. Sieci neuronowe same uczą się wektorów — embeddingów — dla słów, obrazów czy użytkowników, tak żeby podobne obiekty lądowały blisko siebie. Geometria jest ta sama, zmienia się tylko to, kto wybiera osie.
Na przykładzie
Zbiór Iris opisuje 150 kwiatów czterema liczbami w centymetrach: długość i szerokość działki kielicha oraz długość i szerokość płatka. Pierwszy kwiat to wektor (5,1; 3,5; 1,4; 0,2), o normie około 6,35. Średnie wektory trzech gatunków to: setosa (5,01; 3,43; 1,46; 0,25), versicolor (5,94; 2,77; 4,26; 1,33) i virginica (6,59; 2,97; 5,55; 2,03). Odległość euklidesowa między środkami wynosi 3,21 cm dla pary setosa–versicolor, 4,76 cm dla setosa–virginica i tylko 1,62 cm dla versicolor–virginica. Geometria od razu mówi, które gatunki będzie łatwo pomylić.
Czy ta geometria wystarcza do klasyfikacji? Reguła „przypisz kwiat do najbliższego środka gatunku” trafia w 92,7% przypadków, a reguła „przypisz gatunek najbliższego sąsiada” (sprawdzana tak, że kwiat nie może być sąsiadem samego siebie) — w 96%. Warto jednak zauważyć, że odchylenie standardowe długości płatka wynosi 1,76 cm, a szerokości działki tylko 0,43 cm, więc w surowej odległości długość płatka waży znacznie więcej. Po standaryzacji (każda cecha w jednostkach własnego odchylenia) odległości między środkami to 2,85, 3,96 i 1,49 — kolejność ta sama, ale proporcje się przesuwają.
Dane: Iris (irysy Fishera)
W praktyce
- W NumPy wektor to
np.array([...]), norma tonp.linalg.norm(v), a odległości wszystkich par —sklearn.metrics.pairwise_distanceslubscipy.spatial.distance.cdist. - W scikit-learn macierz
Xma kształt (liczba przykładów, liczba cech): każdy wiersz to jeden wektor-przykład. - Przed
KNeighborsClassifier,KMeansczySVCdodajStandardScalerwPipeline, inaczej odległość zdominuje cecha o największej skali. - Cechy kategoryczne zamień na wektory (np.
OneHotEncoder), bo zakodowanie kategorii jako 1, 2, 3 wprowadza fałszywą odległość między nimi. - Typowy błąd: liczenie odległości na danych z brakami albo z identyfikatorem (np. numerem wiersza) jako cechą — model uzna bliskie numery za podobne przypadki.
Najczęstsze pytania
- Czym różni się wektor od zwykłej tabeli liczb?
- Wektor to jedna lista liczb z określonymi operacjami dodawania i skalowania. Tabela danych to zbiór wielu wektorów ułożonych w wiersze, czyli macierz. Liczy się nie sam zapis, tylko to, że wolno na nim robić geometrię.
- Czy odległość euklidesowa jest zawsze najlepsza?
- Nie. Dla danych o wielu odstających wartościach lepsza bywa odległość Manhattan (suma modułów różnic), dla tekstów i embeddingów — podobieństwo kosinusowe, które ignoruje długość wektora. Wybór miary to założenie o tym, co znaczy „podobny”.
- Ile wymiarów to „dużo”?
- Nie ma progu. Problemy zaczynają się, gdy liczba wymiarów jest duża w porównaniu z liczbą przykładów albo gdy większość cech to szum. Wtedy pomaga selekcja cech, redukcja wymiaru (np. PCA) albo więcej danych.
Źródła
- Deisenroth, Faisal, Ong „Mathematics for Machine Learning”, Cambridge University Press, 2020, rozdz. 2 (Linear Algebra) i 3 (Analytic Geometry).
- Goodfellow, Bengio, Courville „Deep Learning”, MIT Press, 2016, rozdz. 2 (Linear Algebra).
- Strang „Introduction to Linear Algebra”, 5th ed., Wellesley-Cambridge Press, 2016, rozdz. 1.
- Zhang i in. „Dive into Deep Learning”, d2l.ai, rozdz. 2.3 (Linear Algebra).
- Dokumentacja scikit-learn: Pairwise metrics, https://scikit-learn.org/stable/modules/metrics.html