Agrupe Big Data em R e a amostragem é relevante?


13

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


O único método de cluster que eu sei que é para big data (por exemplo, milhões de casos) e pode aceitar variáveis ​​nominais junto com as numéricas é o cluster TwoStep encontrado no SPSS.
precisa

Respostas:


4

O(n3)O(n2)

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!

O(neuogn)

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.


Não ajudará o OP aqui, mas no caso de outra pessoa que tenha números de amostra "intermediários": também haverá um cluster rápido para R (consulte math.stanford.edu/~muellner/fastcluster.html ).
Cbeleites suporta Monica

Oi Anony-Mousse, você poderia me indicar alguns dos algoritmos que usam aceleração da estrutura de índice? Muito obrigado!

Por exemplo, o DBSCAN pode ser bem acelerado com índices que suportam consultas de intervalo epsilon. Provavelmente também significa agrupar turnos. Optics, que também pode ser acelerado desta forma, pode ser visto como uma versão mais avançada do agrupamento de ligação (você poderia chamá-lo de "densidade hierárquica ligação agrupamento")
parou - anony-Mousse

2

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


oi zzk, obrigado pela resposta. Eu li sobre Clara antes, mas parece que ela fornece apenas métricas euclidiana e manhattan. O principal problema é que meu conjunto de dados possui variáveis ​​numéricas e nominais. Portanto, o uso de nenhuma métrica para medição de distância não é apropriado.

ah sim, atualmente isso também é uma limitação para mim. Acredito que o método possa realmente ser feito em qualquer distância arbitrária, mas ainda não me preocupei em examinar o código-fonte para ver se ele pode ser alterado.
Zzk 07/04

0

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.


2
Parece uma boa ideia, mas pode ser um pouco esparsa. Você pode explicar um pouco isso para explicar o que é e por que isso ajudaria?
gung - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.