K oznacza grupowanie w R: samouczek krok po kroku z przykładem

Opublikowany: 2020-02-17

Jako naukowiec zajmujący się danymi będziesz dużo grupować. Dostępnych jest wiele rodzajów algorytmów klastrowania i powinieneś być dobrze zorientowany w używaniu ich wszystkich. W tym artykule omówimy popularny algorytm grupowania, K-średnie, i zobaczymy, jak jest używany w R.

Dowiesz się, jaka jest podstawowa teoria za grupowaniem K-średnich w R i jak jest używana. W dalszej części artykułu omówiliśmy również praktyczny przykład. Pamiętaj, aby dodać ten artykuł do zakładek, aby móc z niego skorzystać w przyszłości. Przeczytaj więcej o analizie klastrów w Data Mining.

Zanim zaczniemy omawiać K oznacza klastrowanie w R, powinniśmy przyjrzeć się rodzajom algorytmów klastrowania, które są obecne, aby lepiej zrozumieć, jak ten algorytm sobie z nimi radzi.

Przeczytaj: Najlepsze biblioteki R w nauce o danych

Spis treści

Rodzaje klastrowania

Grupowanie kilku obiektów w taki sposób, aby obiekty najbardziej do siebie podobne znajdowały się w bliskim skupisku, nazywamy grupowaniem. Odległość między przedmiotami może mieć wpływ na ich podobieństwo. Podobieństwo pokazuje siłę związku między dwoma różnymi obiektami w nauce o danych. Klastrowanie to popularna technika eksploracji danych. Klastrowanie znajduje zastosowanie w wielu branżach i obszarach, w tym w analizie obrazu, uczeniu maszynowym, kompresji danych, rozpoznawaniu wzorców i wielu innych.

Grupowanie jest dwojakiego rodzaju – twarde i miękkie. Omówmy pokrótce każdy z nich.

  • W twardym klastrze punkt danych należałby całkowicie do klastra lub w ogóle nie należałby do niego. Nie ma pomiędzy.
  • W miękkim klastrze obiekt danych może być powiązany z więcej niż jednym klastrem naraz ze względu na pewne prawdopodobieństwo lub prawdopodobieństwo.

Ucz się online kursu nauki o danych z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Rodzaje algorytmów klastrowania

Podobnie jak istnieją różne rodzaje klastrów, istnieją również różne rodzaje algorytmów klastrowania. Algorytmy można rozróżniać na podstawie ich modelu klastrowego. Oznacza to, że możesz je rozróżnić na podstawie tego, jak tworzą skupiska. Gdybyśmy zaczęli mówić o wszystkich rodzajach algorytmów klastrowania, ten przewodnik stałby się zbyt długi i daleki od głównego punktu. Omówimy więc tylko kilka znanych typów algorytmów klastrowania. Istnieją algorytmy klastrowania oparte na łączności, centroidach, gęstości i dystrybucji.

Podstawowa koncepcja K-średnich

Podstawowa koncepcja K-średnich jest dość prosta. K-średnie są związane z definiowaniem klastrów tak, aby całkowita zmienność w obrębie klastra była jak najmniejsza. Istnieje wiele algorytmów k-średnich. Najpopularniejszym algorytmem k-średnich jest algorytm Hartigana-Wonga, który stwierdza, że ​​całkowita zmienność wewnątrz skupień jest równa sumie kwadratów odległości odległości euklidesowych między centroidami i ich elementami:

W( C k )= x i C k ( x i k ) 2

Tutaj x i odnosi się do punktu danych, który należy do klastra Ck , a k odnosi się do średniej wartości punktów danych obecnych w klastrze Ck.

Wartość x i powinna być taka, aby suma kwadratu odległości między x i a k ​​była minimalna.

Co to jest algorytm K-średnich?

