0% ont trouvé ce document utile (0 vote)
40 vues16 pages

Clustering

Transféré par

Naima Hassoune
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues16 pages

Clustering

Transféré par

Naima Hassoune
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Data 2021 :

Il semble que vous ayez déjà regroupé vos données en clusters à l'aide de l'algorithme k-means et
que vous ayez extrait certaines caractéristiques pour chaque cluster. Vous voulez maintenant
interpréter ces clusters en termes de niveaux de risque.

Pour cela, vous pouvez utiliser les caractéristiques que vous avez extraites pour chaque cluster et les
comparer pour évaluer le niveau de risque associé à chaque cluster. Par exemple, vous pourriez
considérer les caractéristiques suivantes pour évaluer le niveau de risque :

1. Solde : Un solde plus élevé peut indiquer une capacité financière plus importante, ce qui peut
réduire le risque.

2. Chiffre d'affaires (CA) : Un chiffre d'affaires plus élevé peut indiquer une entreprise plus rentable et
donc un risque plus faible.

3. Encaissements : Des encaissements plus élevés peuvent indiquer une meilleure gestion des
liquidités et donc un risque plus faible.

4. Créances non échues : Un nombre plus élevé de créances non échues peut indiquer une bonne
gestion des comptes clients et donc un risque plus faible.

5. Créances échues : Un nombre plus élevé de créances échues peut indiquer des difficultés de
paiement et donc un risque plus élevé.

6. Taux de recouvrement des créances échues : Un taux de recouvrement plus faible peut indiquer
des difficultés à récupérer les dettes et donc un risque plus élevé.

7. Délai de recouvrement en jours : Un délai de recouvrement plus long peut indiquer des problèmes
de paiement et donc un risque plus élevé.

8. Caution : Une caution plus élevée peut indiquer une garantie financière et donc un risque plus
faible.

En analysant ces caractéristiques pour chaque cluster, vous pouvez attribuer un niveau de risque à
chaque cluster en fonction de la performance relative des entreprises qui y sont regroupées.

Par exemple :

- Cluster 0 : Risque très faible (en raison de solde élevé, CA élevé, encaissements élevés, etc.)

- Cluster 1 : Risque faible (en raison de solde modéré, CA modéré, encaissements modérés, etc.)

- Cluster 2 : Risque modéré (en raison de solde plus faible, CA modéré, encaissements modérés, etc.)
- Cluster 3 : Risque élevé (en raison de solde très faible, CA élevé mais encaissements faibles,
créances échues élevées, etc.)

Cette évaluation peut être ajustée en fonction du contexte spécifique de vos données et des critères
de risque de votre entreprise.

Data 2022 :
En fonction des caractéristiques que vous avez fournies pour chaque cluster, voici une interprétation
possible en termes de niveaux de risque :

- Cluster 0 : Risque modéré

- Solde relativement élevé

- Chiffre d'affaires (CA) moyen

- Encaissements modérés

- Nombre élevé de créances non échues

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours moyen à élevé

- Caution modérée à élevée

- Cluster 1 : Risque faible

- Solde très faible

- Chiffre d'affaires (CA) bas

- Encaissements bas

- Aucune créance non échue

- Aucune créance échue

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours très faible

- Caution basse

- Cluster 2 : Risque très faible

- Solde faible

- Chiffre d'affaires (CA) bas


- Encaissements bas

- Aucune créance non échue

- Aucune créance échue

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours faible

- Caution modérée

- Cluster 3 : Risque élevé

- Solde élevé

- Chiffre d'affaires (CA) moyen à élevé

- Encaissements élevés

- Nombre modéré de créances non échues

- Nombre élevé de créances échues

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours élevé

- Caution élevée

Cette interprétation est basée sur les caractéristiques moyennes de chaque cluster et peut être
ajustée en fonction du contexte spécifique de vos données et des critères de risque de votre
entreprise.

Data 2023:
En se basant sur les caractéristiques moyennes de chaque cluster, voici une interprétation possible
en termes de niveaux de risque :

- **Cluster 0 : Risque très faible**

- Solde très faible

- Chiffre d'affaires (CA) très bas

- Encaissements très bas

- Aucune créance non échue

- Aucune créance échue

- Taux de recouvrement des créances échues élevé


