Implémentation du clustering K-means sur l'ensemble de données de la criminalité



Mise en œuvre du clustering Kmeans sur l'ensemble de données sur la criminalité américaine

Dans ce blog, vous comprendrez ce qu'est le clustering K-means et comment il peut être mis en œuvre sur les données criminelles collectées dans divers États américains. Les données contiennent des crimes commis comme: les agressions, les meurtres et les viols lors d'arrestations pour 100 000 habitants dans chacun des 50 États américains en 1973. En plus d'analyser les données, vous en apprendrez également sur:

    • Trouver le nombre optimal de clusters.
    • Minimiser la distorsion
    • Création et analyse de la courbe du coude.
  • Comprendre le mécanisme de l'algorithme k-means.

Commençons par l'analyse. Les données ressemblent à:





dataset

Cliquez sur l'image pour télécharger ce jeu de données

Besoin de cet ensemble de données? Cliquez sur l'image ci-dessus pour la télécharger.



Préparons d'abord les données pour l'analyse. Pour ce faire, nous devons supprimer toutes les valeurs NA qui pourraient être présentes dans les données et convertir les données en une matrice.

> crime0 crime str (crime) num [1:50, 1: 4] 13.2 10 8.1 8.8 9 7.9 3.3 5.9 15.4 17.4 ... - attr (*, 'dimnames') = Liste de 2 .. $: chr [1 : 50] 'Alabama' 'Alaska' 'Arizona' 'Arkansas' ... .. $: chr [1: 4] 'Meurtre' 'Assaut' 'UrbanPop' 'Viol'

Prenons le nombre de clusters à 5. La fonction Kmeans () prend les données d'entrée et le nombre de clusters dans lesquels les données doivent être regroupées. La syntaxe est la suivante: kmeans (données, k) où k est le nombre de centres de cluster.

> cl classe (cl) [1] 'kmeans'

Analyse du clustering:



> str (cl) Liste de 9 $ cluster: Nommé int [1:50] 5 3 3 5 3 5 4 5 3 5 ... ..- attr (*, 'names') = chr [1:50] ' Alabama '' Alaska '' Arizona '' Arkansas '... $ centres: num [1: 5, 1: 4] 2,95 6,11 12,14 5,59 11,3 ... ..- attr (*,' dimnames ') = Liste de 2 .. .. $: chr [1: 5] '1' '2' '3' '4' ... .. .. $: chr [1: 4] 'Meurtre' 'Assaut' 'UrbanPop' 'Viol '$ totss: num 355808 $ withinss: num [1: 5] 4548 2286 16272 1480 3653 $ tot.withinss: num 28240 $ betweenss: num 327568 $ size: int [1: 5] 10 9 14 10 7 $ iter: int 3 $ ifault: int 0 - attr (*, 'class') = chr 'kmeans'

La fonction str () donne la structure des kmeans qui comprend divers paramètres comme withinss, betweenss, etc., en analysant que vous pouvez découvrir les performances des kmeans.

entre les deux: entre la somme des carrés, c'est-à-dire la similarité intracluster

withinss: Dans la somme des carrés, c'est-à-dire similitude intercluster

totwithinss: somme de tous les inins de tous les clusters, c'est-à-dire similarité intra-cluster totale

Un bon regroupement aura une valeur inférieure de withins et une valeur plus élevée de betweenss qui dépend du nombre de clusters «k» choisi initialement. Voyons comment nous pouvons trouver la valeur optimale de «k».

Trouver la valeur optimale de «k»

Une valeur optimale de «k» est la valeur qui nous donne un ensemble convergé de clusters avec une distorsion minimale. Plus la distorsion est grande, pires seront les grappes formées.

Distorsion:

comment tester une base de données

La distorsion peut être calculée en termes de «intra» de chacun des clusters. Moins la valeur de «à l'intérieur» d'un cluster particulier, plus il sera densément peuplé, donc une distorsion minimale.

kmeans.wss.k<- function(crime, k){ km = kmeans(crime, k) return (km$tot.withinss) }

Cette fonction prend les données et la valeur de k et renvoie les «km $ totwithinss» pour cela. «Km $ totwithinss» est la somme totale des carrés à l’intérieur du cluster, y compris les inins de tous les 5 clusters créés, c’est-à-diresomme (withinss). Plus la valeur de «km $ totwithinss» est élevée, plus la distorsion sera grande.

Pour k = 5, withinss est 24417.02

> kmeans.wss.k (crime, 5) [1] 24417.02

Augmentons la valeur de k de 5 à 10 et observons la différence.

> kmeans.wss.k (crime, 10) [1] 11083.04

On peut voir que lorsque la valeur de K augmente, la distorsion diminue.

Nous pouvons extraire les différentes valeurs de «km $ totwithinss» et les tracer dans un graphique pour trouver la relation entre la distorsion et la valeur de k. La fonction suivante fait cela pour nous:

> kmeans.dis maxk = 10> dis = kmeans.dis (crime, maxk)> plot (1: maxk, dis, type = 'b', xlab = 'Number of Clusters', + ylab = 'Distorsion', + col = 'bleu')

Ta Da !!! Ainsi, nous avons la fameuse courbe du coude avec nous.

Courbe du coude:

Il s’agit du graphique entre «k», le nombre de clusters et les «totwithins» (ou distorsion) pour chaque valeur de k. Vous pouvez voir que lorsque le nombre d'amas est inférieur, il y a une diminution progressive de la distorsion mais à mesure que nous continuons d'augmenter la valeur de k, le taux de réduction des valeurs de distorsion devient constant.

Cette valeur de k au-delà de laquelle le taux de distorsion devient constant est la valeur optimale. Ici k = 4.

Appliquons une animation pour comprendre comment R nous a donné les résultats groupés.

mémoire de tas et de pile en java
> bibliothèque (animation)> cl<- kmeans.ani(crime, 4)

Algorithme de clustering Kmeans:

Comprenons l'algorithme sur lequel fonctionne le clustering k-means:

Étape 1. Si k = 4, nous sélectionnons 4 points aléatoires et supposons qu'ils sont des centres de cluster pour les clusters à créer.

Étape 2. Nous prenons un point de données aléatoire de l'espace et découvrons sa distance de tous les centres des 4 clusters. Si le point de données est le plus proche du centre du cluster vert, il est de couleur verte et de la même manière, tous les points sont classés parmi les 4 clusters.

Étape 3. Nous calculons maintenant le centre de gravité de tous les points verts et attribuons ce point comme centre du cluster pour ce cluster.

De même, nous calculons les centres de gravité pour les 4 points colorés (groupés) et attribuons les nouveaux centres de gravité comme centres de cluster.

Étape 4. Les étapes 2 et 3 sont exécutées de manière itérative, à moins que les centres du cluster ne convergent en un point et ne bougent plus.


Ainsi, nous atteignons les centres des clusters convergents.

On voit que les données sont divisées en 4 clusters. Les centres de cluster sont:

> cl $ centres Murder Assault UrbanPop Rape Texas 4.740741 104.8519 62.96296 16.10 Louisiane 10.907143 219.9286 71.71429 25.95 Caroline du Sud 13.375000 284.5000 46.25000 25.05 Nouveau-Mexique 11.040000 298.0000 77.60000 32.68

Le groupe 4 avec le «Nouveau-Mexique» comme centre du cluster a un taux de criminalité énorme avec la population la plus élevée également.

Suivi du Cluster-3 et du Cluster-2.

Chaque État se voit attribuer un cluster, en fonction duquel nous pouvons désormais prédire son classement de criminalité. La sortie ressemble à:

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires et nous vous recontacterons.

Articles Similaires: