Eu sou novo na ciência de dados e tenho um problema ao encontrar clusters em um conjunto de dados com 200.000 linhas e 50 colunas em R.
Como os dados têm variáveis numéricas e nominais, métodos como o K-significa que usa a medida de distância euclidiana não parece ser uma escolha apropriada. Então, volto-me ao PAM, agnes e hclust, que aceita uma matriz de distância como entrada.
O método daisy pode funcionar em dados de tipo misto, mas a matriz de distância é muito grande: 200.000 vezes 200.000 é muito maior que 2 ^ 31-1 (o limite de comprimento do vetor antes de R 3.0.0.)
O novo R 3.0.0 lançado ontem suporta vetores longos com comprimento maior que 2 ^ 31-1. Mas uma matriz dupla de 200.000 a 200.000 exige uma RAM contínua maior que 16Gb, o que não é possível na minha máquina.
Eu li sobre computação paralela e pacote bigmemory e não tenho certeza se eles vão ajudar: se eu estiver usando o daisy, ele gerará uma grande matriz que não pode caber na memória.
Também li sobre o post sobre amostragem: a amostragem é relevante no momento do 'big data'?
Então, no meu caso, é relevante usar amostragem no conjunto de dados, agrupar na amostra e inferir a estrutura de todo o conjunto de dados?
Você pode me dar alguma sugestão? Obrigado!
Sobre minha máquina:
R versão 3.0.0 (03-04-2013)
Plataforma: x86_64-w64-mingw32 / x64 (64 bits)
Sistema operativo: Windows 7 64bit
RAM: 16.0GB
fonte
Respostas:
O próprio PAM não deve exigir uma matriz de distância completa, mas o algoritmo é conhecido por ter uma escala ruim, pois precisa (re) computar todas as distâncias aos pares dentro de cada cluster em cada iteração para encontrar os elementos mais centrais. Isso é muito menos se você tiver um grande número de clusters, mas, no entanto, bastante caro!
No entanto, para a maioria desses algoritmos, você primeiro precisa garantir que sua função de distância seja realmente boa; é necessário considerar maneiras de acelerar as consultas usando índices apropriados.
Observe também que em muitos casos - e isso pode ser válido para o PAM - você pode executar o algoritmo em uma amostra primeiro e depois refiná-lo apenas no conjunto de dados completo. Se sua amostra for representativa, algoritmos como k-means e PAM devem fornecer essencialmente o mesmo resultado que no conjunto de dados completo.
fonte
tente a função CLARA do pacote de cluster em R. Ele implementa um algoritmo semelhante a pam subamostrando seus dados (certifique-se de fornecer tamanhos de subamostras que façam sentido para seus dados, porque os padrões são propositadamente muito pequenos). Funciona especialmente bem se os mediods em seus dados puderem ser representados por uma pequena amostra do total de dados (ou seja - há relativamente menos clusters no conjunto de dados). Dessa forma, você pode agrupar de forma eficiente com uma pequena amostra aleatória e adicionar pontos à solução de cluster pré-computada.
http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Clustering/CLARA
fonte
Você também pode aplicar várias análises de correspondência em suas variáveis qualitativas e fazer transformações em uma variável numérica.
fonte