- Délai de recouvrement en jours faible à moyen

- Caution modérée

- **Cluster 1 : Risque faible**

- Solde faible

- Chiffre d'affaires (CA) moyen à élevé

- Encaissements moyens à élevés

- Aucune créance non échue

- Aucune créance échue

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours très faible

- Caution modérée

- ** Cluster 3: Risque modéré à élevé**

- Solde élevé

- Chiffre d'affaires (CA) moyen

- Encaissements moyens

- Nombre moyen de créances non échues

- Nombre élevé de créances échues

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours élevé

- Caution élevée

- ** Cluster 2: Risque élevé**

- Solde moyen

- Chiffre d'affaires (CA) élevé

- Encaissements élevés

- Nombre élevé de créances non échues

- Aucune créance échue

- Taux de recouvrement des créances échues élevé

- Délai de recouvrement en jours moyen à élevé


- Caution moyenne

Ces interprétations sont basées sur les caractéristiques moyennes de chaque cluster et peuvent être
ajustées en fonction du contexte spécifique de vos données et des critères de risque de votre
entreprise.

Code : vba pour la normalization


Sub NormaliserDonnéesParClientDiviserMax()

' Déclaration des variables

Dim wsFeuille As Worksheet

Dim iLigne As Long

Dim DerniereLigne As Long

Dim CodeClientCourant As String

Dim CAmax As Double

Dim EncaissementMax As Double

Dim CNEmax As Double

Dim CEmax As Double

Dim DMRecouvrementMax As Double

' Définir la feuille active

Set wsFeuille = [Link]("Feuil3") ' Remplacer "Feuille1" par le nom de votre


feuille

' Obtenir la dernière ligne du tableau de données

DerniereLigne = [Link]([Link], 1).End(xlUp).Row

' Parcourir chaque ligne du tableau de données

For iLigne = 2 To DerniereLigne

' Obtenir le code client de la ligne actuelle


CodeClientCourant = [Link](iLigne, 1).Value

' Initialiser les valeurs maximales

CAmax = [Link](iLigne, 3).Value

EncaissementMax = [Link](iLigne, 4).Value

CNEmax = [Link](iLigne, 5).Value

CEmax = [Link](iLigne, 6).Value

DMRecouvrementMax = [Link](iLigne, 8).Value

' Parcourir les lignes suivantes pour le même code client

For iLigneSuivante = iLigne + 1 To DerniereLigne

' Si le code client de la ligne suivante correspond au code client courant

If [Link](iLigneSuivante, 1).Value = CodeClientCourant Then

' Mettre à jour les valeurs maximales si nécessaire

CAmax = [Link](CAmax, [Link](iLigneSuivante,


3).Value)

EncaissementMax = [Link](EncaissementMax,
[Link](iLigneSuivante, 4).Value)

CNEmax = [Link](CNEmax, [Link](iLigneSuivante,


5).Value)

CEmax = [Link](CEmax, [Link](iLigneSuivante,


6).Value)

DMRecouvrementMax = [Link](DMRecouvrementMax,
[Link](iLigneSuivante, 8).Value)

End If
Next iLigneSuivante

' Normaliser les données pour le client courant

If CAmax <> 0 Then

[Link](iLigne, 3).Value = [Link](iLigne, 3).Value / CAmax

Else

[Link](iLigne, 3).Value = 0

End If

' Vérifier si EncaissementMax est différent de zéro avant de procéder à la division

If EncaissementMax <> 0 Then

[Link](iLigne, 4).Value = [Link](iLigne, 4).Value / EncaissementMax

Else

' Gérer le cas où EncaissementMax est égal à zéro, par exemple, en définissant la valeur normalisée
à zéro

[Link](iLigne, 4).Value = 0

End If

' Vérifier si CNEmax est différent de zéro avant de procéder à la division

If CNEmax <> 0 Then

[Link](iLigne, 5).Value = [Link](iLigne, 5).Value / CNEmax ' Créances Non Echues

Else

' Gérer le cas où CNEmax est égal à zéro, par exemple, en définissant la valeur normalisée à zéro

[Link](iLigne, 5).Value = 0

End If

' Vérifier si CEmax est différent de zéro avant de procéder à la division

If CEmax <> 0 Then


