K-betekent clustering in R: stapsgewijs voorbeeld - Statologie (2024)

Clustering is een techniek in machine learning die probeert te vindenclustersvanwaarnemingenbinnen een dataset.

Het doel is om clusters te vinden zodat de waarnemingen binnen elk cluster behoorlijk op elkaar lijken, terwijl waarnemingen in verschillende clusters behoorlijk van elkaar verschillen.

Clustering is een vorm vanonbewaakt lerenomdat we gewoon proberen structuur te vinden binnen een dataset in plaats van de waarde van sommige te voorspellenresponsvariabele.

Clustering wordt vaak gebruikt in marketing wanneer bedrijven toegang hebben tot informatie zoals:

  • Huishoudelijk inkomen
  • Grootte van het huishouden
  • Hoofd huishouding
  • Afstand van dichtstbijzijnde stedelijk gebied

Wanneer deze informatie beschikbaar is, kan clustering worden gebruikt om huishoudens te identificeren die vergelijkbaar zijn en die eerder geneigd zijn bepaalde producten te kopen of beter te reageren op een bepaald type reclame.

Een van de meest voorkomende vormen van clustering is bekend alsk-betekent clustering.

Wat is K-Means clustering?

K-means clustering is een techniek waarbij we elke waarneming in een dataset plaatsen in een vanKclusters.

Het einddoel is hebbenKclusters waarin de waarnemingen binnen elk cluster behoorlijk op elkaar lijken terwijl de waarnemingen in verschillende clusters behoorlijk van elkaar verschillen.

In de praktijk gebruiken we de volgende stappen om K-means clustering uit te voeren:

1. Kies een waarde voorK.

  • Eerst moeten we beslissen hoeveel clusters we in de data willen identificeren. Vaak moeten we hiervoor eenvoudig verschillende waarden testenKen analyseer de resultaten om te zien welk aantal clusters het meest logisch lijkt voor een bepaald probleem.

2. Wijs elke waarneming willekeurig toe aan een eerste cluster, van 1 totK.

3. Voer de volgende procedure uit totdat de clustertoewijzingen niet meer veranderen.

  • Voor elk van deKclusters, bereken het clusterzwaartepunt.Dit is gewoon de vector van dePkenmerkmiddelen voor de waarnemingen in deke cluster.
  • Wijs elke waarneming toe aan het cluster waarvan het zwaartepunt het dichtst bij is. Hier,dichtstbijzijndewordt gedefinieerd met behulp vanEuclidische afstand.

K-betekent clustering in R

De volgende zelfstudie biedt een stapsgewijs voorbeeld van het uitvoeren van k-betekent clustering in R.

Stap 1: laad de benodigde pakketten

Eerst laden we twee pakketten die verschillende handige functies bevatten voor k-betekent clustering in R.

bibliotheek(factoextra)bibliotheek(TROS)

Stap 2: laad en bereid de gegevens voor

Voor dit voorbeeld gebruiken we deVS arrestatiesdataset ingebouwd in R, die het aantal arrestaties per 100.000 inwoners in elke Amerikaanse staat in 1973 bevat voorMoord,Overval, EnVerkrachtingsamen met het percentage van de bevolking in elke staat dat in stedelijke gebieden woont,UrbanPop.

De volgende code laat zien hoe u het volgende doet:

  • Laad deVS arrestatiesgegevensset
  • Verwijder eventuele rijen met ontbrekende waarden
  • Schaal elke variabele in de dataset om een ​​gemiddelde van 0 en een standaarddeviatie van 1 te hebben
#gegevens ladendf <- VSarrestaties#verwijder rijen met ontbrekende waardendf <- en.weglaten(df)#schaal elke variabele om een ​​gemiddelde van 0 en sd van 1 te hebbendf <- schaal(df)#bekijk de eerste zes rijen van de datasethead(df) Moord Aanval UrbanPop VerkrachtingAlabama 1.24256408 0.7828393 -0.5209066 -0.003416473Alaska 0.50786248 1.1068225 -1.2117642 2.484202941Arizona 0.07163341 1 .4788032 0.9989801 1.042878388Arkansas 0.23234938 0.2308680 -1.0735927 -0.184916602Californië 0.27826823 1.2628144 1.7589234 2.06782029 2Colorado 0,02571456 0,3988593 0,8608085 1,864967207

