33 votes

Quelle bibliothèque d'apprentissage automatique utiliser ?

Je suis à la recherche d'une bibliothèque qui, idéalement, présente les caractéristiques suivantes :

  • met en œuvre le regroupement hiérarchique de données multidimensionnelles (idéalement sur la matrice de similitude ou de distance)
  • met en œuvre des machines à vecteurs de support
  • est en C++
  • est quelque peu documenté (celui-ci semble être le plus difficile)

J'aimerais que ce soit en C++, car je suis plus à l'aise avec ce langage, mais j'utiliserai aussi tout autre langage si la bibliothèque en vaut la peine. J'en ai trouvé quelques-unes sur Google, mais je n'ai pas vraiment le temps de les essayer toutes, alors je veux savoir ce que d'autres personnes ont vécu. Veuillez ne répondre que si vous avez une certaine expérience de la bibliothèque que vous recommandez.

P.S. : Je pourrais aussi utiliser des bibliothèques différentes pour le clustering et le SVM.

16voto

doug Points 29567

Il n'y a que quelques bibliothèques ML que j'ai suffisamment utilisées pour pouvoir les recommander ; dlib ml est certainement l'un d'entre eux.

Téléchargement de Sourceforge ici ; et le contrôle des bords perdus :

hg clone http://hg.code.sf.net/p/dclib/code dclib-code

Le créateur original de la bibliothèque et son responsable actuel est Davis King.

Votre liste de souhaits par rapport aux fonctionnalités pertinentes de dlib :

  • bonne documentation Pour les bibliothèques gratuites et à code source ouvert destinées à un groupe relativement restreint d'utilisateurs/développeurs, c'est probablement la meilleure solution possible. Introduction à dlib , un (faible trafic) forum et un grand nombre d'excellents exemples (dont au moins un pour le SVM).

  • C++ : 100% en C++ pour autant que je sache.

  • Support-Vecteur Machine algorithme : oui ; en fait, les modules SVM ont fait l'objet des plus récentes mises à jour de cette bibliothèque.

  • Clustering hiérarchique algorithme : non disponible dans la boîte. Cependant, il existe un code packagé pour clustering k-means . Il est évident que les résultats de chaque technique sont très différents, mais le calcul de la métrique de similarité et l'étape ultérieure de l'étape de partitionnement récursif/itératif qui suit sont sont au cœur de chacune d'entre elles. Autrement dit, le moteur de calcul du clustering hiérarchique est là. L'adaptation du module de clustering existant pour HC nécessitera plus que quelques lignes de code, mais il sera possible d'adapter le module de clustering aux besoins de l'utilisateur. quelques lignes de code, mais ce n'est pas non plus pas un effort majeur étant donné que vous travaillez presque au niveau de la niveau de présentation des données.

dlib ml a quelques points supplémentaires pour le recommander. Il s'agit d'une bibliothèque mature (elle en est à la version 17.x maintenant, la version 1.x a été publiée à la fin de 2005, je crois), mais elle reste également en développement actif, comme en témoignent les journaux du dépôt (la dernière mise à jour, 17.27, date du 17 mai 2010) et le dernier commit (23 mai 2010). En outre, il inclut également un certain nombre d'autres techniques ML (par exemple, les réseaux bayésiens, les méthodes à noyau, etc.) Et troisièmement, dllib ml a d'excellentes bibliothèques de "support" pour le calcul matriciel et l'optimisation, qui sont tous deux des éléments fondamentaux de nombreuses techniques ML.

Dans les sources, j'ai remarqué que dlib ml est sous licence de BSL (Boost ?), qui est une licence open source, bien que je ne sache rien d'autre sur ce type de licence.

10voto

Finbarr Points 8420

WEKA (http://www.cs.waikato.ac.nz/ml/weka/) est une excellente bibliothèque d'apprentissage automatique open source qui répond à la plupart de vos exigences, à l'exception de C++ - elle est écrite en Java. Elle est très bien documentée, implémente les machines à vecteurs de support et le clustering et j'ai eu de très bonnes expériences avec elle.

10voto

Yin Zhu Points 10438

Bibliothèques générales d'apprentissage automatique :

Ces deux-là sont similaires à Weka. Cependant, ils ont l'efficacité en tête.

1.Shark (GPL)

http://shark-project.sourceforge.net/

2.Waffles (LGPL)

http://waffles.sourceforge.net/

SVM et autres classificateurs linéaires :

1.LibSVM (style BSD)

2.LibLinear (style BSD)

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Ils sont tous en C++.

5voto

Björn Pollex Points 41424

Ok, pour être complet, je vais poster ce que j'ai fait à la fin. J'utilise scipy-cluster pour la partie clustering maintenant. C'est l'implémentation la plus polyvalente que j'ai trouvée jusqu'à présent. Je pense que je vais utiliser libSVM (il a une interface Python maintenant) pour la partie SVM. J'ai choisi Python parce qu'il n'y avait pas vraiment d'implémentation appropriée du clustering hiérarchique en C++ à trouver (l'interface Python est en cours de développement). Bibliothèque de clustering C est spécialisé pour les microarrays et ne supporte pas les données multidimensionnelles).

4voto

griffin Points 990

Ce n'est pas du C++, mais vous pouvez envisager d'utiliser R. En particulier, jetez un œil à la vue de l'apprentissage machine sur CRAN qui montre plusieurs des bibliothèques ci-dessus, y compris Weka et libsvm.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X