石川チャレンジ3:Rで実験
教師データはいくつ?
とりあえず10000のランダムなポイントでとしてはじめたんでした。で、サンプリングしてRに持ってきてみたんですけど、データの偏りがすごい。
開放水域 | 耕作地 | 高木林 | 湿地 | 人工物 | 水田 | 草地 | 低木林 | 裸地 |
---|---|---|---|---|---|---|---|---|
2723 | 225 | 5949 | 8 | 627 | 1083 | 236 | 231 | 82 |
いやー、どう考えても8点(湿地)だけではどうしようもない。なので100,000くらいに増やしてみたんです。が、そしたら後々のランダムフォレストの分類機を作る手順でデータ多すぎですエラーがでた。ちゃんと説明で、そういうことは止めてねと書いてあるので、するべきではありませんでした。
これを踏まえて、元のデータに湿地や裸地等のデータの少ないカテゴリ補うようポイントを追加してみた。これだと教師データが多くなりすぎないはず(計14,600)↓
開放水域 | 耕作地 | 高木林 | 湿地 | 人工物 | 水田 | 草地 | 低木林 | 裸地 |
---|---|---|---|---|---|---|---|---|
2723 | 885 | 5949 | 89 | 1286 | 1083 | 896 | 891 | 798 |
で、何点くらいあったらそれなりの結果がでるのか見てみる。テストデータは植生図から別途取得したランダムな点。合計14,600のデータから適当な数を抽出して、Rでランダムフォレストを回してみる。
右上がりのグラフだけど、8,000点くらい1あればそれなりになりそう。それ以上は努力に見合わなそうというざっくりとした見立てで、この14,600→8,000点をランダムに抽出して教師データとすることに。内訳はこのとおり。振り返ると、耕作地、湿地、低木林はもっと多めに取ったほうがよかったっぽい。
開放水域 | 耕作地 | 高木林 | 湿地 | 人工物 | 水田 | 草地 | 低木林 | 裸地 |
---|---|---|---|---|---|---|---|---|
1483 | 487 | 3238 | 56 | 693 | 591 | 494 | 488 | 462 |
Rで実験
今回の目的である、いろんなデータをレイヤに入れるとどのくらいうまく分類できるかな?というのをRで実験。 普通にRのrandomForestパッケージを使いました。ntreeは500、それといちおうtuneRFでmtryを求めて入れ込んでます(スクリプトは省略)。
バンド | B2-4, 8,8A, 11-12のメディアン | +NDVIとNDWIのメディアン | +NDVIとNDWIの10,90分位 | +夜間光 | +地形データ | +Sentinel1 |
---|---|---|---|---|---|---|
正解率 | 0.854 | 0.854 | 0.859 | 0.864 | 0.868 | 0.871 |
カッパ係数 | 0.767 | 0.768 | 0.777 | 0.783 | 0.792 | 0.796 |
なんか変化が地味。ガーっとよくなるのかなと期待してたんだけど。 全部入りから作ったRで出せる変数の重要度のよくあるグラフはこうなった↓ Sentinel1はそれほど役に立ってなさそう。B8やらNDVIが大事っていうのは納得(続く)。
-
試したところ10,000点くらいまではGEE上での分析が可能だった。↩