pytanie to zaczęło się jako „ klastrowanie danych przestrzennych w R ”, a teraz zostało przeniesione do pytania DBSCAN.
Ponieważ odpowiedzi na pierwsze pytanie sugerowały, że szukałem informacji o DBSCAN i czytałem kilka dokumentów na ten temat. Pojawiły się nowe pytania.
DBSCAN wymaga pewnych parametrów, jednym z nich jest „odległość”. Ponieważ moje dane są trójwymiarowe, długość, szerokość i temperatura, jakiej „odległości” powinienem użyć? który wymiar jest związany z tą odległością? Podejrzewam, że powinna to być temperatura. Jak znaleźć tak minimalną odległość za pomocą R?
Kolejnym parametrem jest minimalna liczba punktów potrzebnych do utworzenia klastra. Czy istnieje metoda znalezienia tego numeru? Niestety nie znalazłem.
Przeszukując Google, nie mogłem znaleźć R dla przykładu użycia dbscan w zbiorze danych podobnym do mojego, czy znasz jakieś strony z tego rodzaju przykładami? Więc mogę czytać i próbować dostosować się do mojej sprawy.
Ostatnie pytanie brzmi: moja pierwsza próba R z DBSCAN (bez poprawnej odpowiedzi na poprzednie pytania) spowodowała problem z pamięcią. R mówi, że nie może przydzielić wektora. Zaczynam od siatki o odległości 4 km z 779191 punktami, która kończy się w przybliżeniu 300000 rzędów x 3 kolumny (szerokość, długość i temperatura) podczas usuwania nieważnych punktów SST. Wszelkie wskazówki dotyczące rozwiązania tego problemu z pamięcią. Czy to zależy od mojego komputera, czy od samej DBSCAN?
Dziękujemy za cierpliwość, aby przeczytać długą i prawdopodobnie nudną wiadomość oraz za pomoc.
źródło
Odpowiedzi:
Nadal tkwię z tym problemem. Otrzymałem kilka sugestii z listy mailingowej R (dzięki Christianowi Hennigowi), które załączam tutaj:
Zrobiłem kilka prób z moimi danymi, ale bez powodzenia:
„Tak, próbowałem dbscan z fpc, ale nadal tkwi w problemie z pamięcią. Jeśli chodzi o twoją odpowiedź, nie jestem pewien, który parametr pamięci powinienem sprawdzić. Poniżej znajduje się kod, który wypróbowałem z parametrami dbscan, może możesz sprawdź, czy jest jakaś pomyłka.
W tym przykładzie mam zastosowanie tylko
dbscan()
do wartości temperatur, a nie lon / lat, więceps
parametr wynosi 0,1. Ponieważ jest to siatkowy zestaw danych, każdy punkt jest otoczony ośmioma punktami danych, dlatego pomyślałem, że co najmniej 5 otaczających punktów powinno znajdować się w odległości zasięgu. Ale nie jestem pewien, czy stosuję właściwe podejście, biorąc pod uwagę tylko temperaturę, może wtedy brakuje mi informacji przestrzennej. Jak postępować z danymi dotyczącymi długości i szerokości geograficznej?Wymiary
sst2
to: 152243 rzędy x 3 kolumny ”Udostępniam tutaj te wiadomości e-mail na wypadek, gdyby ktokolwiek z was mógł podzielić się nieco informacjami na temat R i DBSCAN. Dzięki jeszcze raz
źródło
Problem polega na tym ze R . Aby DBSCAN był skuteczny, musisz mieć odpowiednią strukturę indeksu (która musi pasować do twojej odległości). R jednak tak naprawdę nie wykonuje indeksowania. Dodatkowo pakiet fpc jest minimalistyczną implementacją DBSCAN, oferującą jedynie niewielką część jego funkcjonalności.
Jeśli chodzi o funkcję odległości, to tutaj potrzebna jest „wiedza o domenie”. Jeśli masz wystarczająco elastyczną implementację DBSCAN (jest to naprawdę łatwe do wdrożenia, indeks, aby uczynić ją szybszą niżO (n2)) jest o wiele trudniejsze!) powinieneś być w stanie pokonać dowolną odległość. Możesz nawet ustawić dwie funkcje odległości i wartości epsilon: punkty muszą być co najwyżej10 k m z dala, a różnica temperatur musi być mniejsza niż 1 K..
Spójrz na „Uogólnioną DBSCAN” po ogólne zasady, których potrzebuje DBSCAN: pojęcie „sąsiedztwa” i pojęcie „głównych punktów” (lub „gęstości”).
źródło