如何填充我的數據,以便我只獲得欠採樣採樣技術而不進行建模。 我需要對過採樣和稱重做同樣的事情。 我正在嘗試使用這三種採樣技術(當然一次一種)來運行 xgboost。 因此,我需要一個顯示欠採樣的資料集、一個用於過採樣的不同資料集以及第三個用於稱重的資料集。 謝謝。
你好@尼莎庫馬爾,
您可能有幾種方法可以做到這一點,這可能取決於您的最終目標是什麼,哪種方法更好。
一種選擇是建立驗證列,將其高度偏移到一個變量,例如 10% 的訓練和 90% 的驗證,然後建立訓練資料的子集並對其進行擬合。 將擬合公式儲存到子集表中,然後將其帶回原始資料表,並查看擬合在未經訓練的資料上的效果如何。 然後,您可以透過將驗證資料視為「訓練」資料來執行相反的操作,重複上述步驟並查看它與訓練(「驗證」)資料集的擬合程度。 如果您想根據正在建模的輸出對驗證列進行分層,則可以執行此選項,但是,如果您不在乎,則可以嘗試其他選項。
另一個選擇是使用“行”>“行選擇”>“隨機選擇”,並使用10% 或90%,甚至1% 和99%,然後為每個資料建立子集,進行擬合並將公式帶回將它們與原始表中未使用的數據進行比較。
至於對資料進行加權,這在很大程度上取決於您使用的資料集以及如何處理資料。 如果您有看起來異常的數據,但沒有理由將它們從數據集中刪除,您可以將它們的權重小於其他數據,這樣它們就不會偏向擬合,但您需要單獨查看這些數據才能看到如何處理此類情況。
我使用 Boston Housing.jmp 樣本數據嘗試了第二種方法,結果非常好。 它並沒有完全過度擬合數據,從而在過採樣數據集的「驗證」數據上為我提供更大的 R^2,但它比使用驗證列並使用驗證列擬合數據要大。
順便說一句,我使用 XGBoost 平台擬合數據,並且(響應 = mvalue;所有其他列均為 X,因子)使用預設設定並選中“自動調諧”框。
欠採樣結果(1=訓練,0=驗證):


過採樣(1=訓練,0=驗證):


以下是使用根據 mvalue 分層的 .75/.25 訓練/驗證列的結果:


最後一個驗證資料的 R^2 不如過採樣模型那麼高,但它可能更準確,因為模型驗證中使用的樣本比使用太多樣本進行訓練時使用的樣本更多。
不管怎樣,我希望這能給你一些關於如何進一步實現你的特定目標的想法。
祝你好運!,
DS
非常感謝您,我將一一嘗試這些技術並提供反饋/問題。