Stap 3: Zoek het optimale aantal clusters

Om k-betekent clustering in R uit te voeren, kunnen we de ingebouwde gebruikenkbetekent()functie, die de volgende syntaxis gebruikt:

kmeans(gegevens, centra, nstart)

waar:

  • gegevens:Naam van de dataset.
  • centra:Het aantal clusters, aangegevenk.
  • begin:Het aantal initiële configuraties. Omdat het mogelijk is dat verschillende initiële startclusters tot verschillende resultaten kunnen leiden, is het raadzaam om meerdere verschillende initiële configuraties te gebruiken. Het k-means-algoritme vindt de initiële configuraties die leiden tot de kleinste binnen-clustervariatie.

Omdat we van tevoren niet weten hoeveel clusters optimaal is, maken we twee verschillende plots die ons kunnen helpen beslissen:

1. Aantal clusters versus het totaal binnen som van vierkanten

Eerst gebruiken we defviz_nbclust()functie om een ​​grafiek te maken van het aantal clusters versus het totaal binnen de som van de kwadraten:

fviz_nbclust(df, kmeans, methode = "wss")

K-betekent clustering in R: stapsgewijs voorbeeld - Statologie (1)

Wanneer we dit type plot maken, zoeken we meestal naar een "elleboog" waar de som van de vierkanten begint te "buigen" of afvlakt. Dit is doorgaans het optimale aantal clusters.

Voor deze grafiek lijkt het erop dat er een beetje een elleboog of "bocht" is bij k = 4 clusters.

2. Aantal clusters vs. Gap-statistiek

Een andere manier om het optimale aantal clusters te bepalen, is door een metriek te gebruiken die bekend staat als dekloof statistiek, die de totale variatie binnen de cluster voor verschillende waarden van k vergelijkt met hun verwachte waarden voor een verdeling zonder clustering.

We kunnen de gap-statistiek berekenen voor elk aantal clusters met behulp van declusGap()functie uit deTROSpakket samen met een plot van clusters versus gap-statistieken met behulp van defviz_gap_stat()functie:

#bereken gap-statistieken op basis van het aantal clustersgap_stat <- clusGap(df, FUN = kmeans, nstart = 25, K.max = 10, B = 50)#plot aantal clusters versus gap-statistiekfviz_gap_stat(gap_stat)

K-betekent clustering in R: stapsgewijs voorbeeld - Statologie (2)

Uit de grafiek kunnen we zien dat de gap-statistiek het hoogst is bij k = 4 clusters, wat overeenkomt met de elleboogmethode die we eerder gebruikten.

Stap 4: Voer K-Means Clustering uit met OptimaalK

Ten slotte kunnen we k-means clustering uitvoeren op de dataset met behulp van de optimale waarde voorkvan 4:

#maak dit voorbeeld reproduceerbaarset.seed(1)#voer k-means clustering uit met k = 4 clusterskm <- kmeans(df, centra = 4, nstart = 25)#bekijk resultatenkmK-betekent clustering met 4 clusters van grootte 16, 13, 13, 8Cluster betekent: Murder Assault UrbanPop Rape1 -0.4894375 -0.3826001 0.5758298 -0.261653792 -0.9615407 -1.1066010 -0.9301069 -0.9667 Clustering vector: Alabama Alaska Arizona Arkansas Californië Colorado 4 3 3 4 3 3 Connecticut Delaware Florida Georgia Hawaii Idaho 1 1 3 4 1 2 Illinois Indiana Iowa Kansas Kentucky Louisiana 3 1 2 1 2 4 Maine Maryland Massachusetts Michigan Minnesota Mississippi 2 3 1 3 2 4 Missouri Montana Nebraska Nevada New Hampshire New Jersey 3 2 2 3 2 1 New Mexico New York North Carolina North Dakota Ohio Oklahoma 3 3 4 2 1 1 Oregon Pennsylvania Rhode Island South Carolina South Dakota Tennessee 1 1 1 4 2 4 Texas Utah Vermont Virginia Washington West Virginia 3 1 2 1 1 2 Wisconsin Wyoming 2 1 Binnen cluster som van kwadraten per cluster:[1] 16.212213 11.952463 19.922437 8.316061 (between_SS / total_SS = 71.2 %)Beschikbare componenten:[1] "cluster" "centers" "totss" "withinss" "tot.withinss" "tussenss" [7] "grootte" "iter" "ifault"

