「収集」データの意味を理解しているかどうかはわかりません。ヘッズアップデジタル化とクラスの割り当てを参照している場合、これはGISで行うのが最適です。適切な無料オプションが多数あります(つまり、QGIS、GRASS)。理想的には、分類を訓練するためのフィールドデータがあります。
ランダムフォレストを使用した分類の手順は非常に簡単です。「rgdal」または「maptools」を使用してトレーニングデータ(つまり、ポイントシェープファイル)を読み取り、を使用してスペクトルデータを読み取り、を使用しraster::stack
てラスター値をトレーニングポイントに割り当て、raster:extract
次にこれを渡すことができますrandomForest
。モデルを分類インスタンスとしてRFに認識させるには、「クラス」列をファクターに強制する必要があります。フィットモデルを作成したら、予測関数を使用してラスタースタックに渡すことができます。ラスター予測関数に固有の引数に加えて、予測する標準引数を渡す必要があります。ラスタパッケージには、「メモリ不足」のラスタを処理する機能があるため、非常に大きなラスタであってもメモリは安全です。ラスター予測関数の引数の1つは「ファイル名」で、ラスターをディスクに書き込むことができます。マルチクラスの問題の場合、type = "response"およびindex = 1を設定する必要があります。これにより、クラスの整数ラスターが出力されます。
注意すべきいくつかの注意事項があります。
- 応答変数(y)または方程式の右側にある因子(x)に32レベルを超えることはできません
- クラスはバランスが取れていなければなりません。30%のルールは、従うのに適したルールです。つまり、1つのクラスの観測値が他のクラスよりも30%以上多い場合、問題は不均衡になり、結果に偏りが生じる可能性があります。
- RFがオーバーフィットできないことは間違っています。アンサンブルを過度に相関させると、モデルをオーバーフィットできます。これを回避する良い方法は、予備モデルを実行し、エラー安定化をプロットすることです。経験則として、ntreeパラメーターのエラーを安定させるために必要なブートストラップの数の2倍を選択します。これは、変数の相互作用がエラーよりも遅い速度で安定するためです。モデルに多くの変数を含めない場合、このパラメーターを使用することでより保守的になります。
- ノードの純度を変数の重要度の尺度として使用しないでください。精度の平均低下のように置換されません。
CRANで利用可能なrfUtilitiesパッケージには、モデルの選択、クラスの不均衡、および検証のための機能があります。
始めるための簡単なコードを次に示します。
require(sp)
require(rgdal)
require(raster)
require(randomForest)
# CREATE LIST OF RASTERS
rlist=list.files(getwd(), pattern="img$", full.names=TRUE)
# CREATE RASTER STACK
xvars <- stack(rlist)
# READ POINT SHAPEFILE TRAINING DATA
sdata <- readOGR(dsn=getwd() layer=inshape)
# ASSIGN RASTER VALUES TO TRAINING DATA
v <- as.data.frame(extract(xvars, sdata))
sdata@data = data.frame(sdata@data, v[match(rownames(sdata@data), rownames(v)),])
# RUN RF MODEL
rf.mdl <- randomForest(x=sdata@data[,3:ncol(sdata@data)], y=as.factor(sdata@data[,"train"]),
ntree=501, importance=TRUE)
# CHECK ERROR CONVERGENCE
plot(rf.mdl)
# PLOT mean decrease in accuracy VARIABLE IMPORTANCE
varImpPlot(rf.mdl, type=1)
# PREDICT MODEL
predict(xvars, rf.mdl, filename="RfClassPred.img", type="response",
index=1, na.rm=TRUE, progress="window", overwrite=TRUE)