8
votes

Algorithme pour générer une hiérarchie de concept numérique

J'ai quelques ensembles de données numériques que j'ai besoin pour créer une hiérarchie de concept pour. Pour l'instant, je le faisais manuellement en observant les données (et un linecharmart correspondant). Basé sur mon intuition, j'ai créé des hiérarchies acceptables.

Cela semble être une tâche pouvant être automatisée. Est-ce que quelqu'un sait s'il y a un algorithme pour générer une hiérarchie de concept pour les données numériques?


Pour donner un exemple, j'ai le jeu de données suivant: < Pré> xxx

 text alt

pour lequel j'ai créé la hiérarchie suivante:

  • le plus bas (<1000)
  • LOW (1000 - 2500)
  • Moyen (2501 - 7500)
  • HIGH (7501 - 30000)
  • le plus élevé (> 30000)

0 commentaires

6 Réponses :


5
votes

Peut-être avez-vous besoin d'un clustering algorithme?

citant de la liaison:

L'analyse du cluster ou la clustering est la affectation d'un ensemble d'observations dans des sous-ensembles (appelés clusters) afin que Les observations dans le même groupe sont semblable en quelque sorte. Le clustering est un méthode d'apprentissage non supervisé, et un Technique commune pour les données statistiques Analyse utilisée dans de nombreux champs


2 commentaires

Merci, cela semble être ce dont j'ai besoin. Je lis jusqu'à présent.


Le problème avec le regroupement de ce jeu de données (Eh bien, n'importe quel jeu de données qui n'est pas réellement pointé dans certains espaces) va choisir une mesure de distance appropriée pour tout algorithme avec lequel vous allez. Je vais deviner une simple distance euclidienne va causer des problèmes que vous recherchez de petites gammes (1000-2500) dans certaines zones où elles sont plus étroitement espacées et beaucoup plus grandes (7501-30000) où elles ne sont pas. Peut-être quelque chose comme euclidien sur l'espace journal? Il devrait être facile de le donner au moins.



3
votes

Je pense que vous recherchez quelque chose d'appréhension à discrétisation de données qui est assez courante dans AI Convertir des données continues (ou des données discrètes avec un nombre aussi grand nombre de classes pour être difficile à manier) dans des classes discrètes.

Je sais que Weka utilise la méthode MDL de Fayyad et Irani ainsi que la méthode MDL de Kononeko, je verrai si je peux creuser certaines références.


2 commentaires

+1 pour une idée de discrétisation, bien que les méthodes MDL- / Entropy basées sur les entropies que vous avez mentionnées soient toutes deux des discrétisations supervisées qui ne sont pas le cas ici ..


Oui, c'est un bon appel. La dernière fois que je devais faire une discrétisation consistait à former un classificateur naïf Bayes (supervisé, évidemment).



4
votes

Jenks Natural Breaks est un schéma de clustering à dimension unique très efficace: http: / /www.spaialanalysisonisonline.com/output/html/univariateclassificationsChemes.html#_ref116892931

Comme les commentaires ont noté, cela est très similaire à K-moyen. Cependant, je l'ai trouvé encore plus facile à mettre en œuvre, en particulier la variation trouvée dans la cartographie de Borden Dent: http://www.amazon.com/cartography-thematic-borden-dent/dp/0697384950


3 commentaires

Intéressant. Savez-vous s'il y a une implémentation disponible?


Il est intégré à ArcGIS, si vous avez accès à cela.


La description des pauses naturelles de Jenk me rappelle beaucoup de K-moyen, étant donné que vos données n'ont qu'une dimension. La fin de l'article à en.wikipedia.org/wiki/k-Means_clustering donne des pointeurs sur des implémentations de k-moyen.




0
votes

Je me demandais.

Apparemment, ce que vous recherchez sont des pauses propres. Donc, avant de vous lancer dans des algorithmes compliqués, vous pouvez peut-être envisager une approche différentielle. P> xxx pré>

maintenant en fonction du nombre de pauses que nous recherchons, c'est une question de les sélectionner: p>

2 categories: [1, 1.2] + [4, 5, 10]
3 categories: [1, 1.2] + [4, 5] + [10]


0 commentaires

1
votes

Ce n'est qu'un problème 1 dimensionnel, il peut donc y avoir une solution de programmation dynamique. Supposons qu'il est logique de prendre les points dans l'ordre trié, puis de faire des coupes N-1 pour générer n grappes. Supposons que vous puissiez écrire une fonction de pénalité F () pour chaque cluster, telle que la variance dans le cluster, ou la distance entre min et max dans le cluster. Vous pouvez ensuite minimiser la somme de F () évaluée à chaque cluster. Travaillez d'un point à la fois, de gauche à droite. À chaque point, pour 1 .. # Clusters - 1, travaillez la meilleure façon de diviser les points jusqu'à ce que de nombreuses clusters et stockent le coût de cette réponse et l'emplacement de sa scission la plus à droite. Vous pouvez le calculer sur le point P et la taille du cluster C comme suit: Considérez toutes les coupes possibles à gauche de P. Pour chaque coupe Ajoutez F () évaluée sur le groupe des points à droite de la coupe au coût (stocké). de la meilleure solution pour la taille du cluster C-1 au point juste à gauche de la coupe. Une fois que vous avez travaillé à l'extrême droite, faites la même chose une fois de plus pour déterminer la meilleure réponse pour la taille du cluster C et utiliser les emplacements stockés des diviseurs les plus à droite pour récupérer tous les scissions qui donnent la meilleure réponse.

Cela pourrait effectivement être plus cher qu'une variante K-moyen, mais présente l'avantage de garantir une meilleure réponse globale (pour votre choisi F () sous ces hypothèses).


1 commentaires

Cela ressemble à des pauses naturelles Jenks