Uit de resultaten kunnen we zien dat:

  • 16staten werden toegewezen aan het eerste cluster
  • 13staten werden toegewezen aan het tweede cluster
  • 13staten werden toegewezen aan het derde cluster
  • 8staten werden toegewezen aan het vierde cluster

We kunnen de clusters visualiseren op een spreidingsdiagram dat de eerste twee hoofdcomponenten op de assen weergeeft met behulp van defivz_cluster()functie:

#plot resultaten van definitief k-betekent modelfviz_cluster(km, data = df)

K-betekent clustering in R: stapsgewijs voorbeeld - Statologie (3)

We kunnen ook detotaal()functie om het gemiddelde van de variabelen in elk cluster te vinden:

#vind middelen van elk clusteraggregaat(USArrestaties, door=lijst(cluster=km$cluster), gemiddelde)cluster Moord AanvalUrbanPop Verkrachting13.60000 78.5384652.0769212.17692210.81538 257.3846276.0000033.1923135.65625 138.8750073.8750018.7 8125413.93750 243.6250053.7500021.41250

We interpreteren deze uitvoer als volgt:

  • Het gemiddelde aantal moorden per 100.000 burgers onder de staten in cluster 1 is3.6.
  • Het gemiddelde aantal aanslagen per 100.000 burgers onder de staten in cluster 1 is78,5.
  • Het gemiddelde percentage inwoners dat in een stedelijk gebied woont tussen de staten in cluster 1 is52,1%.
  • Het gemiddelde aantal verkrachtingen per 100.000 burgers in de staten in cluster 1 is12.2.

Enzovoort.

We kunnen ook de clustertoewijzingen van elke status toevoegen aan de oorspronkelijke dataset:

#voeg clustertoewijzing toe aan oorspronkelijke gegevensfinal_data <- cbind(USArrests, cluster = km$cluster)#bekijk definitieve gegevenshead(final_data) MoordAssaultUrbanPop Verkrachting clusterAlabama 13.223658 21.2 4Alaska 10.026348 44,5 2Arizona 8.129480 31.0 2Arkansas 8.819050 19.5 4Californië 9.027691 40.6 2Colorado 7.920478 38.7 2

Voors en tegens van K-Means Clustering

K-means clustering biedt de volgende voordelen:

  • Het is een snel algoritme.
  • Het kan goed overweg met grote datasets.

Het heeft echter de volgende mogelijke nadelen:

  • Het vereist dat we het aantal clusters specificeren voordat we het algoritme uitvoeren.
  • Het is gevoelig voor uitschieters.

Er zijn twee alternatieven voor k-betekent clusteringk-medoids clusteringEnhiërarchische clustering.

U kunt de volledige R-code vinden die in dit voorbeeld is gebruikthier.

K-betekent clustering in R: stapsgewijs voorbeeld - Statologie (2024)
Top Articles
Latest Posts
Article information

Author: Msgr. Benton Quitzon

Last Updated:

Views: 6151

Rating: 4.2 / 5 (63 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Msgr. Benton Quitzon

Birthday: 2001-08-13

Address: 96487 Kris Cliff, Teresiafurt, WI 95201

Phone: +9418513585781

Job: Senior Designer

Hobby: Calligraphy, Rowing, Vacation, Geocaching, Web surfing, Electronics, Electronics

Introduction: My name is Msgr. Benton Quitzon, I am a comfortable, charming, thankful, happy, adventurous, handsome, precious person who loves writing and wants to share my knowledge and understanding with you.