[Link](iLigne, 6).Value = [Link](iLigne, 6).Value / CEmax ' Créances Echues

Else

' Gérer le cas où CEmax est égal à zéro, par exemple, en définissant la valeur normalisée à zéro

[Link](iLigne, 6).Value = 0

End If

' Normaliser le Taux de recouvrement (généralement déjà une valeur entre 0 et 1)

' Vous pouvez adapter la normalisation en fonction de vos besoins

[Link](iLigne, 7).Value = [Link](iLigne, 7).Value ' Taux de recouvrement des


créances échues

' Vérifier si DMRecouvrementMax est différent de zéro avant de procéder à la division

If DMRecouvrementMax <> 0 Then

[Link](iLigne, 8).Value = [Link](iLigne, 8).Value / DMRecouvrementMax ' Délai


moyen du recouvrement en jour

Else

' Gérer le cas où DMRecouvrementMax est égal à zéro, par exemple, en définissant la valeur
normalisée à zéro

[Link](iLigne, 8).Value = 0

End If

Next iLigne

End Sub

Partie de vérification de la performance du


clusters :
Pour vérifier la performance des clusters, vous pouvez utiliser plusieurs techniques et métriques
d'évaluation. Voici un plan détaillé des étapes à suivre pour évaluer la qualité des clusters obtenus :
### 1. **Analyse des Clusters avec des Métriques de Cohésion et de Séparation**

**1.1 Inertie Intra-cluster (Within-Cluster Sum of Squares, WCSS)**

- **But :** Mesurer la compacité des clusters. Plus la somme des carrés des distances entre les
points de données et le centroïde de leur cluster est faible, mieux c'est.

- **Méthode :** Calculer la somme des distances euclidiennes au carré entre chaque point et le
centroïde de son cluster.

**1.2 Distance Inter-cluster**

- **But :** Mesurer la séparation entre les clusters. Des distances plus grandes entre les centroïdes
des clusters indiquent une meilleure séparation.

- **Méthode :** Calculer la distance entre les centroïdes de chaque paire de clusters.

**1.3 Indice de Silhouette**

- **But :** Évaluer la cohésion et la séparation des clusters.

- **Méthode :** Pour chaque point, calculer la silhouette score, qui prend en compte la distance
moyenne entre ce point et tous les autres points du même cluster et la distance moyenne entre ce
point et tous les points du cluster le plus proche.

```python

from [Link] import silhouette_score

# Supposons que 'data' est votre DataFrame et 'labels' sont les étiquettes des clusters

silhouette_avg = silhouette_score(data, labels)

print(f"Silhouette Score: {silhouette_avg}")

```

### 2. **Validation des Clusters par la Méthode du Coude (Elbow Method)**

- **But :** Déterminer le nombre optimal de clusters en trouvant le point où l'ajout de nouveaux
clusters n'améliore plus significativement l'inertie intra-cluster.

- **Méthode :** Tracer la courbe WCSS pour différents nombres de clusters et identifier le "coude"
de la courbe.

```python
import [Link] as plt

from [Link] import KMeans

wcss = []

for i in range(1, 11):

kmeans = KMeans(n_clusters=i, random_state=42)

[Link](data)

[Link](kmeans.inertia_)

[Link](range(1, 11), wcss)

[Link]('Méthode du Coude')

[Link]('Nombre de clusters')

[Link]('Inertie intra-cluster')

[Link]()

```

### 3. **Evaluation par des Indices de Clustering**

**3.1 Indice de Davies-Bouldin**

- **But :** Évaluer la qualité du clustering en se basant sur la ratio entre la somme des dispersions
intra-cluster et la séparation inter-cluster.

- **Méthode :** Calculer l'indice Davies-Bouldin pour les clusters.

```python

from [Link] import davies_bouldin_score

db_score = davies_bouldin_score(data, labels)

print(f"Davies-Bouldin Index: {db_score}")

```

**3.2 Indice de Dunn**


- **But :** Évaluer la séparation des clusters par rapport à leur compacité.

- **Méthode :** Calculer l'indice de Dunn (plus complexe à implémenter manuellement).

### 4. **Visualisation des Clusters**

**4.1 Réduction de la Dimensionnalité**

- **But :** Visualiser les clusters en 2D ou 3D pour interpréter visuellement la qualité du clustering.

