Czy przed klastrowaniem konieczna jest standaryzacja danych?


23

Czy przed klastrowaniem konieczna jest standaryzacja danych? W przykładzie z scikit learnokoło DBSCAN tutaj robią to w wierszu:

X = StandardScaler().fit_transform(X)

Ale nie rozumiem, dlaczego jest to konieczne. W końcu klastrowanie nie zakłada żadnej szczególnej dystrybucji danych - jest to metoda uczenia się bez nadzoru, więc jej celem jest eksploracja danych.

Dlaczego konieczne byłoby przekształcenie danych?


Dziękuję za szczegółowe odpowiedzi! W odpowiedzi na wszystkie twoje odpowiedzi: Rozumiem, że jeśli funkcje są w różnych skalach, może to stanowić problem. Jeśli jednak metryka odległości jest znormalizowana do wariancji, czy osiąga to ten sam wynik co standardowe skalowanie przed grupowaniem? tj Zwykle używam znormalizowaną odległość euklidesowa związane - Czyni to również łagodzić skutki skalowania?
Candic3

Odpowiedzi:


19

Normalizacja nie zawsze jest wymagana, ale rzadko boli.

Kilka przykładów:

K oznacza :

Grupowanie w kształcie litery K jest „izotropowe” we wszystkich kierunkach przestrzeni, a zatem ma tendencję do tworzenia mniej lub bardziej okrągłych (a nie wydłużonych) gromad. W tej sytuacji pozostawienie nierówności nierównych jest równoznaczne z przypisaniem większej wagi zmiennym o mniejszej wariancji.

Przykład w Matlabie:

X = [randn(100,2)+ones(100,2);...
     randn(100,2)-ones(100,2)];

% Introduce denormalization
% X(:, 2) = X(:, 2) * 1000 + 500;

opts = statset('Display','final');

[idx,ctrs] = kmeans(X,2,...
                    'Distance','city',...
                    'Replicates',5,...
                    'Options',opts);

plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(ctrs(:,1),ctrs(:,2),'kx',...
     'MarkerSize',12,'LineWidth',2)
plot(ctrs(:,1),ctrs(:,2),'ko',...
     'MarkerSize',12,'LineWidth',2)
legend('Cluster 1','Cluster 2','Centroids',...
       'Location','NW')
title('K-means with normalization')

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