Aby skorzystać z algorytmu, musimy najpierw określić liczbę klastrów K, które będą obecne w naszym wyniku. Algorytm najpierw wybiera losowo K obiektów, aby działały jako początkowe centra skupień. Nazywamy te obiekty centroidami lub środkami. Następnie przypisujemy pozostałe obiekty do ich najbliższych centroidów. Odległość euklidesowa między centroidami gromady a obiektami określa, jak blisko są.

Po przypisaniu obiektów do odpowiednich centroidów algorytm oblicza średnią wartość skupień. Po tym ponownym obliczeniu ponownie sprawdzamy obserwacje, aby zobaczyć, czy mogą być bliżej innej gromady. Następnie odpowiednio przypisujemy obiekty do centroidów. Powtarzamy te kroki, aż do zakończenia przypisywania klastrów. Oznacza to, że przestajemy powtarzać iteracje, gdy klastry utworzone w iteracji są takie same jak w poprzedniej iteracji.

Korzystanie z klastrowania K-średnich (przykład)

Teraz, gdy wiesz, co to jest algorytm K-średnich w R i jak działa, omówmy przykład dla lepszego wyjaśnienia. W tym przykładzie połączymy klientów organizacji, korzystając z bazy danych klientów hurtowych. Dane dotyczące tego problemu są dostępne w repozytorium uczenia maszynowego Berkley UCI. Możesz to sprawdzić tutaj .

Najpierw odczytamy dane. A potem zdobądź podsumowanie. Po przeczytaniu danych i zapoznaniu się z ich podsumowaniem zobaczysz, że między najlepszymi konsumentami w różnych kategoriach istnieją pewne wyraźne różnice. Znajdziesz pewne wartości odstające, których nie można łatwo usunąć za pomocą normalizacji (lub skalowania). Mając te dane, firma chciałaby zobaczyć, co kupują jej klienci ze średniej półki przez większość czasu. To dlatego, że firma miałaby dobry pomysł na to, co kupują najlepsi klienci.

Aby stworzyć klaster klientów średniego poziomu, powinniśmy najpierw pozbyć się górnej warstwy klientów z każdej kategorii. Więc usuniemy 5 najlepszych i stworzymy nowy zestaw. Oto jak to zrobimy:

