上一篇,我們把研究問題寫成可以失敗的假設。下一步不是立刻訓練模型,而是確認手上的資料,是否真的能回答那些問題。
這次還有一個很明確的限制:病患資料必須能從公開頁面取得,不簽署醫療資料使用協議,也不把需要額外認證的資料當作主要實驗來源。
在這個條件下,本系列正式選定 Kaggle 的 Emergency Service - Triage Application作為唯一病患資料。它包含 1,267 筆韓國急診紀錄,也同時提供護理師原始級數與專家重新判定級數。
這個決定讓取得與重現流程更單純,但也帶來兩項代價:資料量小,而且資料檔沒有附上一套可直接重建的完整官方 KTAS 手冊。後續所有文章都必須在這條邊界內設計實驗。
下圖用一張沒有精確文字與數字的概念工作台表達今天的任務。重點不是從最多的資料中選一份,而是逐一檢查取得方式、欄位、標籤、規則與結論範圍。

上圖用概念工作台提醒我們:公開、可下載與適合實驗是三件不同的事,資料仍要逐項通過後續檢查。
讀完 Day 10 後,你應該能夠:
KTAS_expert 和 KTAS_RN 的不同角色。| 中文名稱 | 英文全名/縮寫 | 本篇用途 |
|---|---|---|
| 韓國急診檢傷與急迫度分級量表 | Korean Triage and Acuity Scale, KTAS | 本系列唯一病患資料所使用的五級制度 |
| 檢索增強生成 | Retrieval-Augmented Generation, RAG | 先找公開 KTAS 知識,再交給模型產生有證據的級數 |
| 資料使用協議 | Data Use Agreement, DUA | 某些資料要求使用者簽署的使用契約;本系列不使用這類病患資料 |
| 參考標籤 | Reference Label | 模型預測完成後用來比較的專家級數 |
| 資料洩漏 | Data Leakage | 模型看到檢傷當下不可能知道的答案或未來結果 |
| 外部效度 | External Validity | 結果能否延伸到其他醫院、時間、人群或制度 |
| 交叉驗證 | Cross-Validation | 輪流切換訓練與驗證資料,以降低單次切分的偶然性 |
「公開資料」常被當成單一狀態,實際上至少可能包含:
本系列採用最直接的操作邊界:病患資料不需要簽署醫療資料 DUA。Kaggle 平台本身是否要求登入,屬於平台下載流程;它不會改變本系列不使用受控病患資料的決定。
這個限制不是在判斷哪一套檢傷制度比較好,而是在決定讀者能否跟著文章取得同一份病患資料。
本系列固定使用的資料頁是:
Kaggle 頁面將資料來源連回 Moon 等人在 2019 年發表的 KTAS 檢傷準確性研究。來源研究回顧韓國兩所都市教學醫院的成人急診紀錄,研究期間為 2016 年 10 月到 2017 年 9 月,最後納入 1,267 筆紀錄。來源研究
本系列在 2026 年 8 月 2 日核對到的 Kaggle 壓縮檔中,只有一個 data.csv:
| 項目 | 稽核結果 |
|---|---|
| 資料列數 | 1,267 筆,不含標題列 |
| 欄位數 | 24 欄 |
| 分隔符 | 分號 ; |
| 文字編碼 | Windows-1254,可用 Python 的 cp1254 讀取 |
| 主訴語言 | Kaggle CSV 中為英文 |
| 主要標籤 | KTAS_expert |
| 人類參考 | KTAS_RN |
壓縮檔與 CSV 的安全雜湊演算法 256 位元版本(Secure Hash Algorithm 256-bit, SHA-256)如下:
ZIP f78df0a06c31b6df873c410b0596ecb95ac9335485beaf890dcabf7c69560f26
CSV 0e2c088e358fd4cdfd0dcc2fd4c2f085aa303856e3a6df8ceb44a69cef8ed2de
SHA-256 會把檔案內容轉成固定長度的字串。檔案只要改動一個位元,雜湊通常就會改變,因此能協助我們確認讀者與實驗使用的是不是同一版本。
資料選定後,還要完成四項對齊:
下圖將四項條件放在同一個畫面。中央不是一個可以自動解決所有問題的資料集,而是提醒我們:四個角落都要有明確答案。

