défi d'apprentissage de la machine: programme diagnostic en Java / Groovy (datamining, l'apprentissage de la machine)

StackOverflow https://stackoverflow.com/questions/1836853

Question

Je prévois de développer un programme en Java qui fournira le diagnostic. L'ensemble de données est divisé en deux parties l'une pour la formation et l'autre pour les tests. Mon programme devrait apprendre à classer à partir des données de formation (BTW contenant réponse à 30 questions chacun dans la nouvelle colonne, chaque enregistrement de nouvelle ligne la dernière colonne sera diagnostic 0 ou 1, dans la partie test de la colonne de diagnostic de données sera vide - ensemble de données contient environ 1000 dossiers), puis faire des prédictions en partie de test de données: /

Je ne l'ai jamais fait quelque chose de semblable, donc je vais apprécier des conseils ou des informations sur la solution à un problème similaire.

Je pensais à Library Machine Java Learning ou Java Data Mining package mais je ne suis pas sûr si elle est bonne direction ...? et je ne suis toujours pas sûr de savoir comment relever ce défi ...

S'il vous plaît conseiller.

Bonne chance!

Était-ce utile?

La solution

Salut Comme l'a dit Gann Bierner, c'est un problème de classification. Le meilleur algorithme de classification pour vos besoins que je connaisse est, algorithme Ross Quinlan. Il est conceptuellement très facile à comprendre.

Pour les implémentations impromptu des algorithmes de classification, le meilleur pari est Weka. http://www.cs.waikato.ac.nz/ml/weka/. J'ai étudié Weka mais non utilisé, comme je l'ai découvert un peu trop tard.

J'ai utilisé une mise en œuvre beaucoup plus simple appelé JadTi. Il fonctionne très bien pour les petits ensembles de données tels que le vôtre. Je l'ai utilisé un peu, peut ainsi dire en toute confiance donc. JadTi se trouvent à:

http: //www.run.montefiore.ulg. ac.be/~francois/software/jaDTi/

Ceci étant dit, votre défi sera de construire une interface utilisable sur Internet. Pour ce faire, l'ensemble de données sera d'une utilité limitée. L'ensemble de données fonctionne essentiellement sur la prémisse que vous avez déjà l'ensemble de la formation, et vous alimentent le nouvel ensemble de données de test en une seule étape, et vous obtenez la réponse (s) immédiatement.

Mais ma demande, sans doute aussi la vôtre, est une étape par étape la découverte de l'utilisateur, avec des fonctionnalités de revenir en arrière sur les nœuds de l'arbre de décision.

Pour construire une telle application, j'ai créé un document PMML de mon jeu de formation, et construit un moteur Java qui traverse chaque nœud de l'arbre demandant à l'utilisateur de donner une entrée (texte / radio / liste) et utiliser les valeurs que les entrées à l'autre attribut de noeud possible.

La norme PMML est disponible ici: http://www.dmg.org/ Ici, vous avez besoin le TreeModel seulement. NetBeans XML Plugin est un bon éditeur de schéma courant pour la création PMML. XML Altova peut faire un meilleur travail, mais les coûts $$.

Il est également possible d'utiliser un SGBDR pour stocker votre ensemble de données et créer le PMML automagiquement! Je ne l'ai pas essayé.

Bonne chance avec votre projet, s'il vous plaît ne hésitez pas à me faire savoir si vous avez besoin d'autres entrées.

Autres conseils

Je recommande fortement d'utiliser Weka pour votre tâche
Sa collection d'algorithmes d'apprentissage machine avec un utilisateur frontal convivial qui facilite beaucoup de différents types de stratégies de fonction et de sélection de modèle
Vous pouvez faire beaucoup de choses vraiment compliquées en utilisant ce sans vraiment avoir à faire un codage ou mathématiques
Les fabricants ont également publié un assez bon manuel qui explique les aspects pratiques de l'exploration de données
Une fois que vous obtenez le coup de lui, vous pouvez utiliser son API pour intégrer l'une de ses classificateurs dans vos propres programmes java

Il existe différents algorithmes qui entrent dans la catégorie de « l'apprentissage de la machine », et qui est bon pour votre situation dépend du type de données que vous avez affaire.

Si vos données sont essentiellement constituées d'applications d'un ensemble de questions à un ensemble de diagnostics dont chacun peut être oui / non, alors je pense que les méthodes qui pourraient éventuellement travailler comprennent les réseaux et les méthodes de neurones pour la construction automatique d'un arbre de décision fondée sur les données de test.

Je jeter un oeil à quelques-uns des textes standards tels que Russel & Norvig ( « Intelligence artificielle: une approche moderne ») et d'autres introductions à l'apprentissage AI / machine et voir si vous pouvez facilement adapter les algorithmes qu'ils mentionnent à vos données particulières. Voir aussi O'Reilly, « Programmation Intelligence Collective » pour un code Python exemple d'un ou deux algorithmes qui pourraient être adaptables à votre cas.

Si vous pouvez lire l'espagnol, la maison d'édition mexicaine Alfaomega ont également publié diverses bonnes introductions liées à l'AI au cours des dernières années.

Ceci est un problème de classification, pas vraiment l'exploration de données. L'approche générale est d'extraire les caractéristiques de chaque instance de données et de laisser l'algorithme de classification apprendre un modèle à partir des caractéristiques et des résultats (qui pour vous est 0 ou 1). On peut supposer que chacun de vos 30 questions serait sa propre fonction.

Il existe de nombreuses techniques de classification que vous pouvez utiliser. machines à vecteurs de support est populaire est l'entropie maximale. Je ne l'ai pas utilisé la bibliothèque Java Machine Learning, mais un coup d'oeil je ne vois pas non plus de ces derniers. Le projet OpenNLP a une implémentation d'entropie maximale. Libsvm a un vecteur de soutien mise en œuvre machine. Vous aurez presque certainement de modifier vos données à quelque chose que la bibliothèque peut comprendre.

Bonne chance!

Mise à jour: Je suis d'accord avec l'autre commentateur que Russel et Norvig est un grand livre AI qui traite une partie de cela. « Motif de reconnaissance et d'apprentissage machine » Bishop discute des problèmes de classification en profondeur si vous êtes intéressé par le bas et les détails sales.

Votre tâche est classique pour les réseaux de neurones, qui sont destinés tout d'abord résoudre exactement les tâches de classification. réseau de neurones a assez simple réalisation dans toutes les langues, et il est le « mainstream » de « l'apprentissage de la machine », plus proche de l'IA que tout autre. Vous implémentez juste (ou obtenir la mise en œuvre existante) standart réseau de neurones, par exemple réseau à plusieurs couches avec l'apprentissage par la propagation des erreurs de retour, et lui donner des exemples d'apprentissage dans le cycle. Après un certain temps de cet apprentissage, vous obtiendrez travailler sur des exemples concrets. Vous pouvez en savoir plus sur les réseaux de neurones à partir d'ici: http://en.wikipedia.org/wiki/Neural_network http://en.wikipedia.org/wiki/Artificial_neural_network vous pouvez également obtenir des liens vers de nombreuses implémentations prêts ici: http://en.wikipedia.org/wiki/Neural_network_software

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top