この記事は古川研究室 Advent_calendar 4日目の記事です。
本記事は古川研究室の学生が学習の一環として書いたものです。内容が曖昧であったり表現が多少異なったりする場合があります。
はじめに
同アドベントカレンダー2日目の記事として、関係データの定義まとめを書きました。そちらでは図や表で関係データの定義や種類のお話をしていました。今回は関係データの「表現」についての記事になります。
前回同様に、書籍 MLPシリーズより「関係データ学習」の内容を読んで自分でまとめてみるというものです。前記事で触れなかったChapter 1の残りの部分に該当します。
関係データの表現
機械学習の分野で関係データを扱う際の表現方法は大きくわけて2つあります。
無向関係かつ2項関係の場合を例に挙げます。
1.グラフ表現
グラフは頂点(ノード)と、頂点の組で表す辺(エッジ)で定義される
グラフ$G = {V, E}$
頂点$V = {v_1, v_2, ... ,v_n }$
辺$E = {e_1, e_2, ... ,e_m}$
次の図では円がノード、関係があるところをエッジで表しています。
2.行列(多次元配列)表現
2項関係データであれば、行列で表すことができる
以上、2つの表現方法を示しました。
- 人の目で見るためのグラフ表現・・・解析結果の表示
- 解析の実装時に取り扱いが楽な行列表現・・・入力データなど
のように使い分けが考えられそうです。参考書籍では表現が容易(図を描きやすい?)ため行列表現を用いているようです。プログラムとして書く際には行列のほうが直接表現しやすいので、普段はそちらの表現方法を使うことになると思います。
観測データと未観測データ
関係データを数値で表現する場合に注意することがあります。
グラフ表現の例では無向関係を表しました。この場合は関係がある・無いをそのままノードがある・無いで表現できました。これを行列表現する際には関係がある場合を「1」、無い場合を「0」と置いて表現することができました。このとき関係が無いことを「ノードを書かない」、「0」で表せるのは、関係が無いことが「観測されている」場合のみです。あるオブジェクト同士の関係が、あるか無いかわからない「未観測」であるときは、その部分は値を定義できません。
未観測の部分を0にしてしまうことはできません。
個人的に刺さる注意点でした。
おわりに
2回にわかれてしまいましたが、以上で関係データについてのおおざっぱなまとめになります。関係データを作るとき、扱うとき、それはどういうデータなのか考えるようになるきっかけとなれば幸いです。
参考文献
[1] MLP 機械学習プロフェッショナルシリーズ 関係データ学習 著:石黒勝彦,林浩平 講談社 2016/12/6
[2] 関係データ解析とInfinite Relational Model
https://qiita.com/takuti/items/8faf0e686cfbe68c2dfa