題:
在機器學習中執行交叉驗證時為“最終”模型選擇特徵
danielsbrewer
2010-09-02 15:25:42 UTC
view on stackexchange narkive permalink

我對功能選擇和機器學習感到有些困惑,我想知道您是否可以幫助我。我有一個微陣列數據集,該數據集分為兩組並具有1000多個特徵。我的目標是獲得簽名中的少量基因(我的特徵)(10-20個),從理論上講,我將能夠將其應用於其他數據集以對這些樣本進行最佳分類。因為我沒有那麼多樣本(<100),所以我沒有使用測試和訓練集,而是使用了留一法交叉驗證來確定穩健性。我已經讀過,應該為每個樣本樣本執行特徵選擇,即

  1. 選擇一個樣本作為測試集
  2. 在其餘樣本上執行特徵選擇
  3. 使用所選功能將機器學習算法應用於其餘樣本
  4. 測試測試集是否正確分類
  5. 轉到1。
  6. ol>

    我所說的最優是指任何進一步研究都應使用的基因集合。例如,假設我有一個癌症/正常數據集,我想找到根據SVM對腫瘤類型進行分類的前10個基因。我想知道可以在進一步實驗中使用的基因集和SVM參數,以查看它是否可以用作診斷測試。

我應該說是完全公開的,我已經將其發佈到了生物導體列表中
請在此處總結任何生物導體結果?
六 答案:
Dikran Marsupial
2010-09-02 22:53:16 UTC
view on stackexchange narkive permalink

原則上:

使用在整個數據集上訓練的單個模型進行預測(因此只有一組特徵)。交叉驗證僅用於估計在整個數據集上訓練的單個模型的預測性能。使用交叉驗證至關重要,因為在每一次折疊中,您都要重複用於擬合主要模型的整個過程,否則,您可能會在性能上產生極大的樂觀偏差。

了解為什麼會發生這種情況,請考慮具有1000個二元特徵但只有100個案例的二元分類問題,其中案例和要素都是純隨機的,因此,要素與案例之間沒有任何統計關係。如果我們在整個數據集上訓練主要模型,由於特徵多於案例,我們總是可以在訓練集上實現零誤差。我們甚至可以找到“信息性”功能的子集(碰巧是偶然關聯的)。如果我們然後僅使用那些功能執行交叉驗證,我們將獲得比隨機猜測更好的性能估計。原因是,在交叉驗證過程的每一個步驟中,都有一些有關用於測試的暫留案例的信息,因為這些案例被選中是因為它們很好地進行了預測,因此選擇了所有特徵,包括已保留的那些。當然,真正的錯誤率將是0.5。

如果我們採用正確的過程,並在每次折疊中執行特徵選擇,則在選擇使用的特徵時將不再有任何關於所保留案例的信息。折。如果使用正確的過程,在這種情況下,您將得到大約0.5的錯誤率(儘管對於不同的數據集實現,其錯誤率會有所不同)。

好的論文可供閱讀:

Christophe Ambroise,Geoffrey J. McLachlan,“基於微陣列基因表達數據的基因提取中的選擇偏向”,PNAS http://www.pnas.org/content/99/10/ 6562.abstract

與OP和

Gavin C. Cawley高度相關,Nicola LC Talbot,“論模型選擇中的過擬合和性能評估中的後續選擇偏差”,JMLR 11(7月): 2079−2107,2010年 http://jmlr.csail.mit.edu/papers/v11/cawley10a.html

表明,在選擇模型時很容易發生同一件事(例如,調整SVM的超參數,在CV過程的每次迭代中也需要重複這些參數。)

在實踐中:

我建議使用Bagging,並且使用袋外誤差來評估性能。您將獲得使用許多功能的委員會模型,但這實際上是一件好事。如果僅使用單個模型,則很可能會過度擬合特徵選擇條件,最終導致模型的預測要比使用大量特徵的模型差。

