分類器是一種機器學習模型,根據學習到的模式為輸入 標註標籤。在分診系統中,分類器接收患者的症狀(例如:發燒、嗜睡)並輸出最可能的疾病。
沒有一個分類器能在所有分診場景中都表現最佳。正確的選擇取決於資料集大小、可解釋性需求以及病情的緊急程度。以下是我們使用的分類器家族。
一種用於 二元分類(疾病存在/不存在)的線性模型。它使用 S 形函數輸出 0 到 1 之間的 機率。學習到的係數直接顯示每個症狀對風險的影響程度。
通過加入 多項式特徵(例如:溫度²、白血球計數²),它可以捕捉「最佳區間」模式 – 例如,當某項檢驗值處於中度升高時,疾病最可能發生。這會產生彎曲的橢圓形決策邊界,如下圖所示。
邏輯迴歸 可解釋性強、所需資料量少且運算快速 – 非常適合即時分診。
圖:具有二次特徵的邏輯迴歸產生橢圓形邊界 – 內部(藍色)為疾病存在。決策樹 會對症狀提出一系列是非題(例如:「體溫高於 39°C?」)。葉節點包含最終診斷 – 高度可解釋。
然而,單一決策樹較為脆弱且容易過擬合。隨機森林 在不同資料子集上建立多棵樹(自助聚合)並 投票 決定最終預測。這能降低變異性並提高準確度。
隨機森林還能提供 特徵重要性 – 告訴臨床醫生哪些症狀最為關鍵。
圖:決策樹將症狀拆分為分支以達到診斷。SVM 找出疾病類別之間的 最佳分離邊界(超平面)。支援向量 是距離邊界最近的點 – 它們定義了邊界的位置。
SVM 專注於 最大化間隔,這能提升泛化能力。核函數技巧 將症狀映射到更高維度,無需額外計算即可實現非線性邊界。
當症狀數量相對於病歷記錄較多時(例如:全血球計數資料)表現良好。記憶體效率高(僅儲存支援向量),但不會自然輸出機率。
圖:SVM 找到疾病類別之間的最大間隔。神經網路由多層相互連接的「神經元」組成。輸入層接收症狀,隱藏層學習 階層式特徵,輸出層給出疾病機率。
它們擅長處理 大型標註資料集(數千筆記錄),能發現較簡單模型遺漏的細微非線性交互作用。
挑戰:黑盒(難以解釋)、需仔細調整許多超參數、運算成本高。建議在簡單模型不足且資料充足時使用。
圖:具有一個隱藏層的神經網路學習非線性模式。訓練需要一個 標註資料集 – 許多具有已知症狀和正確診斷的患者範例。我們將資料分為三個不同的子集:
• 訓練集 (60‑80%)
模型學習內部參數(係數、分裂點)以最小化預測誤差。
• 驗證集 (10‑20%)
用於調整超參數(例如:樹的深度、正規化強度)– 模型在訓練期間從未看過答案。
• 測試集 (10‑20%)
保留到最後。模型僅執行一次,以獲得對真實世界效能的無偏估計。
一個訓練良好的分類器能夠 泛化 – 它能正確預測從未見過的症狀組合的疾病。這種三分法可防止 過擬合(記憶訓練資料),並確保可靠的部署。
總結:訓練集用於教學,驗證集用於調校,測試集給出公正的最終分數。
在比較分類器時,我們會參考多項指標。分診中最重要的是:精確率(避免誤報)和 召回率(避免遺漏危險疾病)。
圖:包含計算公式的混淆矩陣。上方的混淆矩陣提供了原始計數和基本公式。下表解釋每個指標在分診中的意義,並包含 F1 分數 – 精確率和召回率的綜合指標。
| 指標 | 衡量內容 | 在分診中的重要性 |
|---|---|---|
| 準確率 | 正確預測的比率(整體)。 | 適用於平衡資料集,但若某一疾病罕見則可能誤導。 |
| 精確率 | 當模型預測「疾病存在」時,實際正確的比率。 | 避免誤報(過度分診)和不必要的治療。 |
| 召回率(敏感度) | 在所有實際疾病案例中,模型成功捕獲的比例。 | 對危險疾病至關重要 – 遺漏案例比誤報更嚴重。 |
| F1 分數 | 精確率和召回率的調和平均數。 | 平衡指標,特別適用於類別不平衡的情況。 |
總結:在分診中,召回率 通常優先於精確率 – 但最佳平衡取決於特定疾病和臨床情境。