top.n.cust <- function (data,cols,n=5) { #Wymaga ramki danych i górnego N do usunięcia

idx.to.remove <-integer(0) #Zainicjuj wektor, aby zatrzymać usuwanych klientów

for (c in cols){ # Dla każdej kolumny w danych, które przekazaliśmy do tej funkcji

col.order <-order(data[,c],decreasing=T) #Sortuj kolumnę „c” w kolejności malejącej (większa na górze)

#Order zwraca posortowany indeks (np. wiersz 15, 3, 7, 1, …), a nie rzeczywiste posortowane wartości.

idx <-head(col.order, n) #Weź pierwszy n posortowanej kolumny C do

idx.to.remove <-union(idx.to.remove,idx) #Połącz i usuń duplikaty identyfikatorów wierszy, które należy usunąć

}

return(idx.to.remove) #Zwróć indeksy klientów do usunięcia

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

length(top.cust) #Ilu klientów trzeba usunąć?

data[top.custs,] #Zbadaj dostępnych klientów

data.rm.top<-data[-c(top.custs),] #Usuń wymaganych Klientów

Mając ten nowy plik, możemy rozpocząć pracę nad naszą analizą klastrów. Aby przeprowadzić analizę skupień, użyjemy następującego kodu:

set.seed(76964057) #Ustaw ziarno na powtarzalność

k <-kmeans(data.rm.top[,-c(1,2)], centres=5) #Utwórz 5 klastrów, Usuń kolumny 1 i 2

k$centers #Centra klastrów displayowych

table(k$cluster) #Podaj liczbę punktów danych w każdym klastrze

Po uruchomieniu tego kodu na podanej bazie danych otrzymasz następujące wyniki:

  • Pierwszy klaster miałby wysokiej jakości detergenty, ale niewielką ilość świeżych produktów spożywczych
  • Trzeci klaster miałby więcej świeżego produktu

Aby uzyskać szczegółową interpretację wyników, musisz użyć inssa i pośredniego. k$withinss jest równa sumie kwadratu odległości między każdym obiektem danych od środka klastra. Im niższy zakres, tym lepszy byłby wynik. Jeśli miara wewnętrzna jest wysoka w twoich danych, oznacza to, że występuje wiele wartości odstających i musisz przeprowadzić czyszczenie danych. k$betweenss to suma kwadratu odległości między różnymi środkami skupień. Odległość między centrami klastrów powinna być jak największa.

Przeczytaj: 6 Częściej używane struktury danych w R

Powinieneś skorzystać z pomocy prób i błędów, aby uzyskać najdokładniejsze wyniki. Aby to zrobić, musisz wypróbować różne wartości K. Jeśli wykres Twoich wyników nie pokazuje przyrostu wewnątrz Twoich skupień, ten punkt będzie najbardziej odpowiednią wartością K. Możesz znaleźć wartość K przez następujący kod:

rng<-2:20 #K od 2 do 20

próbuje <-100 #Uruchom algorytm K Mean 100 razy

avg.totw.ss <-integer(length(rng)) #Ustaw pusty wektor do przechowywania wszystkich punktów

for(v in rng){ # Dla każdej wartości zmiennej zakresu

v.totw.ss <-integer(tries) #Ustaw pusty wektor do przechowywania 100 prób

dla(i w 1:próbach){

k.temp <-kmeans(data.rm.top,centers=v) #Uruchom kmeans

v.totw.ss[i] <-k.temp$tot.withinss#Przechowuj całkowitą wartość wewnątrzss

}

avg.totw.ss[v-1] <-mean(v.totw.ss) #Średnia z 100 całkowitych wewnątrzss

}

plot(rng,avg.totw.ss,type=”b”, main=”Suma w ramach SS według różnych K”,

ylab=”Średnia suma w sumie kwadratów”,

xlab=”Wartość K”)

Otóż ​​to. Teraz możesz użyć wykresu otrzymanego z tego kodu, aby uzyskać najlepszą wartość K i użyć go, aby uzyskać wymagane wyniki. Użyj tego przykładu, aby wypróbować swoją wiedzę na temat grupowania K-średnich w języku R. Oto cały kod, którego użyliśmy w przykładzie:

dane <-read.csv("Dane klientów hurtowych.csv",header=T)

podsumowanie(dane)

top.n.cust <- function (data,cols,n=5) { #Wymaga ramki danych i górnego N do usunięcia

idx.to.remove <-integer(0) #Zainicjuj wektor, aby zatrzymać usuwanych klientów

for (c in cols){ # Dla każdej kolumny w danych, które przekazaliśmy do tej funkcji

col.order <-order(data[,c],decreasing=T) #Sortuj kolumnę „c” w kolejności malejącej (większa na górze)

#Order zwraca posortowany indeks (np. wiersz 15, 3, 7, 1, …), a nie rzeczywiste posortowane wartości.

idx <-head(col.order, n) #Weź pierwszy n posortowanej kolumny C do

idx.to.remove <-union(idx.to.remove,idx) #Połącz i usuń duplikaty identyfikatorów wierszy, które należy usunąć

}

return(idx.to.remove) #Zwróć indeksy klientów do usunięcia

}

top.custs <-top.n.custs(data,cols=3:8,n=5)

length(top.cust) #Ilu klientów ma zostać usuniętych?

data[top.custs,] #Zbadaj klientów

data.rm.top <-data[-c(top.custs),] #Usuń klientów

set.seed(76964057) #Ustaw ziarno na powtarzalność

k <-kmeans(data.rm.top[,-c(1,2)], centres=5) #Utwórz 5 klastrów, Usuń kolumny 1 i 2

k$centers #Wyświetl centra klastrów

table(k$cluster) #Podaj liczbę punktów danych w każdym klastrze

rng<-2:20 #K od 2 do 20

próbuje<-100 #Uruchom algorytm K Mean 100 razy

avg.totw.ss<-integer(length(rng)) #Ustaw pusty wektor do przechowywania wszystkich punktów

for(v in rng){ # Dla każdej wartości zmiennej zakresu

v.totw.ss<-integer(próby) #Ustaw pusty wektor do przechowywania 100 prób

dla(i w 1:próbach){

k.temp<-kmeans(data.rm.top,centers=v) #Uruchom kmeans

v.totw.ss[i]<-k.temp$tot.withinss#Przechowuj całkowitą wartość wewnątrzss

}

avg.totw.ss[v-1]<-mean(v.totw.ss) #Średnia z 100 wszystkich wewnątrzss

}

plot(rng,avg.totw.ss,type=”b”, main=”Suma w ramach SS według różnych K”,

ylab=”Średnia suma w sumie kwadratów”,

xlab=”Wartość K”)

Wniosek

Mamy nadzieję, że spodobał Ci się ten przewodnik. Staraliśmy się, aby była zwięzła i wyczerpująca. Jeśli masz jakiekolwiek pytania dotyczące algorytmu K-średnich, skontaktuj się z nami. Chętnie odpowiemy na Twoje pytania.

Jeśli jesteś zainteresowany nauką o danych, sprawdź program IIIT-B i upGrad Executive PG w dziedzinie Data Science, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami z branży, 1 -on-1 z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy z najlepszymi firmami.

Jakie są wady korzystania z K-średnich?

Wartości odstające mogą przyciągać centroidy, a wartości odstające mogą otrzymać własne skupienie zamiast być ignorowane. Ponieważ K-średnia jest stochastyczna, nie może zapewnić, że zostanie znalezione optymalne globalne rozwiązanie klastrowe. W rzeczywistości wartości odstające i zaszumione dane mogą sprawić, że algorytm będzie bardzo wrażliwy. Przed pogrupowaniem rozważ wyeliminowanie lub wycięcie wartości odstających. Podczas grupowania danych o zmiennych rozmiarach i gęstościach K-średnie mają trudności. Aby zgrupować takie dane, musisz uogólnić K-średnie. Nawet jeśli wyraźnie należą one do tego samego klastra, algorytm k-średnich nie pozwala, aby punkty danych, które są od siebie oddalone, współdzieliły ten sam klaster.

Jaka jest metoda łokcia w K-środkach?

Metoda k-średnich w dużej mierze opiera się na znalezieniu odpowiedniej liczby skupień. Metoda łokcia jest szeroko stosowaną metodą określania najlepszej wartości K. Technika kolankowa wykonuje grupowanie K-średnich na zbiorze danych dla zakresu wartości K na wykresie, a następnie oblicza średni wynik dla wszystkich skupień dla każdej wartości K. Wynik zniekształcenia, który jest sumą odległości kwadratowych z każdego punktu do przydzielonego mu centrum jest obliczana domyślnie. Inne modele oparte na danych, takie jak liczba głównych komponentów charakteryzujących zbiór danych, mogą wykorzystywać tę samą technikę do określania liczby parametrów.

Jak możemy znaleźć wartości odstające w K-średnich?

Wartości odstające w grupowaniu K-średnich można wykryć za pomocą zarówno techniki opartej na odległości, jak i opartej na klastrach. Wartości odstające są wykrywane za pomocą dendrogramów w przypadku grupowania hierarchicznego. Celem projektu jest wykrywanie i eliminowanie wartości odstających w celu zwiększenia dokładności klastrowania. Dane są podzielone na grupy K poprzez przypisanie ich do najbliższych centrów skupień w podejściu identyfikacji wartości odstających w oparciu o K-średnie. Możemy następnie obliczyć odległość lub brak podobieństwa między każdym elementem a jego środkiem skupienia i wybrać wartości odstające o największych odległościach. Ponieważ wartości ekstremalne mogą szybko wpłynąć na średnią, metoda grupowania K-średnich jest wrażliwa na wartości odstające.