艾倫·米勒斯(Alan Millers)關於回歸子集選擇的書(查普曼和霍爾關於統計和應用概率的專著,第95卷)給出了很好的建議(第221頁),如果預測性能是最重要的,那麼不要做任何功能選擇,只需使用嶺回歸。那就是關於子集選擇的書!!! ; o)

chl
2010-09-02 15:46:12 UTC
view on stackexchange narkive permalink

這是一個很好的問題,在處理SNP數據時我遇到了我自己...而且在文獻中我沒有找到任何明顯的答案。

無論您使用LOO還是K-fold CV,您都會得到不同的功能,因為交叉驗證迭代必須是最外部的循環,如您所說。您可以想到一種投票方案,該方案將對您從LOO-CV獲得的特徵的n個向量進行評分(不記得該論文,但是值得檢查 Harald Binder AntoineCornuéjols)。在沒有新的測試樣本的情況下,通常要做的是一旦找到最佳的交叉驗證參數,就將ML算法重新應用於整個樣本。但是以這種方式進行操作,就不能確保沒有過度擬合(因為該樣本已經用於模型優化)。

或者,您可以使用嵌入式方法,為您提供通過度量來進行特徵排名的方法具有不同的重要性,例如就像隨機森林(RF)中一樣。由於RF中包含交叉驗證,因此您不必擔心$ n \ ll p $的情況或維數的詛咒。以下是有關它們在基因表達研究中的應用的好論文:

  1. Cutler,A.,Cutler,D.R.和Stevens,J.R.(2009)。 《癌症研究中的高維數據分析》中的基於樹的方法,Li,X.和Xu,R.(eds。),第83-101頁,Springer。
  2. Saeys,Y.,Inza,I.和Larrañaga,P.(2007)。生物信息學中的特徵選擇技術綜述。 Bioinformatics 23(19):2507-2517。
  3. Díaz-Uriarte,R.,Alvarez deAndrés,S.(2006年)。使用隨機森林對基因芯片數據進行基因選擇和分類。 BMC生物信息學 7 :3。
  4. Diaz-Uriarte,R.(2007年)。 GeneSrF和varSelRF:基於網絡的工具和R包,用於使用隨機森林進行基因選擇和分類。 BMC生物信息學 8 :328
  5. ol>

    由於您在談論SVM,因此可以查找懲罰的SVM

感謝那。我並不特別在SVM上出售產品,僅以它為例。因此,如果您使用隨機樹,則不必進行交叉驗證?那正確嗎。
是的,RF包括在生長一棵樹時隨機抽樣的變量變量(通常為$ \ sqrt {p} $),每棵樹均基於個體的增強樣本;使用置換技術,對所謂的“自付費用”樣本(不用於構建決策樹的樣本)計算變量重要性。對m棵樹(默認m = 500)重複該算法,並對結果求平均值以補償樹級別的不確定性(增強)。
重要的是,它被稱為隨機森林而不是隨機樹。您可能在使用Google時遇到了​​問題。
+1,對我來說是個好答案,很偶然-非常感謝您的論文參考,尤其是評論。
有了足夠的數據,不是最好提供一個測試集,對訓練集執行loocv以優化模型參數,擬合整個訓練集(並稱其為“最終”分類器),然後評估最終模型在測試儀上?
我認為這是交叉驗證的“嵌套”類型,但這仍然可以。至少這是Andrew Ngs機器學習課程的方法。
Joris Meys
2010-09-02 16:29:48 UTC
view on stackexchange narkive permalink

要添加到chl中:使用支持向量機時,強烈推薦的懲罰方法是彈性網。這種方法會將係數縮小到零,並且理論上保留了模型中最穩定的係數。最初它是在回歸框架中使用的,但是很容易擴展以與支持向量機一起使用。

原始出版物:Zou和Hastie(2005):正則化和變量選擇通過彈性網。統計學家協會B,67-2,pp.301-320

用於SVM的彈性網:Zhu & Zou(2007):支持向量機的變量選擇:神經計算趨勢,第2章(編輯:Chen和Wang)

