歡迎來到數據「水管工程」的世界!
歡迎!在我們建立精密的預測模型或執行複雜的精算計算之前,我們必須先探討數據從何而來以及它是如何傳送到我們手中的。在本章中,我們將專注於資料庫管理 (Database Management) 與 ETL 作業。你可以將此視為預測分析中的「水管工程」。如果水管漏水或水源受到污染,無論你的水龍頭(模型)做得多精緻,出來的水結果都不會好!
閱讀完這些筆記後,你將了解數據是如何儲存的、我們如何將其從一個地方搬運到另一個地方,以及如何清理它,讓它準備好餵進你的模型中。別擔心,如果你以前從未接觸過資料庫,我們將會一步步來!
1. 什麼是資料庫?
簡單來說,資料庫 (Database) 是一個組織化的結構化資訊集合。在精算領域,我們主要處理的是關聯式資料庫 (Relational Databases)。
比喻: 想像一個巨大的電子檔案櫃。每個抽屜就是一個表格 (Table)。每個抽屜裡都有文件夾(列 (Rows) 或 紀錄 (Records)),而每個文件夾內則包含特定的資訊,例如姓名、保單號碼或賠款金額(欄 (Columns) 或 欄位 (Fields))。
需要記住的關鍵術語:
- 表格 (Table): 以列和欄形式組織的數據集合。
- 紀錄 (Row/Record): 表格中的單一條目(例如:某位特定的保單持有人)。
- 欄位 (Column/Field): 資訊的特定類別(例如:「出生日期」)。
- 結構描述 (Schema): 資料庫的「藍圖」或結構。
快速複習: 資料庫是儲存單元,表格是其中的結構,而列/欄則是實際的數據點。
2. 「關聯」的部分:鍵與連結
使資料庫成為「關聯式」的核心在於能夠使用鍵 (Keys) 將不同的表格連結起來。這對 ATPA 考試至關重要,因為你經常需要整合來自不同來源的數據(例如「賠款數據」與「保單持有人人口統計數據」)。
主鍵 (Primary Key) 與 外鍵 (Foreign Key)
主鍵 (Primary Key, PK): 表格中每筆紀錄的唯一識別碼。它必須是唯一的且不能為空(null)。範例:身份證號碼或唯一的保單編號。
外鍵 (Foreign Key, FK): 表格中的一個欄位,指向另一個表格中的主鍵。這是連結它們的「橋樑」。
記憶小撇步: 把主鍵想成你的護照號碼(它能唯一識別「你」這個人)。外鍵就像是你寫在酒店登記表上的護照號碼;它將酒店的紀錄連結回你的正式身份。
要避免的常見錯誤: 不要假設每個表格都有單一欄位的主鍵。有時,你需要用到複合鍵 (Composite Key),即同時使用兩個或多個欄位來創建唯一的識別碼(例如:保單號碼 + 序號)。
3. 理解 ETL (擷取、轉換、載入)
ETL 是將數據從來源(如舊有的主機系統)移動到目的地(如你可以執行模型的大數據倉儲)的過程。
記憶小撇步:「Eat Tasty Lunch」(ETL)
1. 擷取 (Extract): 從冰箱拿出食材(從來源取得數據)。
2. 轉換 (Transform): 切菜、調味並烹飪(清理與格式化數據)。
3. 載入 (Load): 將菜餚放上餐桌(將數據存入最終系統)。
步驟 1:擷取 (Extract)
在此階段,我們從各種來源提取數據。這些來源可能是 SQL 資料庫、Excel 試算表,甚至是像 PDF 理賠表格那樣的「非結構化」數據。目標是在不干擾原始來源的情況下,將數據提取到暫存區。
步驟 2:轉換 (Transform)
這是最辛苦的工作所在。原始數據通常很混亂。轉換過程包括:
- 清理 (Cleaning): 修正錯字或移除重複的紀錄。
- 篩選 (Filtering): 只保留我們需要的紀錄(例如:僅保留過去 5 年的保單)。
- 連結 (Joining): 將多個表格合併成一個。
- 聚合 (Aggregating): 匯總數據(例如:計算每年賠款總額)。
- 衍生 (Deriving): 建立新變數(例如:\( \text{年齡} = \text{當前日期} - \text{出生日期} \))。
步驟 3:載入 (Load)
最後,將「清理過」的數據載入目標系統(通常是數據倉儲 (Data Warehouse))。這些數據現在已準備好供你在 R 或 Python 中用於預測建模。
核心重點: ETL 確保用於建模的數據是一致、準確且格式正確的。
4. 數據倉儲 (Data Warehouse) 與 數據湖 (Data Lake)
身為精算師,你可能會聽到這些術語。以下是簡單的區分:
數據倉儲: 高度結構化。把它想成一個圖書館,每本書都有標籤並放在特定的位置。你將其用於「乾淨」的數據與報表分析。
數據湖: 結構較鬆散。把它想成一個巨大的水桶,所有東西都以原始形式倒入其中。將數據儲存在這裡的成本較低,但處理起來會比較「混亂」。
你知道嗎? 大多數現代企業採用「湖倉一體 (Lakehouse)」的方法,試圖兼具數據湖的靈活性與數據倉儲的組織性!
5. ETL 常用的 SQL 操作
雖然 ATPA 考試可能不需要你從零開始編寫複雜的 SQL,但你必須理解數據是如何被操作的邏輯。最重要的概念是 JOIN。
想像你有表格 A(客戶)與表格 B(賠款):
1. 內部連結 (Inner Join): 只回傳在「兩個」表格中都有匹配的紀錄。(即:有提出賠款的客戶)。
2. 左外連結 (Left Join): 回傳左側表格中的「所有」紀錄,以及右側表格中匹配的紀錄。如果沒有匹配,則會得到 Null。(即:所有客戶,如果有賠款資訊就顯示出來)。
3. 完整外部連結 (Full Outer Join): 回傳兩個表格中的所有東西,並盡可能進行匹配。
鼓勵一下: 連結 (Join) 有時會讓人感到困惑!只要記住:通常「左」表是你的起點(你的「主」清單),而你正在將「右」表的資訊「附加」上去。
6. 數據完整性與驗證
在 ETL 過程中,我們必須確保數據完整性 (Data Integrity)。這意味著數據保持準確且一致。
必須執行的驗證檢查:
- 紀錄計數 (Record Counts): 我開始時有 1,000 列,結束時也是 1,000 列嗎?
- Null 檢查: 是否有不該為空的地方出現了缺失值(例如主鍵欄位)?
- 範圍檢查 (Range Checks): 「年齡」欄位是否有像 -5 或 200 這種不可能出現的值?
- 唯一性檢查 (Uniqueness Checks): 是否有重複的 ID?
總結/核心重點:
資料庫管理關乎我們如何使用表格與鍵來儲存與關聯數據。ETL 則是搬運與精煉這些數據的過程。身為 ATPA 考生,你的目標是確保匯入模型的數據經過了嚴格的 ETL 程序,這樣你的預測基礎是「乾淨」的水,而不是「混濁」的泥水!
快速複習盒:
- 擷取 (Extract): 取得原始數據。
- 轉換 (Transform): 清理、連結與計算。
- 載入 (Load): 儲存至最終目的地。
- 主鍵 (Primary Key): 該列的唯一 ID。
- 外鍵 (Foreign Key): 連結到另一個表格中的主鍵。