- **Méthode :** Utiliser PCA (Principal Component Analysis) ou t-SNE (t-distributed Stochastic
Neighbor Embedding).

```python

from [Link] import PCA

import seaborn as sns

pca = PCA(n_components=2)

principal_components = pca.fit_transform(data)

[Link](figsize=(10, 7))

[Link](x=principal_components[:,0], y=principal_components[:,1], hue=labels,


palette='viridis')

[Link]('Visualisation des Clusters avec PCA')

[Link]()

```

### 5. **Evaluation de la Stabilité des Clusters**

**5.1 Validation Croisée (Cross-Validation)**

- **But :** Évaluer la stabilité des clusters sur différents sous-ensembles de données.

- **Méthode :** Appliquer le clustering sur plusieurs échantillons de données et comparer les
résultats.

**5.2 Comparaison des Clusters avec des Labels Connus (si disponibles)**
- **But :** Si vous avez des labels ou des catégories connues, comparer les clusters obtenus avec
les labels réels.

- **Méthode :** Utiliser des métriques telles que l'Adjusted Rand Index (ARI) ou l'Adjusted Mutual
Information (AMI).

```python

from [Link] import adjusted_rand_score

ari = adjusted_rand_score(true_labels, labels)

print(f"Adjusted Rand Index: {ari}")

```

### Conclusion

Ces techniques et métriques permettent de vérifier la performance et la qualité des clusters obtenus,
et de choisir le meilleur algorithme de clustering pour votre projet. Assurez-vous d'analyser et de
comparer les résultats de ces évaluations pour déterminer les clusters les plus appropriés pour
segmenter vos clients selon le niveau de risque.

𝔼𝕧𝕒𝕝𝕦𝕒𝕥𝕚𝕠𝕟 𝕄𝕖𝕥𝕙𝕠𝕕𝕤:

➊ Silhouette score:

A high Silhouette score (close to 1) indicates that data points within clusters are
similar, and that the normal data points are well separated from the anomalous ones.

➋ Calinski-Harabasz index:

Calinski-Harabasz Index measures the between-cluster dispersion against within-


cluster dispersion. A higher score signifies better-defined clusters.

➌ Davies-Bouldin index:

Davies-Bouldin Index measures the size of clusters against the average distance
between clusters. A lower score signifies better-defined clusters.

➍ Kolmogorov-Smirnov statistic:

It measures the maximum difference between the cumulative distribution functions


of the normal and anomalous data points.

➎ Precision at top-k:

The metric calculates the precision of the top-k anomalous data points using expert
domain knowledge.

Don't leave your unsupervised anomaly detection to chance because there are no
labels.

1)Segmentation :

*Intro :

Dans le cas où les données ne sont pas étiquetées, l'apprentissage non supervisé est
utilisé. Dans cette méthode, la machine a le pouvoir de déduire la variable
cible(target) des caractéristiques en regroupant ou en schématisant les données en
fonction de leurs similitudes, avec très peu d'intervention humaine. Deux grands
clans sont identifiés dans l'apprentissage non supervisé : le clustering et la réduction
de dimension.

*clustering :

C’est une technique couramment utilisée dans le domaine de l'apprentissage non supervisé afin de
regrouper les données non étiquetées d'un dataset en fonction de leur similitude en classes
homogènes. Il existe différents types de clustering, tels que le clustering hiérarchique et le clustering
partitionnel, qui reposent sur l'utilisation des centroïdes. L'exemple le plus connu est le clustering k-
means. Dans la même catégorie, on retrouve également le clustering basé sur la densité : les K-
médiods , Fuzzy C Mean Clustering

Figure 1

1-1) Clustering hiérarchique :


Contrairement à d'autres méthodes de regroupement qui génèrent des clusters en une
seule étape, les algorithmes de regroupement hiérarchique adoptent une méthode
progressive de formation de clusters. On peut distinguer deux catégories principales
d'algorithmes : le regroupement divisionnaire et le regroupement agglomératif.

1-1-1)Regroupement Divisionnaire :**


-Définition : Commence avec tous les points de données dans un seul cluster et les divise
récursivement en clusters plus petits jusqu'à ce que chaque point soit dans son propre
cluster ou qu'un critère d'arrêt soit atteint.
- Processus :Commence à la racine (ensemble des données) et se divise jusqu'aux feuilles
(points individuels).

