[Algorytmy] k-NN

Ponury123
Użytkownik
Użytkownik
Posty: 128
Rejestracja: 5 lip 2015, o 14:48
Płeć: Mężczyzna
Lokalizacja: nie wiem
Podziękował: 11 razy
Pomógł: 24 razy

[Algorytmy] k-NN

Post autor: Ponury123 »

Witam,
potrzebuje aby ktoś zweryfikował mój tok rozumowania.
W \(\displaystyle{ K-NN}\) znajdujemy \(\displaystyle{ K}\) najbliższych sąsiadów dla danego punktu \(\displaystyle{ p_1}\) i na tej postawie klasyfikujemy punkt \(\displaystyle{ p_1}\). Wszystko ok.

Ale, jak powinno podejść się do tematu kiedy mamy kilka punktów, dajmy na to nasz obiekt, który chcemy sklasyfikować składa się z dwóch punktów, \(\displaystyle{ p_1}\) i \(\displaystyle{ p_2}\).

Ustalamy \(\displaystyle{ K}\), obliczamy odległość najpierw dla \(\displaystyle{ p_1}\), wychodzi \(\displaystyle{ p_1}\) należy do klasy \(\displaystyle{ A}\).
Teraz to samo dla \(\displaystyle{ p_2}\) i wychodzi że \(\displaystyle{ p_2}\) należy do klasy \(\displaystyle{ B}\).

Co teraz?
Nasz obiekt w połowie jest klasą A i w połowie B.
Wiem można zmienić K, np. zwiększyć ją, ale to wcale nie musi pomóc.
Czy w ogóle takie podejście ma sens? Dla każdego punktu mojego obiektu wyznaczam klasę, a potem patrze jakiej mam najwięcej i to taką przypisuje do całego obiektu - czy to nie jest źle?

Zastanawiam się, czy istnieje jakiś sposób radzenia sobie z czymś takim.
W takim podejściu nie mam również informacji o dystansie danego obiektu do danej klasy.

Dodam, że klasy mogą zawierać różna ilość punktów, tak samo klasyfikowany obiekt.
Ostatnio zmieniony 10 lut 2019, o 17:02 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Algorytmy] k-NN

Post autor: Afish »

Trudno o jednoznaczną odpowiedź, bo podejście zależy od typu danych. Rozsądnym wydaje się przyjęcie metryki, która minimalizuje odległość obu punktów od danej klasy.
Dudenzz
Użytkownik
Użytkownik
Posty: 93
Rejestracja: 8 mar 2009, o 18:21
Płeć: Mężczyzna
Pomógł: 19 razy

[Algorytmy] k-NN

Post autor: Dudenzz »

Zakładając, że cechy rozpatrywanych punktów są ciągłe, prawdopodobieństwo, że punkt będzie należał do dwóch klas jednocześnie wynosi dokładnie 0. No ale co z tego, w komputerach pojęcie ciągłości jest złudne, wszystko jest dyskretne - i jak wtedy sobie radzić z takim problemem? Otóż - z pragmatycznego punktu widzenia, to nie ma w ogóle znaczenia, ale możemy sobie z takim problemem poradzić bardzo łatwo. Przykład: Jeżeli zbiór cech jest na tyle źle dobrany, że wiele punktów należy do kilku klas jednocześnie, so be it. Reprezentujmy wtedy przynależność do klasy jako wersor typu "Onehot" (kiedy punkt ma jedną klasę) albo wektor symbolizujący przynależność do wielu klas na raz, np.
Jedna klasa
\(\displaystyle{ \begin{bmatrix}
0 \\
1 \\
0 \\
0
\end{bmatrix}}\)

Dwie klasy:
\(\displaystyle{ \begin{bmatrix}
0 \\
\frac{1}{\sqrt{2}} \\
\frac{1}{\sqrt{2}} \\
0
\end{bmatrix}}\)


Punkt opisany za pomocą takiego wektora przynależy po części do klasy drugiej i po części do klasy trzeciej. Jeżeli jest to jeden z najbliższych punktów innego punktu, którego klasę mamy wyznaczyć, po prostu ma on wpływ na klasę nowego punktu jednakowy dla klas drugiej oraz trzeciej. Wpływ ten jest mniejszy niż jednoznacznie zaklasyfikowany punkt, ale większy niż wpływ klas do których ten punkt nie należy.

Możesz sobie to rozwiązanie wyobrazić tak, jeżeli punkt jest jednakowo daleko od klasy czerwonej i zielonej, punkt staje się czerwono-zielony. Jeżeli jest to najbliższy punkt innego z punktów, wtedy wpływa on na nowy punkt z jednakową wagą klasy czerwonej i zielonej, waga ta jest jednak mniejsza niż waga klasy dla punktu, który przydzielony jest do jednej klasy.
ODPOWIEDZ