Ceci est une ancienne révision du document !
Jean-Yves Tigli - Nov 1016
Préambule
AlgLib est une bibliothèque de traitement et d'analyse de données numériques multi-plateformes. Il prend en charge plusieurs langages de programmation ( C ++ , C # , Pascal, VBA) et plusieurs systèmes d'exploitation (Windows, Linux, Solaris). AlgLib fournit les fonctionalités suivantes:
- L'analyse des données (classification / régression, y compris des réseaux de neurones)
- Optimisation et solveurs non linéaires
- Interpolation linéaire et non linéaire par la méthode des moindre carrés
- Outils d'algèbre linéaire (algorithmes directs, EVD / SVD), solveurs directs et itératifs linéaires, transformée de Fourier rapide
- et de nombreux autres algorithmes (intégration numérique, ODEs , statistiques, fonctions spéciales)
Vous trouverez les manuel de référence sur ce site, en particulier celui d'AlgLib sous C#.
Distribution de AlgLib
L'édition gratuite d'AlgLib est destiné aux scientifiques, chercheurs et ingénieurs qui ne veulent pas acheter la licence commerciale. Elle est livré gratuitement sous les termes de la licence GPL. Elle offre un ensemble complet de fonctionnalités identiques à l'édition commerciale de AlgLib. Cependant, il y a deux limites importantes dans l'édition gratuite de ALGLIB :
- Les performances, sachant que la version gratuite d'AlgLib n'est pas Multi-threads
- La licence, étant donné que sous licence GPL tout code que vous pourriez développer est lui-même GPL
Le site de la librairie AlgLib est www.alglib.net
Vous trouverez entre autre sur le site une distribution gratuite pour C# : alglib-3.10.0.csharp.gpl.
AlgLib et Analyse de Données
Comme indiqué ci-dessus, AlgLib fournit des librairies pour l'analyse de données. La liste et le manuel se trouvent sur ce site.
Un grand nombre d'algorithmes sont déjà implémentés comme :
- Basic dataset functions
- Clustering functions (hierarchical, k-means, k-means++)
- Backward compatibility functions
- Decision forest classifier (regression model)
- Different filters used in data analysis
- Linear discriminant analysis
- Linear models
- Logit models
- Markov Chains for Population/proportional Data
- Basic functions for neural networks
- Basic functions for neural ensemble models
- Neural network training
- Principal component analysis
Vous y trouverez très probablement un algorithme adapté à l'analyse souhaitée des données collectées dans votre projet.
Exemple de mise en oeuvre
Sans anticiper sur votre choix, nous allons présenter ici quelques exemples de mise en oeuvre d'AlgLib pour l'analyse de données.
Mise en oeuvre de l'Algorithme du K-means
L'algorithme du K-means ou K-Moyennes en français est particulièrement simple et pourtant assez performant pour certains problème de classification de données (ou clustering en anglais).
Cet algorithme tient sur peu de lignes, vous pouvez donc trouver des sources intégrales qui l'implémente comme sur K Means Clustering Algorithm en C. Dans ce cas, le code est donc embarquable sur votre SmartPhone …. pour les inconditionnels du “tout local”.
L'algorithme du K-means peut se résumer ainsi en 4 étapes :
- Choisir k objets formant ainsi k clusters
- Ré)affecter chaque objet O au cluster Ci de centre Mi tel que dist(O,Mi) est minimal
- Recalculer Mi de chaque cluster (le barycentre)
- Aller à l’étape 2 si on vient de faire une affectation
Voici une vidéo illustrative de l'évolution des clusters au fur et à mesure des itérations de l'algorithme (video). Plusieurs exécutions sont présentées avec des collections de données variables et des K (nombre de clusters souhaité) différents. Vous pouvez constater l'influence du choix des points de départ affectés aléatoirement aux clusters initiaux.
Implémentation du K-means en C# avec AlgLib
Un exemple d'utilisation d'AlgLib pour la mise en oeuvre de K-means en C# se trouve sur cette page.
Cet exemple largement perfectible a été modifié pour ce tutorial. Il est commenté en français et intégré dans un projet Visual Studio C# se trouve dans le fichier contenant déjà la librairie AlgLib dans une dll.
Bien sûr il vous faudra utilise un Visual Studio déjà installé sur votre machine pour le Tutorial. Nous vous rappelons que Visual Studio 2015 Community est gratuit pour les étudiants. Il vous suffit de créer un compte Microsoft, indiquer l'établissement dont vous dépendez et télécharger.
Travail proposé sur ce tutorial
Améliorez le en :
- rajoutant le chargement du DataSet depuis un fichier (excel, csv …le format est laissé à votre choix). Ceci vous permettra quelque soit l'algorithme de votre projet de visualiser les données bruts issues de votre SmartPhone.
- rajoutant la sauvegarde des k clusters (k défini interactivement) dans un fichier (excel, csv …le format est laissé à votre choix). Ceci vous permettra quelque soit l'algorithme de votre projet de visualiser les clusters issus de l'analyse.
- rajoutant différents méthodes d'affichage des données et des clusters :
- textuelles (System.Console.Write)
- graphiques (avec les Winforms par exemple)
Les plus avancé pourront ainsi produire un simulateur, en affichant le résultats à chaque appel de l'algorithme avec des collections de données et un nombre de clusters différents.