上週,Nate Silver舉行了一場“ 問我什麼 “在Reddit上聊聊。有幾個非常好的問題,其中一個我發現在我們開始時特別重要國際統計年 :“最大的濫用統計數據是什麼”?Nate回答說:“過度擬合。”
這種反應與我們對預測建模的討論非常相關,特別是當應用於生命科學中的問題時。在臨床試驗中,我們可能希望預測患者的反應以應用研究適應性。或者我們可能想要了解哪些受試者可能會遭受嚴重的不良反應或死亡。對於基因組學中的問題,我們希望識別出導致各種疾病狀態的等位基因,或基於體內基因表達數據和化學結構預測各種化學物質的毒性作用。
過度擬合當模型適合噪聲以及數據中的信號時,就會發生這種情況。在將過度擬合的預測模型應用於新數據集的情況下,模型的性能通常很差。例如,讓我們採取最極端的情況,其中獨立預測變量的數量等於研究中的觀測數量,並且沒有正則化。在這種情況下,模型將每次對訓練數據進行完美預測,因為每個協變量可用於預測單個觀察的響應。但是,該模型可能包含許多在預測結果時無用的變量。結果?當模型用於一組新數據時,擬合非常糟糕!這是因為模型對於第一組數據而言太具體(即,模型是過度擬合的)。
那麼為什麼過度擬合生命科學這樣的問題呢?嗯,與金融,零售和電信領域的商業數據挖掘應用不同,生命科學領域的數據集通常比觀察數據集具有更多的預測因子(p >> n)。 在這些“寬數據”實例中,使用預測模型過度擬合數據非常容易(如上面的最壞情況)。想像一下早期臨床試驗,其中人類已知的每一項測試都是在幾天或幾週的時間內進行的,以評估新藥物的安全性。SNP的分析如何預測器的數量可以輕鬆擴展到數百萬?正如您所看到的,生命科學中過度擬合的可能性很大。
如何生成一個有用的模型,可以應用於新的數據集,目標是實現準確,可推廣的預測?作為模型構建過程的一部分,應該針對一個或多個獨立的數據集測試或驗證模型,以評估是否不需要某些協變量。但這對我們的目的來說如何實用呢?在商業應用中,通常有足夠的數據來定義互斥的子集以訓練模型(學習或訓練集),以及驗證模型(驗證集)。然而,由於獲得受試者或實驗樣品的費用,時間和難度,來自生命科學的觀察往往更加有限。
生命科學中的驗證方法通常需要使用剩餘的觀察結果預測一小部分可用數據的結果,並對所有子集重複此過程。圖1顯示了5倍交叉驗證的示例。數據被劃分為五個互斥的集合,每個集合代表20%的可用觀察。用80%的數據(藍色方塊)訓練預測模型,然後用測試集(紅色方塊)進行驗證。此練習再重複四次,以便數據的每個分區(即每個方塊)用作測試集。

此外,可以使用模擬來解釋子集如何生成的差異。例如,上述交叉驗證練習可以重複10次,每次生成數據的新分區並執行交叉驗證。在模擬練習之後,將有10 x 5 = 50個模型。為了開發我的最終模型,我會選擇在50個可用模型中的大多數中選擇的那些預測變量。然後可以在完整數據集上使用這組預測變量來開發最終模型。
因此,下一次期刊文章將模型作為預測特定結果的最佳方式時,請謹慎使用此模型!檢查作者是否將他們的模型應用於新數據或應用誠實的交叉驗證方法來評估其預測性能。否則,您可能會因使用它而傷害自己。
JMP臨床和 JMP基因組學擁有廣泛的預測模型。此外,用於交叉驗證的強大工具,學習曲線(回答“我的訓練集足夠大嗎?”和減少預測因子的問題)可用於開發生命科學應用的有用預測模型。
有關更多信息,請下載此文件加入 (適用於 JMP 10 )或按需查看網絡直播 (使用加載項)。插件和網絡廣播使用來自臨床試驗的數據和使用下一代測序的基因組學研究來說明上述方法。
Richard Giambrone 中寫道:
討論很好。我目前正在上統計建模課程,所以這個主題對我來說是最重要的。我喜歡你給的過度擬合的例子。感謝在Reddit上提到Nate Silver。我不知道Reddit是什麼。再次脫離接觸!