Upgrade to Pro — share decks privately, control downloads, hide ads and more …

遺跡存在を確率的に考える〜「隣接地」概念の再検討

 遺跡存在を確率的に考える〜「隣接地」概念の再検討

2023年5月27日〜28日開催の第89回日本考古学協会のセッション6「デジタル化時代の遺跡・埋蔵文化財包蔵地・遺跡地図を考える」の発表資料です。

遺跡は「ある・ない」の二値的な性質ではなく、既知の遺跡や地形等によって規定される確率的な性質であることが前提となっている。遺跡立地に影響する環境要因を説明変数とし、遺跡の有無を目的変数とすることで、「隣接地」概念を確率的存在として可視化する手法について検討した。

石井淳平

May 30, 2023
Tweet

More Decks by 石井淳平

Other Decks in Science

Transcript

  1. 遺跡予測の手順 1. サンプリング領域の選定 2. 地形指標の作成 3. 地形指標と遺跡有無の関係 4. 地形指標選択 5.

    分析手法決定 6. モデル作成 7. テストデータを利用した予測地図の作成と評価
  2. 遺跡ポイントに地形指標を付値 ランダム点群に地形指標を付値 # リストに格納されているベクタポイントにラスタを付値 for(i in 1:length(site_crop)){ terra::extract( x =

    raster_list_stack[[i]], # ラスタを格納したリスト y = site_crop[[i]] # ベクタポイントを格納したリスト ) -> site_crop_ext[[i]] # それぞれの結果はデータフレームに格納されるの } # bg はリスト化されたラスタ群ごとにサンプリングした SpatVector のリスト bg <- map( raster_list_stack, # ラスタを格納したリスト terra::spatSample, # Take a spatial sample size = 100, # The sample size na.rm = TRUE )
  3. 地形指標を付与された点群 Asp Elv Irra SVF Slope TRI WI P South

    143.54 7.66 0.99 5.51 2.44 9.31 North 33.20 7.60 0.99 0.84 0.39 11.99 North 28.80 7.59 1.00 1.36 0.60 13.74 South 7.87 7.60 1.00 0.28 0.13 16.43 South 253.85 7.56 0.97 17.74 8.01 5.47 West 115.58 7.63 0.99 10.31 4.58 6.06
  4. 相関係数行列 Elv Irra SVF Slope TRI WI Elv 1.00 -0.35

    -0.54 0.57 0.56 -0.48 Irra -0.35 1.00 0.80 -0.78 -0.79 0.45 SVF -0.54 0.80 1.00 -0.87 -0.88 0.50 Slope 0.57 -0.78 -0.87 1.00 0.99 -0.74 TRI 0.56 -0.79 -0.88 0.99 1.00 -0.73 WI -0.48 0.45 0.50 -0.74 -0.73 1.00 r > 0.80
  5. VIF 値(変数間の線形相関構造の検出) Variables VIF Elv 1.63 Irra 3.26 SVF 6.62

    Slope 111.29 TRI 120.18 WI 2.85  VIF >10.00 → 致命的な多重共線性
  6. SLOPE とTRI を外す Variables VIF Elv 1.60 Irra 2.92 SVF

    3.56 WI 1.49 VIF 値は5 以下に収まった。
  7. ロジスティック回帰分析 在ー不在のような二値データの確率を予測する ## DEM と wetness_index は 2 次式で回帰 glm2

    <- glm( presence ~ poly(DEM, 2) + poly(sky_view_factor, 1) + poly(wetne data = data_train, family = "binomial" )
  8. 予測地図の作成 予測式に地形指標を代入して、予測値を計算する # 予測地図を出力 pre <- predict( glm2, # 予測モデル

    newdata = ras_df %>% dplyr::select(DEM, sky_view_factor, wetness_index), # 地形指標を選 type = "response" # type = "response" は二項分布の場合確率を返す ) # 予測値のデータをラスタに付値する pre_ras <- ras_stack[[1]] # 元のデータの一部を代入 pre_ras[] <- NA # データを一旦空にする pre_ras[ras_df$n] <- pre[,2] # 予測値を代入する 2 列目が在確率
  9. MAX ENTROPY 法 予測モデルの確率分布推定に「最大エントロピー原 理」を利用する。 在データのみの場合や小規模なデータセットでも適 用可能と言われている。 ##### Maxent による予測モデル

    mod <- maxnet( p = data_train %>% use_series(presence), # P は 1 か 0 のベクターデータ use_series() は data = data_train %>% dplyr::select(DEM, sky_view_factor, wetness_index)) # プレ
  10. 決定木 特徴量を分岐条件として利用するため、視覚的に表 現しやすい。 モデルの解釈性が高い。 ## 分類木の作成 RP <- rpart(presence ~

    DEM + sky_view_factor + wetness_index, data = data_train, control = rpart.control(xval = 10), # 交差検証の数、デフォルト method = "class") # method = "class"
  11. パラメーターチューニング 以下の2 つのパラメーターを最適化する size = 隠れ層の数 decay = 重み付け #

    expand.grid() 関数で size と decay のパラメータを全て組み合わせて指定する tuneGrid <- expand.grid(size = 1:10, decay = seq(0.0, 1e-3, by = # チューニング tuned <- train(presence ~., # 目的変数 data = data_train_fct, # データ method = "nnet", # 分析手法に nnet() 関数指定 tuneLength = 10, tuneGrid = tuneGrid, # size と decay の組み合わせを指定 trControl = trainControl(method = "cv", number = 10))
  12. ニューラルネットワークによるモデル作成 # チューニングされた size と decay を用いて、再度 nnet 関数の実行 nnet.Init_tuned

    <- nnet( x = data_train %>% dplyr::select(DEM, sky_view_factor, wetness_index) %> rename(Elv = DEM, SVF = sky_view_factor, WI = wetness_ y = data_train$presence, # y = 従属変数 size = 8, # 隠れ層のユニット数 decay = 8e-4, # 最適化過程での過剰適合を調整する。デフォルト 0 maxit = 100 # 最大順回数 デフォルト 100 )