前方後円墳の築造時期推定の試み
以前、「統計的手法を用いた関東地方に所在する前方後円墳の形状に関する時間的変遷及び地理的分布の特徴把握並びに形状情報を用いた編年未決定墳丘の築造時期推定手法開発の試み」(下掲のzipファイルです)という自主研究をやりました。ここでは、この研究の後半部分の「築造時期推定手法開発の試み」を別の方法で試みたことを書いていきます。ただ、詳しく書くと連載が続かないので、詳しい説明は一切しないのでご勘弁ください。
1.目的
自主研究では関東地方(群馬県、栃木県、埼玉県、茨城県、千葉県、東京都、神奈川県)の前方後円墳を解析対象としました。ここでも、同じく関東地方の前方後円墳を対象に解析します。詳しいことは自主研究の論文をお読みいただくとして、解析対象の墳丘数は以下のとおりです。
全墳丘数:1,964基
築造時期が判別できている墳丘数:520基
築造時期が判別できていない墳丘数:1,444基
ここでは、築造時期が判別されている墳丘について、教師有りの機械学習技術を使って築造時期別に地理的特徴と形状的特徴の違いを学んだ機械学習モデルを構築し、築造時期が分かっていない墳丘の特徴をこのモデルに入力することでそれらの墳丘の築造時期の推定を試みます。
2.使用した特徴量
教師有り機械学習では、始めに教師データとなる特徴量を設定します。
築造時期の判別ができている520基について以下の指標を特徴量として用いました。そして、墳丘ごとに判明している築造時期とこれらの特徴量を組み合わせて教師データとしました。ただし、これらの特徴量が520基すべての墳丘で判明しているわけではないため、データテーブル上では欠損が生じています。各特徴量の欠損数をカギ括弧[ ]で示しています。
所在地の緯度・経度(lon/lat)[0/520]
墳丘が向く方位(dir)[18/520]
標高(elev)[16/520]
墳丘の比高(田畑など周囲の代表的な地形からの高さ)(rel_elev)[38/520]
古墳全長(周濠なども含めた長さ)(tot_length)[412/520]
墳丘長(Length)[8/520]
後円部径(R_diameter)[61/520]
後円部の高さ(R_height)[92/520]
後円部頂の高さ(r_heigth)[423/520]
前方部幅(F_width)[96/520]
前方部長(F_length)[167/520]
前方部の高さ(F_heoght)[167/520]
くびれ部幅(N_width)[284/520]
α = F_length / R_diameter [101/520]
β = F_width / R_diameter [169/520]
また、教師データとして墳丘の築造時期別の墳丘数は下の棒グラフのとおりとなっています。「集成編年」とは論文で記述したとおり『前方後円墳集成』(山川出版)で定義されている築造時の分類方法です。ここでは、推定する築造時期を集成編年で推定します。グラフを見て分かるとおり編年別に墳丘数が異なっており、機械学習分野で言うところの不均衡が生じています。不均衡の有無は機械学習の制度に影響を与えますので、今後、この不均衡状態を念頭に入れて解析することになります。
3.機械学習モデル
今回は「勾配ブースティング決定木」という手法を使って機械学習を行います。使用したフレームワークはLightGBMです。
まず、教師データのレコードを8:2に分割し、8割で学習、残り2割で検証を行いました。学習は4foldで行い、それぞれの検証結果を見ることとしました。
4.学習結果
以下に各foldのスコアを示します。最左列の1から10が編年を示しており、その右側に各編年に対する各種スコアを表示しています。どのfoldでもf1-scoreのmacro averageは0.1~0.2程度で、この値は機械学習界隈の感覚で言うと「ゴミ」レベルです。かろうじて10期に対するreacallが0.8以上と高い値が出ているのが救いでしょうか。論文では「10期に対する推定精度が低い」という結果が得られていましたのでちょっとした進歩です。逆に5期〜7期はどのスコアを見ても0.0となりました。このことは論文の結果とも整合性があるように思います。
precision recall f1-score support
1 0.00 0.00 0.00 3
2 0.33 0.20 0.25 5
3 0.00 0.00 0.00 11
4 0.29 0.29 0.29 7
5 0.00 0.00 0.00 5
6 0.00 0.00 0.00 2
7 0.00 0.00 0.00 7
8 0.00 0.00 0.00 6
9 0.00 0.00 0.00 17
10 0.42 0.88 0.57 41
accuracy 0.38 104
macro avg 0.10 0.14 0.11 104
weighted avg 0.20 0.38 0.26 104
precision recall f1-score support
1 0.00 0.00 0.00 1
2 0.00 0.00 0.00 6
3 0.00 0.00 0.00 11
4 0.50 0.20 0.29 10
5 0.00 0.00 0.00 3
6 0.00 0.00 0.00 1
7 0.00 0.00 0.00 4
8 1.00 0.06 0.11 18
9 0.67 0.17 0.27 12
10 0.42 0.97 0.59 38
accuracy 0.40 104
macro avg 0.26 0.14 0.12 104
weighted avg 0.45 0.40 0.29 104
precision recall f1-score support
1 0.00 0.00 0.00 4
2 0.50 0.17 0.25 6
3 0.00 0.00 0.00 2
4 0.25 0.14 0.18 7
5 0.00 0.00 0.00 4
6 0.00 0.00 0.00 2
7 0.00 0.00 0.00 5
8 0.33 0.20 0.25 10
9 0.00 0.00 0.00 10
10 0.61 0.89 0.72 54
accuracy 0.50 104
macro avg 0.17 0.14 0.14 104
weighted avg 0.39 0.50 0.43 104
precision recall f1-score support
2 0.67 0.50 0.57 4
3 0.50 0.10 0.17 10
4 0.60 0.21 0.32 14
5 0.00 0.00 0.00 6
6 0.00 0.00 0.00 1
7 0.00 0.00 0.00 6
8 0.11 0.14 0.12 7
9 0.44 0.25 0.32 16
10 0.43 0.80 0.56 40
accuracy 0.41 104
macro avg 0.31 0.22 0.23 104
weighted avg 0.40 0.41 0.35 104
以下のグラフは各foldにおける特徴量重要度です。いずれのfoldでもαの重要度が最も高くなっていました。それ以降はfoldごとに順位が異なりますのでどの特徴量が重要出会ったのかよく分かりません。ただ、αが最も高い重要度を示したということは「築造時期と墳丘の形状は全く無関係とは言えない」くらいは言っても良いでしょう。
5.まとめ
機械学習モデルを構築したので、本来はここで築造時期が判別できていない墳丘に対する推論をするところですが、まぁ正直、構築した機械学習モデルの精度は低いので推論をしてもほぼ意味はありません。もう少し、精度の良い機械学習モデルができあがってから推論をしたいものです。
今回は1期から10期をまとめて学習するという「マルチラベル」に対する手法でした。マルチラベルにすると各編年の墳丘数が少なくなってしまうので、すなわちサンプルサイズが小さいので、有意な学習ができなかった可能性があります。そこで次は、例えば10期ではなく、1期と2期、3期と4期の墳丘数を合算して5ラベル、もしくは前半と後半の2ラベルにしてラベルごとのサンプルサイズを増やす工夫をしてやり直してみたいと思います。