海老ノート

Google Earth Engine 苦闘の記録

GEEでランダムフォレスト1:できるらしいと分かって

できたらいいな、できるはずと思っていました

GoolgeEarthEngineでランダムフォレストの分類ができるのだから、回帰もできるんじゃないかとは思っていたんですがググってもやり方が出てこなくってあれー?と思っていました。線形回帰はできるっていうのは知っていたけど、データがややこしくなってくるとそれじゃあ足りない。Rで分類器を作ってその中をほじくってGEEで条件分けとかするしかないのかなと、思っていたんですが。

超親切なチュートリアル

久しぶりにGEEをいじってみるかと思ってランダムフォレスト回帰をググったところ、教材がありました↓ 下記リンクの「04.2 DigitalSoilMappinginEarthEngine_RandomForestRegression.docx」に方法が説明されています。

fsapps.nwcg.gov

このチュートリアルは土壌中の炭素の量?マッピングという課題に対して、NDVIなどの衛星データやらDEMやらを使って答えるという内容になっています。ランダムフォレスト「回帰」にするための変更は、.setOutputMode('REGRESSION')を追記するだけと超シンプル。前に石川県の植生分類を比較したときのコードと今回のを比べてみても、ほぼ同じ。

// 分類の場合
var classifier = ee.Classifier.smileRandomForest({
                                  numberOfTrees: 500, // ntree
                                  variablesPerSplit:5,    // Rの結果からのmtry
                                  minLeafPopulation: 1,
                                  bagFraction: 0.632, // RのrandamForestパッケージのデフォルトはこの数値らしい
                                })
                          .train(trainingData, label, bands_all);

// 回帰の場合
var classifier = ee.Classifier.smileRandomForest({
                                numberOfTrees: 500,    // ntree
                                variablesPerSplit: 10, // mtry
                                minLeafPopulation: 5,  // Rule of Thumb: 1 for classification, 5 for regression
                                bagFraction: 0.632,
                                maxNodes: null,
                                seed: 0})
                          .setOutputMode('REGRESSION')
                          .train({features: training,
                                classProperty: 'population',
                                inputProperties: bands
                              });

チュートリアルを試したところGEEでもランダムフォレストはサクッと動いて、これは便利そうだと。興味のある方は是非どうぞ。

ちょうどいいネタが思いつかない

で、自分でもでもやってみたくなったわけ(といいつつほぼコピペ)ですが、面白そうなネタで使えそうなデータがない。コメの収量とか味とか、あるいはワインやコーヒーの味とかを気象データや土壌データ、NDVIなどから予測とかできると楽しそう!と思ったんですが、座標のくっついたそういうデータはネット上に見つからず。考えてみれば農家の経営にかかわる情報だから、そりゃあ勝手に公開はできないよなと反省しました。酒蔵座標×日本酒の辛さとかならできるかも、とかも思いましたが、趣味でやるにはデータ準備が面倒なのでお手軽な公開データに頼ることにしました。

とりあえず人口

というわけで、簡単に使える人口データを使ってやってみます。今回はe-statにある4次メッシュ(約500m)の人口データの関東地方分を使うことにして、GEE上にある適当なデータを使って予測してみることに。Rでも同じようなことをやってみて、結果を見てみます。

www.e-stat.go.jp