(FYI: Jak mogę wykryć, czy mój zestaw danych jest klastrowany czy nieklastrowany (tj. Tworzy jeden klaster )

Klaster rozproszony :

Analiza porównawcza pokazuje, że wyniki rozproszonego grupowania zależą od rodzaju procedury normalizacyjnej.

Sztuczna sieć neuronowa (wejścia) :

Jeśli zmienne wejściowe są łączone liniowo, jak w MLP, rzadko jest absolutnie konieczna standaryzacja danych wejściowych, przynajmniej teoretycznie. Powodem jest to, że dowolne przeskalowanie wektora wejściowego można skutecznie cofnąć, zmieniając odpowiednie wagi i odchylenia, pozostawiając ci dokładnie takie same wyniki jak wcześniej. Istnieje jednak wiele praktycznych powodów, dla których ujednolicenie danych wejściowych może przyspieszyć trening i zmniejszyć ryzyko utknięcia w lokalnych optymach. Ponadto rozkład masy i oszacowanie bayesowskie można wykonać wygodniej dzięki znormalizowanym wejściom.

Sztuczna sieć neuronowa (wejścia / wyjścia)

Czy powinieneś zrobić coś z tych danych? Odpowiedź brzmi: to zależy.

Standaryzacja zmiennych wejściowych lub docelowych ma tendencję do usprawnienia procesu szkolenia poprzez poprawę warunku liczbowego (patrz ftp://ftp.sas.com/pub/neural/illcond/illcond.html ) problemu optymalizacji i zapewnienie różnych domyślnych wartości zaangażowane w inicjalizację i zakończenie są odpowiednie. Standaryzacja celów może również wpływać na funkcję celu.

Do standaryzacji spraw należy podchodzić ostrożnie, ponieważ odrzuca ona informacje. Jeśli informacje te są nieistotne, standaryzacja przypadków może być bardzo pomocna. Jeśli te informacje są ważne, standaryzacja przypadków może być katastrofalna.


Co ciekawe, zmiana jednostek miary może nawet doprowadzić do powstania zupełnie innej struktury klastrowania: Kaufman, Leonard i Peter J. Rousseeuw .. „Znajdowanie grup w danych: wprowadzenie do analizy skupień”. (2005).

W niektórych zastosowaniach zmiana jednostek miary może nawet doprowadzić do uzyskania zupełnie innej struktury klastrowania. Na przykład wiek (w latach) i wzrost (w centymetrach) czterech wyimaginowanych osób podano w tabeli 3 i wykreślono na rycinie 3. Wygląda na to, że {A, B) i {C, 0) są dwoma dobrze oddzielonymi grupami . Z drugiej strony, gdy wysokość wyrażona jest w stopach, otrzymuje się Tabelę 4 i Rycinę 4, gdzie oczywistymi skupieniami są teraz {A, C} i {B, D}. Ta partycja jest zupełnie inna niż pierwsza, ponieważ każdy temat otrzymał innego towarzysza. (Rycina 4 zostałaby spłaszczona nawet bardziej, gdyby wiek mierzono w dniach).

Aby uniknąć tej zależności od wyboru jednostek miary, istnieje możliwość standaryzacji danych. Konwertuje to oryginalne pomiary na zmienne bezjednostkowe.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Kaufman i in. kontynuuje kilka interesujących uwag (strona 11):

Z filozoficznego punktu widzenia normalizacja tak naprawdę nie rozwiązuje problemu. Rzeczywiście, wybór jednostek miary powoduje powstanie względnych wag zmiennych. Wyrażenie zmiennej w mniejszych jednostkach doprowadzi do większego zakresu dla tej zmiennej, co będzie miało duży wpływ na wynikową strukturę. Z drugiej strony, poprzez ujednolicenie jednej próby nadania wszystkim zmiennym jednakowej wagi, w nadziei na osiągnięcie obiektywności. Jako taki może być stosowany przez praktyka, który nie posiada wcześniejszej wiedzy. Jednak może się zdarzyć, że niektóre zmienne są z natury ważniejsze niż inne w konkretnym zastosowaniu, a następnie przyporządkowanie wag powinno opierać się na wiedzy przedmiotowej (patrz np. Abrahamowicz, 1985). Z drugiej strony, podjęto próby opracowania technik klastrowania, które są niezależne od skali zmiennych (Friedman i Rubin, 1967). Propozycja Hardy'ego i Rassona (1982) polega na poszukiwaniu partycji, która minimalizuje całkowitą objętość wypukłych kadłubów klastrów. Zasadniczo taka metoda jest niezmienna w odniesieniu do transformacji liniowych danych, ale niestety nie istnieje algorytm do jej realizacji (z wyjątkiem aproksymacji ograniczonej do dwóch wymiarów). Dlatego dylemat standaryzacji wydaje się obecnie nieunikniony, a programy opisane w tej książce pozostawiają wybór użytkownikowi. Propozycja Hardy'ego i Rassona (1982) polega na poszukiwaniu partycji, która minimalizuje całkowitą objętość wypukłych kadłubów klastrów. Zasadniczo taka metoda jest niezmienna w odniesieniu do transformacji liniowych danych, ale niestety nie istnieje algorytm do jej realizacji (z wyjątkiem aproksymacji ograniczonej do dwóch wymiarów). Dlatego dylemat standaryzacji wydaje się obecnie nieunikniony, a programy opisane w tej książce pozostawiają wybór użytkownikowi. Propozycja Hardy'ego i Rassona (1982) polega na poszukiwaniu partycji, która minimalizuje całkowitą objętość wypukłych kadłubów klastrów. Zasadniczo taka metoda jest niezmienna w odniesieniu do transformacji liniowych danych, ale niestety nie istnieje algorytm do jej realizacji (z wyjątkiem aproksymacji ograniczonej do dwóch wymiarów). Dlatego dylemat standaryzacji wydaje się obecnie nieunikniony, a programy opisane w tej książce pozostawiają wybór użytkownikowi.


1
Ta odpowiedź jest fenomenalna
Candic3

6

Zalecana jest standaryzacja danych, ponieważ w przeciwnym razie zakres wartości w każdej funkcji będzie odgrywać rolę przy określaniu sposobu grupowania danych, co zwykle jest niepożądane.

Weźmy na przykład standardową metrykę dla większości algorytmów klastrowych (w tym DBSCAN w uczeniu się sci-kit) - euclideanznaną również jako norma L2. Jeśli jedna z twoich funkcji ma zakres wartości znacznie większy od innych, klastrowanie zostanie całkowicie zdominowane przez tę jedną cechę. Aby to zilustrować, spójrz na prosty przykład poniżej:

>>> import numpy as np
>>> from sklearn.preprocessing import StandardScaler
>>> from sklearn.metrics.pairwise import euclidean_distances
>>> 
>>> X = np.array([[1,2,100],[4,3,50],[1,1,75]])
>>> 
>>> print X
[[  1   2 100]
 [  4   3  50]
 [  1   1  75]]
>>> 
>>> print euclidean_distances(X)
[[  0.          50.0999002   25.01999201]
 [ 50.0999002    0.          25.25866188]
 [ 25.01999201  25.25866188   0.        ]]
>>> print euclidean_distances(StandardScaler().fit_transform(X))
[[ 0.          3.46410162  1.73205081]
 [ 3.46410162  0.          3.46410162]
 [ 1.73205081  3.46410162  0.        ]]

Z tego wynika, że ​​odległości euklidesowe między wersjami niestandardowymi są zdominowane przez trzecią kolumnę, ponieważ jej zakres wartości jest znacznie większy niż pozostałych dwóch. Jednak gdy dane są znormalizowane, nie staje się to już problemem i waży każdą cechę jako równą przy obliczaniu odległości między każdym punktem danych.


1

Standaryzacja nie jest absolutnie konieczna, niezależnie od tego, czy jest to wymagane, czy nie, może zależeć od wybranej metryki odległości.

Na przykład, jeśli zdecydujesz się na odległość Mahalanobisa, wówczas separacja będzie oparta na liczbie standardowych odchyleń oddzielających punkty, a nie na bezwzględnej odległości między nimi, ponieważ jest to metryka niezmienna w skali.

Podobnie jak w przypadku wielu rzeczy w uczeniu maszynowym, nie ma twardej i szybkiej odpowiedzi, a jedynym sposobem, aby się upewnić, jest zastosowanie różnych technik, które dadzą najbardziej odpowiednie wyniki dla twoich danych.


0

Uznałem, że w niektórych przypadkach przydatne jest zdefiniowanie funkcji „oceny biznesowej”, określającej „ważność” wymiarów używanych do tworzenia klastrów. Np. W przypadku grupowania klientów w warzywniaku, jeśli jabłka są dwa razy droższe niż pomarańcze, liczba jabłek zostanie podwojona.


Ale czy nie mógłbyś po prostu włączyć tej funkcji jako dodatkowej funkcji, na której się klastrujesz? tzn. cena staje się funkcją do skupienia?
Candic3
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.