リレーショナルデータベースの世界へようこそ!
アクチュアリーを目指す皆さんは、これまで整理された単一のExcelシートを扱うことに多くの時間を費やしてきたかもしれません。しかし、予測分析の現場では、データがそれほど綺麗に整っていることは稀です!情報は通常、リレーショナルデータベースと呼ばれる複数のテーブルに分散しています。この章は、パズルの解き方を学ぶものだと考えてください。手元にあるバラバラのピース(テーブル)を正しくつなぎ合わせて、全体像を把握するのが皆さんの役割です。
このノートを読み終える頃には、データベースの構造だけでなく、ありがちなミスを避けつつ異なるソースからデータを統合する方法をマスターできているはずです。最初は少し「技術的」に感じるかもしれませんが、身近な例えを使ってわかりやすく解説していきますので安心してくださいね!
1. リレーショナルデータベースとは?
リレーショナルデータベースとは、データ項目間にあらかじめ定義された関係性を持つデータの集合体です。これらの項目は、列と行を持つテーブルのセットとして構成されています。
Excelの例え: Excelブックを想像してみてください。ブック内の各「タブ」が、データベースにおけるテーブルのようなものです。例えば、あるタブには顧客名がリストされ、別のタブにはその顧客の保険金請求データがリストされているとします。これらは別のテーブルですが、どちらも「同じ顧客」についての情報であるため、「関連」しています。
テーブルの主要構成要素
1. 行(レコード): 各行は単一のユニークな実体(特定の契約者など)を表します。
2. 列(フィールド/属性): 各列は情報の特定の断片(生年月日や保険料額など)を表します。
クイック復習: データベースにおいて、これらのテーブル構造をスキーマと呼びます。これはデータがどのように整理されているかを示す「設計図」のようなものです。
2. テーブルをつなぐ「接着剤」:キー
どの請求データがどの顧客のものかを、どうやって見分ければよいのでしょうか?そこで使うのがキーです。これはデータ統合においてマスターすべき最も重要な概念です。
主キー(Primary Key)
主キーとは、テーブル内のすべてのレコードを識別するためのユニークなIDです。空欄(NULL)にはできず、同じ主キーを持つレコードが2つ存在することも許されません。
例: マイナンバーや、個別の契約IDなど。
外部キー(Foreign Key)
外部キーとは、あるテーブルの列の中で、別のテーブルの主キーを参照しているものを指します。これによってテーブル同士のリンクが生まれます。
実務での例:
- 「顧客テーブル」には、顧客IDが主キーとして設定されています。
- 「保険契約テーブル」にも顧客IDという列があります。保険契約テーブルにおいて、この列は顧客テーブルを参照しているため外部キーと呼ばれます。
豆知識: キーを使用することで参照整合性を保つことができます。これは難しい言葉ですが、簡単に言えば「テーブル間のリンクを常に正しく保つ」という意味です。
3. データの統合:結合(Join)の技術
予測モデルのために2つのテーブルを結合したいとき、私たちは結合(Join)を行います。Exam ATPA(試験)で押さえておくべき主要な4つのタイプを紹介します。
内部結合(Inner Join)
内部結合は、両方のテーブルに合致するデータがある行のみを抽出します。顧客リストに載っていない契約や、契約情報のない顧客データは削除されます。
左結合(Left Join:アクチュアリーの親友)
左結合は、左側のテーブルのすべてのレコードを保持し、右側のテーブルからは合致するデータを追加します。右側に一致するデータがない場合、その箇所にはNA(欠損値)やNullが表示されます。
なぜ重要か: すべての契約者のリストがあり、その中で誰が保険金請求を行ったかを確認したい場合、左結合を使います。請求を行っていない契約者も含め、全員を分析対象として保持したいからです!
右結合(Right Join)
左結合の逆です。右側のテーブルのすべてを保持し、左側のテーブルと照合します。(注:実務ではテーブルの順序を入れ替えて、左結合を使うのが一般的です)。
完全外部結合(Full Outer Join)
完全外部結合は、両方のテーブルのすべてのデータを保持します。一致するものがない場合は空欄になります。データを取りこぼさないための「安全第一」な方法ですが、非常に複雑なデータセットになってしまうことがあります。
覚え方:「Left is for List(左はリストのため)」
分析対象となるマスターリスト(契約データなど)を持っていて、たとえ他のテーブルに情報が足りなくてもそのリストを残しておきたいときは、左結合を使いましょう。
4. 避けるべきデータの統合ミス
データの統合は、予測モデル構築で失敗しやすいポイントです。以下の「落とし穴」に注意してください:
1. 重複と「1対多」の拡張
「顧客」テーブルと「月次支払い」テーブルを結合すると、1人の顧客に対して複数の支払データが一致することになります。データセットの行数が「爆発」し、同じ顧客に対して複数行が生成されてしまいます。意図せずにこれを行うと、モデルに偏りが生じる可能性があります!
2. 粒度(Grain)の不一致
粒度とは、1行が何を表しているかを指します。テーブルAが「契約単位」(1行1契約)、テーブルBが「州単位」(1行1州)の場合、注意が必要です。個人レベルのデータと集計レベルのデータを結合しようとしていることになるからです。
3. デカルト積(悪夢の結合)
結合する際に使用するキーの指定を忘れると、コンピュータはテーブルAのすべての行とテーブルBのすべての行を組み合わせようとします。もし両方のテーブルに1,000行ずつあれば、1,000,000行もの無意味なデータができあがってしまいます!
重要なポイント: 結合の前後に必ず行数を確認してください。行数が大幅に増えている場合は、「1対多」の関係が発生しているか、キーの重複が起きている可能性が高いです。
5. 結合時のデータクリーニング
結合したデータがそのまま使えることは稀です。多くの場合、以下のステップが必要です:
1. 欠損値の処理: 左結合の後には、欠損値(NA)が発生しがちです。ゼロで埋めるか、平均値を入れるか、あるいは除外するかを判断する必要があります。
2. 列名の変更: 両方のテーブルに「Date」という列があると、ソフトウェアが自動的に「Date.x」「Date.y」と書き換えることがあります。混乱しないよう、すぐに分かりやすい名前に変更しましょう!
3. データ型の一致: 文字列(String)として保存された「契約ID」と、数値(Integer)として保存された「契約ID」を結合することはできません。事前に型が一致していることを確認しましょう。
試験に向けたチェックリスト
次に進む前に、以下の質問に答えられるか確認しましょう:
- 主キーと外部キーの違いは何ですか?
- 内部結合と左結合は、それぞれどのような場面で使うべきですか?
- 結合時にキーが重複するとデータはどうなりますか?
- 「粒度(Grain)」は、異なるソースのデータを結合する方法にどのような影響を与えますか?
覚えることが多くて大変だと感じるかもしれませんが、大丈夫です。ATPAのサンプルプロジェクトで実際に練習すれば、これらの結合操作はすぐに自然とできるようになります。皆さんは今、素晴らしいデータサイエンスの土台を築いているところですよ!