1-1-2)Regroupement Agglomératif :
- Définition : Commence avec chaque point de données comme un cluster individuel et
fusionne itérativement les clusters les plus proches jusqu'à ce qu'un seul cluster reste ou que
le nombre désiré de clusters soit atteint.
- Processus : Commence aux feuilles (points individuels) et fusionne les clusters jusqu'à la
racine (ensemble des données).

Figure2
1-2) Clustering partitionnel :
1-2-1) K-means :
Le K-means est l’algorithme le plus célèbre dans l’apprentissage automatique non
Supervisé consiste à regrouper les données homogènes dans un nombre prédéterminé de
clusters ‘K’ distincts et qui ne chevauchent pas, la figure**** montre un
dataset avant et après l’utilisation du k-means.

Figure3
*Etapes de k-means :
L’algorithme de k-means clustering cherche à minimiser une fonction coût appelée

inertia et qui représente la somme des distances entre les points d’un cluster 𝑥 et le
centroïde de ce dernier .
La formule (*) représente la fonction coût de k-means (inertia) où :
n : le nombre de points du dataset
c : le centroïde de chaque cluster
i : fait référence à chaque point du dataset (i varie de 0 à n) [28].

ⅈ𝑛𝑒𝑟𝑡ⅈ𝑎 =∑𝑖𝑛=0min⁡(‖𝑥𝑖 − 𝑐𝑖‖2) …….(*)


Étape 1 : désigner le nombre de clusters ‘k’, cette désignation sera soit :
aléatoire ou par tâtonnement selon des connaissances précédentes sur la nature et la
distribution du dataset, elle peut même être faite par l'utilisation des techniques

d’apprentissages. Figure

Étape 2 : initialiser k centroïdes d’une manière


aléatoire dans la figure 23 Les points
roses représentent les centroïdes initiaux, où

k=3 et i =0...k . Figure

Étape 3 : cette étape englobe trois étapes principales qui vont être réitérées jusqu’à ce que
les centroïdes convergent vers une position d’équilibre.

* La somme des distances d au carré (inertia) entre chaque point de données 𝑥𝑖 et les k
centroïdes 𝑐𝑖 serait calculée en premier par la

formule ** ( figure ).
(𝑥𝑖 , 𝑐𝑖) = √(∑𝑗𝑑=1(𝑥𝑖1 − 𝑐𝑖1)) . . . . . . . . . (**)
i=1...N, j=1...k
*Afin d’optimiser la fonction coût (voirformule *), le centre de gravité sera attribué au

cluster le plus proche ( figure ).

*Enfin, Recalculer le nouveau centre de gravité ′𝑐𝑖 de chaque cluster i par la formule ***.

′𝑐𝑖 = 𝑚1𝑖 ∑𝑗𝑁𝑖=1 (𝑥𝑖 , 𝑐𝑖) . . . . . . . . . (***)


Où :

𝑑: la distances

𝑐𝑖 : le centroïde i

𝑚𝑖 : le nombre des points affecté au centroïde 𝑐𝑖

𝑥𝑖 : le point x affecté a ce centroïde


Etape 4 : itérer l'algorithme (répéter l'étape 3) jusqu'à ce que les centroïdes ne changent
plus de groupe.

Figure
1-2-2)k-médoide
Le principe de cette méthode est similaire à celui du k-means, à la différence près qu'il utilise
des objets représentatifs situés au centre d'un cluster, appelés médoïdes, au lieu des
centroïdes, afin de réduire la somme des dissemblances et de réduire le bruit et les valeurs
aberrantes.
Pour appliquer l’algorithme de k-médoïde il nous faut un dataset avec n éléments, et le
nombre de cluster à former k, pour procéder comme suite :
a. Sélectionné K points à partir du dataset comme des médoïdes initiaux.
b Attribuez chaque point de l'échantillon à un cluster en fonction du médoïde le plus proche.
c. Remplacer les médoïdes par d’autres points du dataset en minimisant le coût total
(somme des distances au médoïdes le plus proches).
d. Répétez les étapes 2 et 3 jusqu’à ce qu'il n'y ait plus de changement dans les médoïdes.
Figure

Vous aimerez peut-être aussi