Random Forests in unlabeled (unsupervised) mode does not return explicit classes but, rather something analogous to scaled multivariate distances which is based on node proximities. Without the proximity matrix, you do not have a usable unlabeled model. And yes, for large problems, even using a sparse matrix, the very nature of the approach causes the proximity matrix to get huge. This may very well be the reason that you have not seen published approaches using Random Forests in unsupervised remote sensing.
Based on the proximities an approach that I have seen, to derive/test clusters, is to use a modified K-means on the proximity matrix. Alternately, you may be able to trick the imputation function, using the random forests option, in the yaImpute package to perform a matrix imputation which would return something analogs to a k nearest neighbor (kNN) that could then be assigned to clusters based on a similarity matrix.
It is nothing near as straightforward as what you are thinking and I would encourage you to research this approach before jumping in with both feet.
**** Edit 12/14/2018
A few versions ago I added an unsupervised random forests function to the rfUtilities package. I would not recommend it on large data such as rasters but it is a useful clustering method. Here is a simple example.
library(rfUtilities)
library(sp)
data(meuse)
meuse <- na.omit(meuse)
n = 6
clust.meuse <- rf.unsupervised(meuse, n=n, proximity = TRUE,
silhouettes = TRUE)
( meuse$k <- clust.meuse$k )
mds <- stats:::cmdscale(clust.meuse$distances, eig=TRUE, k=n)
colnames(mds$points) <- paste("Dim", 1:n)
mds.col <- ifelse(clust.meuse$k == 1, rainbow(6)[1],
ifelse(clust.meuse$k == 2, rainbow(6)[2],
ifelse(clust.meuse$k == 3, rainbow(6)[3],
ifelse(clust.meuse$k == 4, rainbow(6)[4],
ifelse(clust.meuse$k == 5, rainbow(6)[5],
ifelse(clust.meuse$k == 6, rainbow(6)[6], NA))))))
plot(mds$points[,1:2],col=mds.col, pch=20)
pairs(mds$points, col=mds.col, pch=20)
coordinates(meuse) <- ~x+y
plot(meuse, col=mds.col, pch=19)
box()
Best Answer
First of all I should mention that this question is addressing very limited space, though important question too.
The first thing that comes to my mind on this subject that you can consider
temporal information
in short time interval. if certain values are changed in certain areas, it may be easier to detect snow.and second solution is here from National Operational Hydrologic Remote Sensing Center (NOHRSC). they use a supervised image classification algorithm to map snow and clouds.
and this image from the same place which shows Satellite channel wavelengths in microns (m), and typical reflectance spectra for snow and clouds.
And results they get: