IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Clustering d'un ensemble de données de différentes dimensions


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut Clustering d'un ensemble de données de différentes dimensions
    Bonjour,

    J'ai un dataset de n données, où chaque donnée est représenté par un ensemble d'attributs que d’extrait à partir de la donnée. Généralement, les algorihmes de clustering ont besoin que les données soient de même dimensions (le même nombre d'attributs), c'est à dire, les données en entrées sont représentés par une matrice X de n*d (de "n" donnée, et chaque donnée a "d" attributs). Dans mon cas, j'ai préalablement extrait des attributs à partir de mes données, mais le nombre d'attributs extraits à partir de chaque donnée est différent (j'ai donc un dataset X où les données n'ont pas le même nombre d'attributs). Y'a il une façon quelconque de les adapter afin de les classer en utilisant des algorithmes de clustering classiques qui requiers que données en entrée soient de même dimensions (pour pouvoir calculer une distance entre eux).

    Pour mieux comprendre, je précise que chaque donnée de mon dataset est une image contenant un mot manuscrit. J'extrais toujours "m" attributs à partir de chaque composante connexe (une sorte de pseudo-mots) du mot, donc si le mot contiens "c" composantes connexes, le nombre d'attributs extraits à partir de ce mot est d = m*c. Le nombre d'attributs extraits pour chaque donnée (mot) de mon dataset dépend donc de "c" (le nombre de composantes connexes que ce mot contiens) et "c" peut être différent d'un mot à un autre (même pour 2 mots de la même classe, mais bon moins souvent que 2 mots de classes différentes).

    Merci d'avance,

  2. #2
    Membre Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Par défaut
    Bonsoir,

    un problème de clustering est posé dans un espace (vectoriel) et suppose donc que les données appartiennent à cet espace et soient par conséquent de même dimension. Il faut donc intervenir en amont, i.e. modifier le codage des données.

    Si j'ai deux vecteurs de dimensions respectives n et m, avec n différent de m, comment puis-je les sommer? La réponse à cette question est : "la somme en question n'est pas définie" (cf la définition des espaces vectoriels si tu ne vois pas pourquoi). Il est possible qu'on te propose du bidouillage, par exemple du "padding", mais le pragmatisme ne doit pas prévaloir en sciences.

    Ton problème de clustering est directement lié à ce problème de somme et adapter des algorithmes a une situation qui n'a pas lieu d'être n'est donc pas recommandée.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Bonsoir,

    un problème de clustering est posé dans un espace (vectoriel) et suppose donc que les données appartiennent à cet espace et soient par conséquent de même dimension. Il faut donc intervenir en amont, i.e. modifier le codage des données.

    Si j'ai deux vecteurs de dimensions respectives n et m, avec n différent de m, comment puis-je les sommer? La réponse à cette question est : "la somme en question n'est pas définie" (cf la définition des espaces vectoriels si tu ne vois pas pourquoi). Il est possible qu'on te propose du bidouillage, par exemple du "padding", mais le pragmatisme ne doit pas prévaloir en sciences.

    Ton problème de clustering est directement lié à ce problème de somme et adapter des algorithmes a une situation qui n'a pas lieu d'être n'est donc pas recommandée.
    Oui je comprends bien que les données à classer doivent normalement être de même dimensions, mais vous proposez quoi par rapport à ce que j'ai expliqué à la fin de mon premier poste ? i.e. une donnée est segmenté en "C" parties (C est souvent différent d'une donnée à une autre), et un nombre fixe "CONST" de features est extrait sur chaque partie. Et notez dans ce cas, qu'un padding des données n'est non seulement pas une bonne idée, mais ne réglera pas le problème, vu qu'il donnera lieu à une somme (ou distance ...) erroné entre deux vecteurs.
    Notez que je ne peux pas vraiment changer la manière dont j'extrait ces valeurs (CONST valeurs fixes et de signification connu sont extraits sur chaque partie du mot qui représente presque une lettre) parceque c'est "la" façon de procéder dans le contexte de mots manuscrits. Notez aussi que ces données de dimensions C*CONST (C étant variable) peuvent être utilisés directement en entrée pour faire du clustering via un HMM (le modèle de markov caché tolère que le nombre de valeurs par donnée soit différent), mais bon ce n'est pas un HMM que je veux utiliser.

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Il faudrait savoir si le nombre de composantes "c" est significatif, ou alors s'il est possible de fusionner/séparer arbitrairement les c*m valeurs afin d'obtenir un vecteur de taille quelconque "k".

    Auquel cas, ca revient a "resampler" un signal de longueur "c" (composé de "m" canaux), afin d'obtenir un signal de longueur "k" (composé de "m" canaux). Et donc, de resampler chaque canal.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 13
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Il faudrait savoir si le nombre de composantes "c" est significatif, ou alors s'il est possible de fusionner/séparer arbitrairement les c*m valeurs afin d'obtenir un vecteur de taille quelconque "k".
    Il est significatif, je ne peux pas fusionner/séparer arbitrairement les c*m valeurs.

    Cependant, j'ai une autre question à laquelle si vous pouvez répondre, ça pourrait m'aider à régler le problème initiale:
    Supposant que j'ai un dataset éparse, où chaque donnée est décrite par un vecteur de 1000 éléments, chaque élément de ce vecteur peut être soit 0 ou 1 (un vecteur contiendra plein de "zéros" et quelque "uns" éparpillés); Auriez-vous (connaitriez-vous) une fonction de distance qui sera convenable dans cette situation, pour les clusterer ?

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par klandah Voir le message
    Supposant que j'ai un dataset éparse, où chaque donnée est décrite par un vecteur de 1000 éléments, chaque élément de ce vecteur peut être soit 0 ou 1 (un vecteur contiendra plein de "zéros" et quelque "uns" éparpillés); Auriez-vous (connaitriez-vous) une fonction de distance qui sera convenable dans cette situation, pour les clusterer ?
    Tout dépend de ta définition de ce qui est "proche" et "éloigné".

    Sans plus d'information je dirais le "Dynamic Time Warping"...
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. "copie" de l'ensemble de données entre 2 DataSet
    Par jakouz dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/08/2005, 11h34
  2. ensemble de données pas en mode edition
    Par XloX dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/06/2005, 12h17
  3. [DBGrid] Affichage d'un sous-ensemble de données
    Par Jean-Jacques Engels dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/09/2004, 16h31
  4. ensemble de données fermées...
    Par vasaldo dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/06/2004, 16h58
  5. Ensemble de données temporaires
    Par pascalT dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/03/2003, 07h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo