ランダムフォレストの土地被覆分類の実行方法


32

これは、以前の投稿「土地被覆分類のための機械学習アルゴリズム」へのフォローアップです。

と思われるランダムフォレスト(RF)分類方法は、リモートセンシングの世界で非常に勢いを増しています。RFには多くの長所があるため、特に興味があります。

  • リモートセンシングデータに適したノンパラメトリックアプローチ
  • 報告された高い分類精度
  • 変数の重要度が報告されます

これらの長所を考えると、高解像度の4バンド画像を使用してランダムフォレストの土地分類を実行したいと思います。ランダムフォレストの利点を宣伝する多くの資料と研究がありますが、分類分析を実際に実行する方法に関する情報はほとんどありません。私はRを使用したRF回帰に精通しており、この環境を使用してRF分類アルゴリズムを実行することを好みます。

Rを使用してランダムフォレストアルゴリズムに(つまり、高解像度CIR航空写真に基づいて)トレーニングデータを収集、処理、および入力するにはどうすればよいですか?分類された土地被覆ラスターの作成方法に関する段階的なアドバイスは大歓迎です。


私はこのラスター分類を理解しようとしています。なぜなら、解像度10cmの画像を持つRFクラス(種分布用)に取り組んでいるからです。したがって、ポイントシェイプを入力することはできず、ラスターのみを入力すると思います。* pngまたは* tif -filesを使用するにはどうすればよいですか?
steveomb

回答:


29

「収集」データの意味を理解しているかどうかはわかりません。ヘッズアップデジタル化とクラスの割り当てを参照している場合、これはGISで行うのが最適です。適切な無料オプションが多数あります(つまり、QGIS、GRASS)。理想的には、分類を訓練するためのフィールドデータがあります。

ランダムフォレストを使用した分類の手順は非常に簡単です。「rgdal」または「maptools」を使用してトレーニングデータ(つまり、ポイントシェープファイル)を読み取り、を使用してスペクトルデータを読み取り、を使用しraster::stackてラスター値をトレーニングポイントに割り当て、raster:extract次にこれを渡すことができますrandomForest。モデルを分類インスタンスとしてRFに認識させるには、「クラス」列をファクターに強制する必要があります。フィットモデルを作成したら、予測関数を使用してラスタースタックに渡すことができます。ラスター予測関数に固有の引数に加えて、予測する標準引数を渡す必要があります。ラスタパッケージには、「メモリ不足」のラスタを処理する機能があるため、非常に大きなラスタであってもメモリは安全です。ラスター予測関数の引数の1つは「ファイル名」で、ラスターをディスクに書き込むことができます。マルチクラスの問題の場合、type = "response"およびindex = 1を設定する必要があります。これにより、クラスの整数ラスターが出力されます。

注意すべきいくつかの注意事項があります。

  1. 応答変数(y)または方程式の右側にある因子(x)に32レベルを超えることはできません
  2. クラスはバランスが取れていなければなりません。30%のルールは、従うのに適したルールです。つまり、1つのクラスの観測値が他のクラスよりも30%以上多い場合、問題は不均衡になり、結果に偏りが生じる可能性があります。
  3. RFがオーバーフィットできないことは間違っています。アンサンブルを過度に相関させると、モデルをオーバーフィットできます。これを回避する良い方法は、予備モデルを実行し、エラー安定化をプロットすることです。経験則として、ntreeパラメーターのエラーを安定させるために必要なブートストラップの数の2倍を選択します。これは、変数の相互作用がエラーよりも遅い速度で安定するためです。モデルに多くの変数を含めない場合、このパラメーターを使用することでより保守的になります。
  4. ノードの純度を変数の重要度の尺度として使用しないでください。精度の平均低下のように置換されません。

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)

RFとpredict()を使用してキャノピーカバーを特定すると、かなり良い結果が得られています。ただし、ISODATAアルゴリズムを使用した場合よりも良い結果を出すことはできません。トレーニングサンプルにバイアスがかかっているか、スペクトルのオーバーラップが多すぎると思われます。より良い結果を生み出す可能性のある、監視されていないRFの実装はありますか?ISODATAアルゴリズムのように、クラスの数を出力に割り当てることは可能ですか?
アーロン

3
@Aaron、ラベルなし(監視なし)RFを実行することは可能ですが、結果を処理するのは困難です。YaImputeパッケージで利用可能なRF補完方法を調べることをお勧めします。これは、発生しているバイアス/不均衡の問題の一部に対処する場合があります。
ジェフリーエヴァンス

5

私はこのスレッドが少し古いことを知っていますが、リモートセンシングデータの分類を試みたい人のためRに、非常に有望な新しいパッケージがリリースされました。

install.packages("RSToolbox")

教師なし分類と教師付き分類(ランダムフォレストを使用)の両方の関数が付属しています。詳細については、http://bleutner.github.io/RStoolbox/をご覧ください。


このパッケージでの作業に感謝します。明確化の1つとして、キャレットを使用してランダムフォレストを指定していますか?その場合、ドキュメントでこれを非常に明確にする必要があります。キャレットパッケージは、元のBreiman(2001)定義とは異なるノード分割統計を使用します。統計はStrobl et al。、(2007)に準拠しており、提案された統計が有効な場合は、彼女のシミュレーション条件を購入したことがありません。さらに、観察されたバイアスは要因レベルの変動に基づいています。元のエントロピー統計が好きなので、キャレットは使用しません。
ジェフリーエヴァンス

こんにちはジェフリー、私はパッケージの作者ではないことを恐れています。彼の詳細は、私が提供したリンクで見つけることができます。
JPD


0

ここでの問題は高解像度のCIR画像の分類に関するものであるため、衛星データに使用される従来のアプローチ(ピクセルベース)を使用するのではなく、航空画像のセグメンテーション分析を作成し、クラシエ(RF)を使用することをお勧めします。


3
これが非常に有効なアプローチである場合、集約ベースの分類がユーザーのニーズを満たすという仮定をしてはなりません。セグメンテーションは、計算の扱いやすさに対処するためだけでなく、特定の分析目標を満たすために適用する必要があります。これは、ピクセルベースの方法を自動的に置き換えるカートブランチ方法ではありません。統計的/空間的平滑化による情報の損失と、意図した結果とのバランスを取る必要があります。空間変動に興味がある場合は、セグメンテーションで削除できます。結果は、セグメンテーションパラメーターに大きく依存する場合もあります。
ジェフリーエヴァンス

私はあなたに完全に同意します。実際、各方法は特定の目標に向けられるべきです。これが、高解像度のCIR画像(おそらくスペクトル帯域が限られている)で、補助データまたはテクスチャ値を含むGEOBIA変数セットが、特にRFなどの分類器と組み合わせた場合に分類の最終精度を大幅に改善できることを示唆した理由です。
ビンセント
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.