Je suis nouveau dans la science des données et j'ai du mal à trouver des clusters dans un ensemble de données avec 200 000 lignes et 50 colonnes en R.
Étant donné que les données ont des variables numériques et nominales, des méthodes comme K-means qui utilise la mesure de distance euclidienne ne semblent pas être un choix approprié. Je me tourne donc vers PAM, agnes et hclust qui accepte une matrice de distance en entrée.
La méthode de marguerite peut fonctionner sur des données de type mixte mais la matrice de distance est tout simplement trop grande: 200 000 fois 200 000 est beaucoup plus grande que 2 ^ 31-1 (la limite de longueur de vecteur avant R 3.0.0.)
Le nouveau R 3.0.0 publié hier prend en charge les vecteurs longs avec une longueur supérieure à 2 ^ 31-1. Mais une double matrice de 200 000 par 200 000 nécessite une RAM continue supérieure à 16 Go, ce qui n'est pas possible sur ma machine.
J'ai lu des informations sur le calcul parallèle et le package bigmemory et je ne sais pas s'ils vont aider: si j'utilise daisy, cela générera une grande matrice qui ne peut de toute façon pas tenir en mémoire.
J'ai également lu un article sur l'échantillonnage: l'échantillonnage est-il pertinent à l'époque des «mégadonnées»?
Donc, dans mon cas, est-il pertinent d'utiliser l'échantillonnage sur l'ensemble de données, de regrouper l'échantillon et de déduire ensuite la structure de l'ensemble de données?
Pouvez-vous me donner quelques suggestions? Je vous remercie!
À propos de ma machine:
R version 3.0.0 (2013-04-03)
Plate-forme: x86_64-w64-mingw32 / x64 (64 bits)
Système d'exploitation: Windows 7 64 bits
RAM: 16,0 Go
la source
Réponses:
PAM lui-même ne devrait pas nécessiter une matrice de distances complète, mais l'algorithme est connu pour évoluer mal, car il doit ensuite (rec) calculer toutes les distances par paires au sein de chaque cluster à chaque itération pour trouver les éléments les plus centraux. C'est beaucoup moins si vous avez un grand nombre de clusters, mais néanmoins assez cher!
Cependant, pour la plupart de ces algorithmes, vous devez d'abord vous assurer que votre fonction de distance est vraiment bonne; vous devez ensuite envisager des moyens d'accélérer les requêtes en utilisant des index appropriés.
Notez également que dans de nombreux cas - et cela peut très bien s'appliquer à PAM - vous pouvez d'abord exécuter l'algorithme sur un échantillon , puis l'affiner uniquement sur l'ensemble de données complet. Si votre échantillon est représentatif, des algorithmes tels que k-means et PAM devraient vous donner essentiellement le même résultat que sur l'ensemble de données complet.
la source
essayez la fonction CLARA du package de cluster dans R. Elle implémente un algorithme de type pam en sous-échantillonnant vos données (assurez-vous de fournir des tailles de sous-échantillon qui ont du sens pour vos données car les valeurs par défaut sont délibérément trop petites). Cela fonctionne particulièrement bien si les périodes intermédiaires de vos données peuvent être représentées par un petit échantillon du total des données (c'est-à-dire qu'il y a relativement moins de grappes dans l'ensemble de données). De cette façon, vous pouvez regrouper efficacement avec un petit échantillon aléatoire et ajouter des points à la solution de regroupement précalculée.
http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA
la source
Vous pouvez également appliquer une analyse de correspondance multiple sur vos variables qualitatives et effectuer des transformations en une variable numérique.
la source