Kiedy powinienem wyjść poza najbliższego sąsiada


9

W przypadku wielu projektów uczenia maszynowego, które wykonujemy, zaczynamy od k klasyfikatora Nearest Neighbor. Jest to idealny klasyfikator początkowy, ponieważ zwykle mamy wystarczająco dużo czasu na obliczenie wszystkich odległości, a liczba parametrów jest ograniczona (k, metryka odległości i waga)

Jednak często powoduje to, że trzymamy się klasyfikatora KNN, ponieważ w dalszej części projektu nie ma miejsca na przejście na inny klasyfikator. Jaki byłby dobry powód, aby wypróbować nowy klasyfikator. Oczywiste są ograniczenia pamięci i czasu, ale czy istnieją przypadki, w których inny klasyfikator może faktycznie poprawić dokładność?


Czy jest to czysto akademickie czy ma być stosowane w przemyśle?
Dr Rob Lang

1
Większość naszych aplikacji jest wdrożonych w branży (więc

Odpowiedzi:


3

k-NN uogólnia się w bardzo restrykcyjnym sensie. Po prostu używa priorytetów gładkości (lub założenia ciągłości). To założenie sugeruje, że wzorce znajdujące się blisko w przestrzeni cech najprawdopodobniej należą do tej samej klasy. K-NN nie może odzyskać funkcjonalnej regularności w rozkładzie wzorców.

Dlatego wymaga reprezentatywnych próbek treningowych, które mogą być bardzo duże, szczególnie w przypadku wysoce wymiarowych przestrzeni cech. Co gorsza, próbki te mogą być niedostępne. W związku z tym nie może nauczyć się niezmienników. Jeśli wzorce można poddać pewnym przekształceniom bez zmiany ich etykiet, a próbka szkoleniowa nie zawiera wzorców przekształconych we wszystkie dopuszczalne sposoby, k-NN nigdy nie rozpoznaje przekształconych wzorców, które nie były prezentowane podczas szkolenia. Dotyczy to np. Przesuniętych lub obróconych obrazów, jeśli nie są one reprezentowane w jakiejś niezmiennej formie przed uruchomieniem k-NN. k-NN nie może nawet oderwać się od nieistotnych funkcji.

Kolejny nieco sztuczny przykład jest następujący. Wyobraź sobie, że wzorzec należący do różnych klas rozmieszczonych okresowo (np. Zgodnie z sinusem - jeśli jest mniejszy niż 0, to wzorce należą do jednej klasy, i jest większy, wtedy wzorce należą do innej klasy). Zestaw treningowy jest skończony. Będzie więc znajdować się w skończonym regionie. Poza tym błędem rozpoznania regionu będzie 50%. Można sobie wyobrazić regresję logistyczną z okresowymi funkcjami podstawowymi, które w tym przypadku będą działać znacznie lepiej. Inne metody będą mogły nauczyć się innych prawidłowości w rozkładach wzorców i dobrze ekstrapolować.

Jeśli więc podejrzewa się, że dostępny zestaw danych nie jest reprezentatywny i należy osiągnąć niezmienność niektórych przekształceń wzorców, to w takim przypadku należy wyjść poza k-NN.


Dziękuję za odpowiedź (i dziękuję BartoszKP za próbę jej poprawy). Prawdą jest, że knn nie może znaleźć wzorców wymagających transformacji (chyba że zaczniesz używać dziwnych (i niepoprawnych) wskaźników odległości). To dobry powód, aby wypróbować inny klasyfikator. Sądzę, że svm to oczywisty wybór. Nie jestem wystarczająco zaznajomiony z svm, ale czy nie wymagałoby to konkretnej wiedzy o wzorcu, którego szukasz, aby zdefiniować jądro?

Tak. Wybór jądra zależy od wzorców. Jądro gaussowskie będzie miało właściwości podobne do metody k-NN. Inne standardowe jądra mogą również wydawać się nieodpowiednie. Można jednak przynajmniej spróbować ich użyć.

Jak sugeruje @ Necro0x0Der, każda poprawa wzdłuż tych linii zależałaby od wzorca (w przykładzie sinusoidalnym) okresowości, która jest naturalna dla parametryzacji. Oznacza to, że parametryzacja (wybór jądra) określa strukturę (efektywnie metrykę) przestrzeni reprezentacji. Jeśli możesz określić (być może poprzez wyuczone zgadywanie) jakąś odpowiednią strukturę w jakiś sposób, spróbuj odpowiednio sparametryzować wzór. Zauważ, że ostatecznie pozwala to twojemu klasyfikatorowi łatwo znaleźć pewne typy odpowiednich cech.

3

Wysoki wymiar nie jest oczywiście stałym ograniczeniem, w większości przypadków nasze cechy są wystarczająco wyraziste, aby odległość działała. Oczywiście może to być ważny punkt. Może powinienem był wyjaśnić przykładem. Powiedzmy, że mamy klasyfikator o dokładności 93%, jest to do przyjęcia, ale teraz możemy spróbować ulepszyć klasyfikator lub znaleźć nowe funkcje. Wszystko zależy od nowych możliwych funkcji i danych, ale szukałem wskazówek dotyczących tej decyzji.

@Rhand Wydaje mi się, że jest to decyzja na poziomie zarządzania projektem. Jeśli obecne rozwiązanie jest dopuszczalne, to po co go majstrować? To strata czasu. Jeśli jest to nie do przyjęcia, precyzyjniej określ, co chcesz poprawić (szybkość, dokładność itp.).
BartoszKP

Nie chodzi tylko o zarządzanie projektem, chodzi o to, jak uzyskać maksymalną dokładność (to moje pytanie) i jaki kierunek najlepiej wybrać. Sugerujesz svm i losowy las, ponieważ wymiarowość może być zbyt wysoka, to jest jedna z możliwości, z którą mógłbym eksperymentować, aby sprawdzić, czy dokładność poprawi się, i tego rodzaju odpowiedzi szukałem.

Z drugiej strony jest to bardzo szerokie pytanie. Nie ma ogólnych zasad, że klasyfikator X jest lepszy niż Y. Powinieneś po prostu wypróbować pewną liczbę klasyfikatorów, a następnie na przykład przeprowadzić weryfikację krzyżową w celu wyboru modelu .
BartoszKP

3

kNN jest przydatny w przypadku dużych próbek danych

Jednak jego wadami są:

  1. Zależny od wartości k.
  2. Złożoność obliczeń
  3. Ograniczenie pamięci
  4. Będąc nadzorowanym uczącym się leniwym algorytmem
  5. Łatwo dać się zwieść nieistotnym atrybutom.
  6. Dokładność prognoz może szybko obniżyć się wraz ze wzrostem liczby atrybutów.

Zwykle jest skuteczny tylko wtedy, gdy dane treningowe są duże, a trening bardzo szybki.


Nie patrzę na grupowanie, ale na klasyfikację

@Rhand tutaj zaczynamy, dziękuję za notatkę iliasfl
Iancovici
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.