rapport kmeans
DESCRIPTION
TRANSCRIPT
1
Implementation of K-Means Clustering in
Cloud Computing Environment
Réalisé par :
JANNADI Wiem
TURKI Imen
2ing01
2
Table des matières : 1. Introduction : ................................................................................................................................... 3
2. Le clustering :................................................................................................................................... 3
3. K_Means : ........................................................................................................................................ 4
4. Cloud Computing : ............................................................................................................................... 5
5. Cloudster/K-means algorithm for cloud computing: .......................................................................... 7
6. Mise en œuvre : ................................................................................................................................... 8
6.1 –Algorithme : ................................................................................................................................. 8
6.2 -Code java : .................................................................................................................................... 8
7. Conclusion/Perspectives : ................................................................................................................. 12
3
1. Introduction :
Aujourd’hui le monde des affaires est rapide et dynamique dans la nature. Ceci implique
beaucoup de données recueillies auprès de différentes sources.
Ces données sont stockées dans des entrepôts de données (Data Warehouses).
La plupart des tâches difficiles des gens d'affaires est de transformer ces données en
informations utiles appelle la connaissance.
Données techniques d'extraction sont utilisés pour réaliser cette tâche.
Ce qui fait de faire le regroupement des serveurs, en vue de créer un "super serveur
virtuel« qui ‘est le clustering.
2. Le clustering : Clustering : Organiser un ensemble de formes en groupes contrastés.
En vue de : Comprimer et structurer les données pour permettre des prédictions.
4
Objectif :
- Trouver des regroupements « naturels » (clusters) des exemples
- Inventer un nouvel attribut C dont les valeurs c1, c2, …, ck indiquent le cluster auquel
appartient un exemple
Critère
• Maximiser la distance inter-cluster
• Minimiser la distance intra-cluster
3. K_Means :
K means est un algorithme de clustering (classification de données) ... K est un paramètre qui
est le nombre de classe à construire.
L’idée générale de l’algorithme est de créer k classe centrée autour de k points de centre
qu’on choisis au départ aléatoirement , puis à chaque itération on calcule le barycentre des
points de chaque classe qui sera le nouveau centre de la classe et on ajuste la classe autour de
ce centre .
Un point appartient à la classe dont le centre est plus proche.
//Principe général
L’algorithme consiste à grouper les points selon un critère bien déterminé.
L’entrée de l’algorithme est le nombre k de groupes (cluster). Une fois le nombre de groupes
saisi, l’algorithme choisit arbitrairement k points comme centres «initiaux » des k groupes.
L’étape suivante consiste à calculer la distance entre chaque individu (point) et les k
centres, la plus petite distance est retenue pour inclure cet individu dans le groupe ayant le
centre le plus proche.
Une fois tous les individus groupés, on aura k sous-nuages (cluster) disjoints du nuage total.
Pour chaque groupe, l’algorithme calcule le nouveau centre de gravité.
L’algorithme s’arrête lorsque les groupes construits deviennent stables.
5
4. Cloud Computing :
Cloud computing:« informatique en nuage »
• une puissance de calcul,
• un espace de stockage,
• une infrastructure de serveurs reliés par Internet.
Avantages
• la flexibilité de l'infrastructure => plus agiles dans système d'information.
• Rapidité d’accès à une infrastructure performante.
• Paiement contrôlés grâce à une facturation à la carte
Inconvénients
• les performances du Cloud Computing sont dépendantes d'Internet et peuvent
connaître une certaine latence due à la faiblesse du réseau,
• les fournisseurs de plates-formes de Cloud Computing offrent peu de garantie en
matière de continuité de service (SLA - Service Level Agreement),
• les données critiques de l'entreprise sont hébergées à l'extérieur du système
d'information.
• Algorithme simple et efficace en temps et en mémoire
• Utilisable avec de grandes bases de données (e.g. milliers d’objets).
Avantages
• Sensible au choix des moyennes initiales Limites
• Il existe des informations a priori sur le choix des centres de classes.
• En post-traitement d’un clustering hiérarchique. A utiliser
6
Saas (Software-as-a-service) permet d'externaliser dans des salles informatiques la couche
infrastructure matérielle, les applications middleware et de développement (Paas) ainsi que les
applications de l'entreprise. L'entreprise consomme ces applications hébergées à la demande
(comme par exemple Gmail, la messagerie de Google).
Iaas (Infrastructure-as-a-service) permet d'externaliser la couche infrastructure matérielle
(les serveurs, le réseau, le stockage) dans des salles informatiques distantes. Les entreprises
démarrent des serveurs virtuels hébergés sur la plate-forme de Cloud Computing à chaque fois
qu'un accroissement de calcul est nécessaire.
Paas (Platform-as-a-service) permet d'externaliser la couche infrastructure matérielle (Iaas),
mais aussi les bases de données, les environnements de développement et d'exécution
d'applications et les couches d'intégration de données. L'entreprise conserve uniquement ses
applications en interne. Elle utilise le Paas pour porter ses applications « dans les nuages » ou
en développer d'autres à partir des outils de développement (hébergés) fournis par la plate-
forme de Cloud Computing.
7
5. Cloudster/K-means algorithm for cloud
computing:
Un cluster de serveurs, c'est le fait de regrouper et relier physiquement des serveurs par
des interfaces spécifique pour le transformer en un seul serveur plus puissant et scalaire.
Un serveur Cloud, c'est en fait un serveur issu de la division en plusieurs morceaux d'un
plus gros serveur. Ça permet d'avoir un serveur avec tous les droits (ou presque) à moindre
coût par rapport à un serveur dédié. Nous allons mettre en œuvre l'algorithme des K-Means en
java et l'IDE Eclipse pour la conception et le développement de l'application qui sera déployée
sur la plateforme Google AppEngine.
Google App Engine permet d'exécuter vos applications Web sur l'infrastructure Google.
Faciles à développer et à gérer, les applications App Engine, grâce à leur caractère évolutif,
s'adaptent à vos besoins en termes de trafic et de stockage des données. App Engine vous
dispense du recours à tout serveur : il vous suffit de transférer votre application et le tour est
joué ! Vos utilisateurs peuvent s'en servir sans plus attendre.
8
6. Mise en œuvre :
6.1 –Algorithme :
Choisir les points k qui représentent la position moyenne des
partitions m1(1)
,…,mk(1)
initiales (au hasard par exemple)
Répéter jusqu'à convergence:
- assigner chaque observation à la partition la plus proche.
- mettre à jour la moyenne de chaque cluster
La convergence est atteinte quand il n'y a plus de changement.
6.2 -Code java :
public void run() { Random gene=new Random(); readData(); // Initialiser les centres centers[0]=new Iris(0.8514,0.5867,-1.0364,-1.0132,ic.setosa); centers[1]=new Iris(0.725,-0.3293,0.8331,0.8386,ic.virginica); centers[2]=new Iris(0.5654,-0.1556,-0.4775,-0.52,ic.versicolor); // Iterer System.out.println("avant for "); for(int i=0;i<150;i++){ // Une liste d'exemples par cluster lesClusters=new ArrayList[nbClust]; for(int j=0;j<nbClust;j++) lesClusters[j]=new ArrayList<Iris>(); // Pour chaque exemple, rechercher le centre le plus proche
9
for(Iris d:lesDonnees){ double dmin=1000; int indexmin=-1; for(int l=0;l<nbClust;l++){ double dist=d.distance(centers[l]); if(dist<dmin){ dmin=dist; indexmin=l; } } // Ajouter l'exemple au cluster du centre le plus proche lesClusters[indexmin].add(d); } // Calculer les nouveaux centres for(int j=0;j<nbClust;j++){ double nb=lesClusters[j].size();
double sw=0; double sl=0; double pl=0; double pw=0; for(Object o:lesClusters[j]){ Iris d=(Iris)o; sw+=d.getSepalWidth(); sl+=d.getSepalLength(); pw+=d.getPetalWidth(); pl+=d.getPetalLength(); }// object o if(nb!=0) centers[j]=new Iris(pl/nb,pw/nb,sl/nb,sw/nb,null); else // Si le cluster est vide, choisir un nouveau centre centers[j]=new Iris(gene.nextDouble(),gene.nextDouble(),gene.nextDouble(),gene.nextDouble(),null); }}
1-
2-
Cette fonction nous permet de calculer la distance entre les nœuds et les points.
10
Les 3 centres
Cluster Vercicolor
Cluster Setosa.
11
public String connaissance(Iris d){ double dmin=1000; int indexmin=-1; for(int l=0;l<nbClust;l++){ double dist=d.distance(centers[l]); if(dist<dmin){ dmin=dist; indexmin=l; }} lesClusters[indexmin].add(d); return "le point i "+d+" appartient au cluster"+indexmin; }
Exemple :
12
7. Conclusion/Perspectives : L’algorithme k-means est très populaire du fait qu’il est très facile à comprendre et à
mettre en œuvre.
Le degré d’appartenance d’un document à une classe étant binaire et la pondération de
chaque document étant constant.
Comparer les performances des autres algorithmes par rapport à k-means. Cela
signifie qu'un point de données peut appartenir à un seul cluster et qu'une probabilité
unique est calculée pour l'appartenance de chaque point de données à ce cluster.