簡體   English   中英

預處理插值R插入符號和預測

[英]preprocess imputation R caret and predicting

我注意到預測()僅會在完整案例上創建預測。 我已經列入medianImpute在預處理選項,如下列:

train(outcome ~ ., 
        data = df,
        method = "rf", 
        tuneLength = 5,
        preProcess = c("YeoJohnson", "center", "scale", "medianImpute"),
        metric = 'ROC', 
        trControl = train_ctrl)
}

這是否意味着我應該在訓練集合之前對缺失值進行插補? 如果沒有,我將無法為測試集中的所有案例創建預測。 我已經在庫恩博士的書中讀到,交叉驗證期間應該進行預處理...謝謝!

如果使用中medianImpute則絕對需要在訓練集之前進行,否則,即使您用中medianImpute測試集,結果也將是錯誤的。

以以下極端情況為例:

您只有一個由數字1到100組成的獨立變量X。想象一下將數據集拆分為50%的測試集和50%的訓練集的極端情況, 其中1到50出現在測試集中,數字51在訓練中達到100

> median(1:50)  #test set median
[1] 25.5
> median(51:100) #training set median
[1] 75.5

使用您的代碼(插入符號的訓練函數),訓練集中的缺失值將被75.5代替。 這將產生三個主要問題:

  1. 您不能對測試集使用相同的方法(medianImpute) ,因為測試集中的缺失值將被25.5替換
  2. 您無法用75.5手動替換測試集中的缺失值,因為75.5的值比測試集的最大值高得多,因此您會大大偏斜它。
  3. 插入符號包的功能序列,將嘗試找出適合您模型的最佳參數(調整)。 當完整數據集的中位數(估算缺失數據的正確值)為50.5時,用75.5替換缺失值將使用錯誤的參數值來調整模型。

因此,最好的辦法是創建訓練集之前考慮丟失的數據。

希望這可以幫助!

暫無
暫無

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

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