對彈性網的改進 Jun-Tao和Ying-Min(2010年):用於癌症分類和基因選擇的改進彈性網:自動化學報,36-7,pp.976-981

Aniko
2010-09-02 20:56:38 UTC
view on stackexchange narkive permalink

在第6步(或第0步)中,您需要對整個數據集運行特徵檢測算法。

邏輯如下:您必須將交叉驗證視為一種找出特徵的算法。用於選擇功能的過程的屬性。它回答了一個問題:“如果我有一些數據並執行此過程,那麼對新樣品進行分類的錯誤率是多少?”。知道答案後,就可以對整個數據集使用該過程(功能選擇+分類規則開發)。人們喜歡一勞永逸,因為預測屬性通常取決於樣本量,並且$ n-1 $通常足夠接近$ n $無關緊要。

我認為,使用同一樣本(1)在調整其參數(最終通過特徵選擇)時評估分類器分類/預測性能時仍然存在一個泛化問題,(2)反過來在整個數據集上使用其預測。實際上,您正在打破使用交叉驗證所闡述的過度擬合所施加的控制。 Hastie等。提供一個很好的CV陷阱說明,尤其是。 wrt。功能選擇,請參見他們的ESL書,第2版的7.10.2。
@chl:誰說過有關調整參數的內容?如果執行了其他操作,則在交叉驗證期間也應重複執行這些操作。明確修改算法,直到獲得良好的交叉驗證錯誤率才“作弊”。順便說一句,我同意交叉驗證,尤其是留一法,並不是那麼好。
並不是說這不是作弊,因為CV向您顯示了算法將如何對新數據執行的近似值。您只需要確保您還沒有基於整套設備就可以解決問題(這是有關整套設備結構的信息洩漏,因此它可以立即對所有列車部件產生偏差)。
@mbq-Ankino是正確的,調整模型以最大程度地降低CV統計量是“作弊”,最終模型的CV統計量將具有很大的樂觀偏見。原因是CV統計量具有不可忽略的方差(因為它是根據有限的一組數據進行評估的),因此,如果直接優化CV統計量,則可能會過度擬合它,最終可以得到一個模型概括性不如您剛開始的那樣。有關此的演示,請在機器學習上下文中參閱http://jmlr.csail.mit.edu/papers/v11/cawley10a.html解決方案:使用嵌套的XVAL
FMZ
2012-02-02 08:49:28 UTC
view on stackexchange narkive permalink

這就是我選擇功能的方式。假設基於某些知識,有2個模型要進行比較。模型A使用1號到1號特徵。 10.模型B使用11至11號。 20.我將LOO CV應用於模型A,以獲得其樣本外性能。對模型B執行相同操作,然後進行比較。

shabbychef
2010-09-03 04:05:56 UTC
view on stackexchange narkive permalink

我不確定分類問題,但在針對回歸問題進行特徵選擇的情況下,邵軍證明了 Leave-One-Out CV漸近不一致,即選擇隨著樣本數量的增加,特徵的適當子集不會收斂到1。從實際的角度來看,Shao建議進行Monte-Carlo交叉驗證或遺忘處理程序。

哦,我的,再一次;你讀過這篇文章的標題嗎?
好的,要明確-我並不是說LOOCV對於大量對像是個好主意;顯然不是,但邵不適用於此。實際上,在大多數情況下,LM的規則並不適用於ML。
當查看具有大量特徵且模式相對較少的數據集時,漸近結果是否實際使用還存在疑問。在那種情況下,程序的變化可能比偏差或一致性具有更大的實際重要性。 LOOCV的主要價值在於,對於許多模型而言,它可以以可忽略的計算費用來實現,因此,儘管與自舉法相比,方差更高,但它可能是可用的計算預算中唯一可行的方法。這就是為什麼我使用它,但是我使用其他東西進行性能評估!


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 2.0許可。
Loading...