上圖顯示,取得方式只解決「能不能拿到資料」。它沒有自動回答欄位時點、標籤品質、知識完整度與外部效度。
KTAS_expert 是主要標籤資料中有兩個五級欄位:
KTAS_RN:註冊護理師(Registered Nurse, RN)在實際急診流程中登錄的 KTAS 級數。KTAS_expert:研究中的三位 KTAS 專家依初始護理紀錄重新判定的級數。本系列把 KTAS_expert 設為主要參考標籤,把 KTAS_RN 留作人類現場參考。這不表示專家級數毫無誤差。專家是回顧病歷,不是重新在現場檢查病患;病歷中沒有記錄的症狀,也不會憑空出現在專家判斷裡。
兩個欄位都不能成為模型輸入。若模型看到 KTAS_RN,它可能只是在模仿護理師級數;若看到 KTAS_expert,就等於直接看到評分答案。
資料選擇不是只有優點。下圖將四個選擇條件、資料現況及其直接影響放在一起。

上圖不是模型效能排名,而是資料選擇的限制清單。下面逐項說明每個限制會如何影響實驗設計與結論範圍。
1,267 筆資料適合做完整教學與受控實驗,但不足以支撐過度複雜的訓練。尤其專家第一級只有 26 筆,單次切分可能讓測試集中只剩極少數第一級案例。
因此,主要結果規劃使用固定種子的重複分層五折交叉驗證。分層表示每一折盡量維持五個級數的比例;重複表示不只依賴一次 folds。所有方法必須使用相同 folds,才能逐筆配對比較。
資料沒有能確認病患身分的識別欄位,因此不能保證同一病患的重複就醫不會落在不同 folds。
後續可以誠實報告以「紀錄」為單位的交叉驗證,但不能寫成病患層級切分,也不能忽略可能存在的列間相依性。
檢索增強生成需要可檢索的外部知識。Kaggle CSV 提供病患欄位與標籤,但沒有附上完整的 KTAS 官方規則庫。
後續知識庫只會放入公開可引用、來源可追溯的 KTAS 說明,並把完整度標為 partial。因此我們可以研究「公開 KTAS 知識檢索是否有幫助」,不能宣稱「完整重建官方 KTAS 演算法」。
重複交叉驗證仍使用同一批紀錄。它能檢查結果是否依賴單次切分,不能證明模型到了另一家醫院、另一個年份或另一個國家仍然有效。
下圖把 24 個欄位依用途分流。閱讀時先看左邊的原始檔,再沿四條箭頭查看每一組欄位可以去哪裡。

上圖先按照資料在實驗中的角色分流,而不是只看欄位是否存在。四種角色如下:
KTAS_expert 與 KTAS_RN,共 2 欄。Error_group 與 mistriage,共 6 欄。第四組中有些欄位很可能和級數高度相關,但相關不等於可使用。急診診斷與住院去向是在檢傷後才形成;mistriage 更是比較兩個級數後產生。把它們放進模型,只會製造無法在檢傷當下重現的高分。
本篇的機器可讀決策保存在:
configs/data/day-10-dataset-roles.json
設定檔記錄 Kaggle slug、資料來源、檔案雜湊、主要標籤、排除選項、可允許主張與禁止主張。
test -f configs/data/day-10-dataset-roles.json
ls -l configs/data/day-10-dataset-roles.json,應看見檔案資訊。python3 -m json.tool configs/data/day-10-dataset-roles.json > /dev/null
dataset.id、reference_label 與 human_reference。python3 - <<'PY'
import json
from pathlib import Path
config = json.loads(
Path("configs/data/day-10-dataset-roles.json").read_text(encoding="utf-8")
)
assert config["dataset"]["id"] == "kaggle_ktas_emergency_service_triage"
assert config["dataset"]["reference_label"] == "KTAS_expert"
assert config["dataset"]["human_reference"] == "KTAS_RN"
print("通過:唯一病患資料為 Kaggle KTAS,標籤角色一致")
PY
可以支持的問題包括:
KTAS_expert 的五級差異。KTAS_RN 的錯誤方向比較。不能支持的主張包括:
Kaggle 說明能協助理解代碼,但仍要實際檢查分隔符、文字編碼、欄位名稱、缺失代碼與數值格式。Day 11 會逐欄完成這項工作。
KTAS_RN 當模型特徵這會讓模型看到護理師已完成的級數,無法回答主訴與生命徵象本身是否足夠。KTAS_RN 必須和模型輸入分開保存。
本系列可以稱它為專家重新判定或主要參考標籤。專家仍受病歷完整度與回顧設計限制。
交叉驗證只是在不同輪次重用 1,267 筆紀錄,不會產生新的醫院或病患。報告時要區分「估計較穩定」與「外部效度提高」。
今天完成的是資料選擇契約,不是模型實驗:
KTAS_expert 是主要參考標籤,KTAS_RN 只作人類現場參考。Day 11 會真正打開 data.csv,依序處理:
cp1254 讀取。??、#BOŞ! 與空字串如何統一成缺失值。Day 10 的資料選擇,會成為 Day 11 每一個資料清理步驟的前提。