esta pergunta começou como " Agrupando dados espaciais em R " e agora foi movida para a pergunta DBSCAN.
Como as respostas à primeira pergunta sugeriram, procurei informações sobre o DBSCAN e li alguns documentos sobre. Novas questões surgiram.
O DBSCAN requer alguns parâmetros, um deles é "distância". Como meus dados são tridimensionais, longitude, latitude e temperatura, qual "distância" devo usar? qual dimensão está relacionada a essa distância? Suponho que deve ser a temperatura. Como encontro essa distância mínima com R?
Outro parâmetro é o número mínimo de pontos necessários para formar um cluster. Existe algum método para encontrar esse número? Infelizmente não encontrei.
Pesquisando através do Google, não consegui encontrar um exemplo de R para usar o dbscan em um conjunto de dados semelhante ao meu. Você conhece algum site com esse tipo de exemplo? Para que eu possa ler e tentar me adaptar ao meu caso.
A última pergunta é que minha primeira tentativa de R com DBSCAN (sem uma resposta adequada às perguntas anteriores) resultou em um problema de memória. R diz que não pode alocar vetor. Começo com uma grade espaçada de 4 km com 779191 pontos que termina em aproximadamente 300000 linhas x 3 colunas (latitude, longitude e temperatura) ao remover pontos SST não válidos. Qualquer dica para resolver esse problema de memória. Depende do meu computador ou do próprio DBSCAN?
Agradecemos a paciência em ler uma mensagem longa e provavelmente chata e por sua ajuda.
fonte
Respostas:
Eu ainda estou preso com esse problema. Recebi algumas sugestões da lista de discussão R (graças a Christian Hennig) que anexo aqui:
Fiz algumas tentativas com meus dados, mas sem sucesso:
"Sim, eu tentei o dbscan do fpc, mas ainda estou preso ao problema de memória. Em relação à sua resposta, não tenho certeza de qual parâmetro de memória devo procurar. A seguir está o código que tentei com os parâmetros do dbscan, talvez você possa veja se há algum erro.
Neste exemplo, eu me aplico apenas
dbscan()
a valores de temperatura, e não lon / lat, então oeps
parâmetro é 0,1. Como é um conjunto de dados em grade, qualquer ponto é cercado por oito pontos, então pensei que pelo menos 5 dos pontos circundantes deveriam estar dentro da distância de alcance. Mas não tenho certeza se estou obtendo a abordagem correta, considerando apenas o valor da temperatura, talvez então esteja perdendo informações espaciais. Como devo lidar com dados de longitude e latitude?As dimensões de
sst2
são: 152243 linhas x 3 colunas "Compartilho essas mensagens de correio aqui, caso algum de vocês possa compartilhar alguma luz sobre o R e o DBSCAN. obrigado novamente
fonte
O problema aqui é com R . Para que o DBSCAN seja eficaz, você precisa ter uma estrutura de índice apropriada (que precise corresponder à sua distância). R, no entanto, realmente não faz indexação. Além disso, o pacote fpc é uma implementação minimalista do DBSCAN, oferecendo apenas uma pequena parte de sua funcionalidade.
Quanto à função de distância, é aqui que o seu "conhecimento de domínio" é necessário. Se você tem uma implementação DBSCAN flexível o suficiente (é realmente fácil de implementar, o índice para torná-lo mais rápido que é muito mais difícil!), Você deve poder colocar uma distância arbitrária. Você pode fazer até duas funções de distância e valores de épsilon: os pontos devem estar no máximo a e a diferença de temperatura deve ser menor queO(n2) 10km 1K.
Veja em "Generalized DBSCAN" os princípios gerais de que o DBSCAN precisa: uma noção de "vizinhança" e uma noção de "pontos centrais" (ou "densidade").
fonte