簡體   English   中英

插入包:是否可以實現自己的bootstrapping方法?

[英]caret package: Is it possible to implement my own bootstrapping method?

我正在使用R的caret包來為我的模型選擇變量。 使用rfe命令時,應該傳遞rfeControl對象,該對象具有方法參數。 此參數的選項為boot,cv,LOOCV和LGOCV。 由於我正在處理時間序列數據,我需要使用特殊的自舉/交叉驗證技術,因為正常情況不適用於時間序列數據(否則分布會被破壞等)。

我的問題是如何插入我自己的bootstrapping實現,但仍然使用caret rfe方法,它有我需要的所有其他東西。

沒有一個簡單的方法。 如果你學習rfe.default()的代碼,你會注意到在method = "boot"的情況下,使用了createResample()函數。 這是生成引導樣本的函數。 類似的函數用於其他CV方法。

有一個艱難的方法; 超越最合適的create*()函數; 假設您要執行塊引導程序或ME引導程序,接管createResample()函數並使用method = "boot" ,或者如果您需要特殊形式的CV,請使用method = "cv"並接管createFolds()

您需要編寫自己的create*()函數,並用您的版本替換插入符號NAMESPACE中的那個。 不容易,但非常可行。 假設您編寫自己的createResample()函數; 首先,您需要注意,此函數會創建n = times引導樣本,並將其返回到矩陣中,其中包含times列和與樣本一樣多的行。 您需要編寫一個自定義的createResample()函數,該函數返回相同的對象,但該函數執行您要使用的時間序列引導。

一旦編寫了該函數,就需要將它放入插入符號命名空間,以便插入符號包中的函數使用它。 為此,您使用assignInNamespace() 假設您的新引導函數名為createMyResample()並且它是您的工作區,將其插入到插入符名稱空間中:

assignInNamespace("createResample", createMyResample, ns = "caret")

對不起,我不能更具體,但你沒有說你希望如何執行bootstrap / CV,也沒有說你想用什么R代碼進行重新采樣。 如果您提供有關如何進行重新采樣的更多詳細信息,我將再看看,看看我是否可以幫助您編寫create*()函數。

如果沒有這一切,請聯系插入符號的作者和維護者Max Kuhn; 他或許可以進一步提出建議,或者至少可以建議將此功能作為未來版本的願望清單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM