Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
kmeans-enonce
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
dario.genga
kmeans-enonce
Commits
ec8c852a
Commit
ec8c852a
authored
3 years ago
by
ines.maya
Browse files
Options
Downloads
Patches
Plain Diff
add md
parent
2b2b8660
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Makefile
+15
-0
15 additions, 0 deletions
Makefile
kmeans.md
+153
-0
153 additions, 0 deletions
kmeans.md
kmeans.pdf
+0
-0
0 additions, 0 deletions
kmeans.pdf
with
168 additions
and
0 deletions
Makefile
0 → 100644
+
15
−
0
View file @
ec8c852a
SRC
=
$(
wildcard
*
.md
)
PDF
=
$(
patsubst %.md,%.pdf,
${
SRC
})
all
:
${PDF}
read
:
${PDF}
firefox
$^
%.pdf
:
%.md Makefile
pandoc
--pdf-engine
=
xelatex
-o
$@
$<
clean
:
rm
-rf
${
PDF
}
.PHONY
:
clean read
This diff is collapsed.
Click to expand it.
kmeans.md
0 → 100644
+
153
−
0
View file @
ec8c852a
---
title
:
K-Means
author
:
-
GENGA Dario
-
JAQUET Steven
-
MAYA Inès
-
ROSSMANN Théo
-
STEFANOVIC Boris
date
:
2022-05-10
geometry
:
"
margin=40mm"
mainfont
:
DejaVu Sans
header-includes
:
-
\usepackage{float}
-
\let\origfigure\figure
-
\let\endorigfigure\endfigure
-
\renewenvironment{figure}[1][2] {\expandafter\origfigure\expandafter[H]} {\endorigfigure}
---
# Introduction: partitionnement de données
De façon générale, le partitionnement de données consiste à grouper des données
en clusters de façon à ce que les éléments d'un même groupe soient proches les
uns des autres ou d'un élément virtuel représentant l'élément "moyen" de
la partition.
# Méthode des k-moyennes (k-means)
La méthode des k-moyennes est un algortihme permettant de partitionner
un ensemble de données par rapport à une métrique prédéfinie.
## Données
Les éléments de l'univers doivent être représentables sous forme
de vecteurs de valeurs
naturelles (éléments de $
\m
athbb{N}^n$)
ou réelles (éléments de $
\m
athbb{R}^n$) .
## Fonctions à faire
-
definir centroide aleatoirement (3)
-
calcul dst euclidienne centre - pt
-
calcul de la moyenne
-
lire le fichier
-
place les closteur (ou et nombre)
## Fonction distance
Afin de quantifier la proximité de deux éléments entre eux, nous avons
besoin de définir une fonction distance, qui sera notre métrique.
Cette fonction distance peut être aussi simple qu'une distance
de Manhattan ou une distance euclidienne, par exemple.
Cette fonction prend en argument deux vecteurs éléments de notre univers.
$$d(x,y)$$
Une grande valeur de retour indiquera que $x$ et $y$ sont éloignés.
Inversément, une petite valeur de retour indiquera qu'ils sont proches.
## Algorithme
### distance euclidienne
-
calculer la distance entre un point a l'aide de la dst euclidienne et les centroides : sqrt((x2-x1)^2 + (y2-y1)^2) = sqrt((x-y)^2)
-
comparer les dst qui séparent le point aux centroides
-
assigner le point au centroide le plus proche
-
faire ca pour tous les points
### distance de Manhattan
-
calculer la distance entre un point a l'aide de la dst euclidienne et les centroides : |(x2 - x1)| + |(y2-y1)|
-
comparer les dst qui séparent le point aux centroides
-
assigner le point au centroide le plus proche
-
faire ca pour tous les points
# Implémentation
## Type de données
Cet algorithme peut s'appliquer facilement à tous types de données
pouvant être représentées sous forme de vecteurs de valeurs.
Cependant, nous avons décidé de limiter nos tests aux vecteurs à valeurs
naturelles, en 2 dimensions, pour en simplifier la visualisation
et la vérification de notre algorithme.
$$v
\i
n
\m
athbb{N}^2$$
### structure de donnée
*points*
float x - y
label
*cluster*
tab[nbr point]
**BONUS 1**
: étendre l'implémentation pour pouvoir utiliser des vecteurs
à $n$ dimensions avec $n$ passé en paramètre au début de la procédure.
**BONUS 2**
: implémentation de l'algorithme PCA pour la visualisation
de vecteurs à plus de 2 dimensions.
## Algorithme
**A FAIRE**
### centroides
-
placer des centroides aléatoirement
-
définir quels points appartient a quel centroide
-
faire la moyenne de points qui sont egroupés à ce centroide
-
changer les cordonnées des centroides
-
répeter les actions jusqu'à que les cordonnées du centroides ne change pas
## Interface utilisateur
Le programme fonctionnera entièrement en ligne de commande, avec possibilité
de spécifier un fichier d'entrée. A cette fin nous utiliserons des appels à
fscanf(...) et la lecture des arguments en ligne de commande.
Par défaut, le programme lira les données dans la console / sur
l'entrée standard (permet les "pipe").
# Vérification
## Validation des résultats
### Tester le bon choix des centres originaux
Pour un univers de densité relativement homogène, il ne devrait pas
y avoir de grand déséquilibre dans le nombre d'éléments par partition.
### Tester le partitionnement
Pour évaluer la justesse relative d'un résultat, pour un ensemble
de centres donné, il suffit de mesurer la distance de chaque point
à tous les centres.
De ces distances-là, si la plus petite n'est pas celle au centre du
groupe dont l'élément fait partie, il y a erreur.
## Validation de l'algorithme
Nous allons dans un premier temps utiliser des données générées
artificiellement et pré-labélisées.
Ainsi, si on se retrouve avec une correspondance exacte entre les labels
et les groupes, le test sera considéré comme validé.
Nous n'allons pas faire appel au pseudo-aléatoire dans un premier temps.
# Analyse
## De quoi dépend la qualité des résultats ?
Par qualité, nous entendons une bonne minimisation des distances
mentionnées plus haut.
-
bon choix de centres initiaux
-
nombre d'itérations suffisant
This diff is collapsed.
Click to expand it.
kmeans.pdf
0 → 100644
+
0
−
0
View file @
ec8c852a
File added
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment