Jest to kontynuacja poprzedniego postu: Algorytmy uczenia maszynowego dla klasyfikacji pokrycia terenu .
Wydaje się, że metoda klasyfikacji Random Forest (RF) nabiera dużego rozmachu w świecie teledetekcji. RF szczególnie mnie interesuje ze względu na wiele jego mocnych stron:
- Nieparametryczne podejście dostosowane do danych z teledetekcji
- Wysoka zgłoszona dokładność klasyfikacji
- Podaje się zmienne znaczenie
Biorąc pod uwagę te mocne strony, chciałbym przeprowadzić klasyfikację gruntów w Losowym Lesie przy użyciu zdjęć w paśmie 4 w wysokiej rozdzielczości. Istnieje wiele materiałów i badań na temat zalet Losowego Lasu, ale bardzo mało informacji na temat tego, jak właściwie przeprowadzić analizę klasyfikacji. Znam regresję RF za pomocą R i wolałbym używać tego środowiska do uruchamiania algorytmu klasyfikacji RF.
Jak gromadzić, przetwarzać i wprowadzać dane szkoleniowe (tj. W oparciu o zdjęcia lotnicze CIR o wysokiej rozdzielczości) do algorytmu Random Forest za pomocą R? Byłoby bardzo mile widziane wszelkie porady dotyczące sposobu tworzenia sklasyfikowanego rastra pokrycia terenu.
Odpowiedzi:
Nie jestem pewien, czy rozumiem, co rozumiesz przez „zbieranie” danych. Jeśli masz na myśli digitalizację i przypisywanie klas do pojedynków, najlepiej to zrobić w GIS. Istnieje wiele bezpłatnych opcji, które byłyby odpowiednie (np. QGIS, GRASS). Idealnie byłoby mieć dane terenowe do trenowania klasyfikacji.
Procedura klasyfikacji za pomocą lasów losowych jest dość prosta. Możesz odczytać dane treningowe (tj. Plik kształtu) za pomocą „rgdal” lub „maptools”, odczytać dane spektralne za pomocą
raster::stack
, przypisać wartości rastrowe do punktów treningowych za pomocą,raster:extract
a następnie przekazać to dorandomForest
. Będziesz musiał przekonwertować kolumnę „klasy” na czynnik, aby RF rozpoznał model jako instancję klasyfikacji. Gdy już masz model dopasowania, możesz użyć funkcji przewidywania, przekazując ją do stosu rastrowego. Będziesz musiał przekazać standardowe argumenty do przewidywania oprócz tych specyficznych dla funkcji przewidywania rastrowego. Pakiet rastrowy ma możliwość obsługi rastrów „poza pamięcią” i jako taki jest bezpieczny dla pamięci, nawet przy bardzo dużych rastrach. Jednym z argumentów funkcji przewidywania rastra jest „nazwa pliku” pozwalająca na zapisanie rastra na dysku. W przypadku problemu wieloklasowego musisz ustawić type = "response" i index = 1, co spowoduje wyświetlenie liczby całkowitej rastra twoich klas.Należy pamiętać o kilku zastrzeżeniach :
Mam funkcje wyboru modelu, nierównowagi klas i walidacji w pakiecie rfUtilities dostępnym na CRAN.
Oto prosty kod na początek.
źródło
Wiem, że ten wątek jest trochę stary, ale dla każdego, kto chce spróbować sklasyfikować dane z teledetekcji
R
, wydano bardzo obiecujący nowy pakiet.install.packages("RSToolbox")
Zawiera funkcje zarówno do klasyfikacji bez nadzoru, jak i nadzorowanej (przy użyciu losowych lasów). Więcej informacji można znaleźć tutaj - http://bleutner.github.io/RStoolbox/
źródło
Tu i tutaj są tutoriale na temat nadzorowanej klasyfikacji / regresji z R, która zawiera przykłady RandomForest.
źródło
Ponieważ problemem tutaj było sklasyfikowanie obrazu CIR o wysokiej rozdzielczości, sugeruję, aby nie stosować tradycyjnego podejścia (opartego na pikselach) stosowanego do danych satelitarnych, ale aby przeprowadzić analizę segmentacji obrazu lotniczego, a następnie użyć klasy (RF).
źródło