資料預處理你好
我想在我的資料集上應用非參數方法,例如決策樹、隨機森林、樸素貝葉斯、SVM、神經網路和提升樹。在應用這些模型之前我應該執行哪些預處理步驟?
基礎資料分析與建模預測建模和機器學習回覆:數據預處理你好@maryam_nourmand ,
如果您正在談論使用帶有 K 折疊交叉驗證方法的「製作驗證列」 ,您可以在分層列面板中使用所有預測變數(X 變數)(以確保折疊對於 X 的分佈而言是均勻的)變量)以及您在Y 面板中的響應:JMP 將根據響應值對折疊之間的行進行排序和分佈,以確保折疊對於響應而言是同質的,從而避免在交叉驗證期間出現有偏差的學習和評估: 啟動 Make Validation Column 平台 (jmp.com)
如果有多行對應於相同 ID/群組,請透過在「分組列」面板中使用此 ID/群組列來保留此資料結構。
希望這能回答您的問題,
回覆:數據預處理你好
感謝您的回答
如果我想使用(K-folds交叉驗證)並且我的回應類型是calcategorized
當我想選擇 y 列時,我應該將所有預測變數和反應變數放入其中,還是只放入我的反應變數?
回覆:數據預處理嗨@maryam_nourmand ,
在談論預處理時,通常有幾個步驟來準備用於分析的資料:
0.資料分區:將資料分為訓練集、驗證集和測試集,或規劃驗證(K 折交叉驗證、留一法等)和測試策略。應先完成此操作,以確保您之後可能執行的任何資料轉換不會導致資料洩漏,這意味著可以在模型訓練期間找到來自預處理步驟的驗證和測試集的部分資訊(資料範圍、分佈、插補技術、 ...)。您可以使用「建立驗證列」(jmp.com)來執行此步驟。
- 資料清理:我識別並糾正資料集中的錯誤或不一致,以確保資料具有高品質並適合分析或模型訓練。
- 缺失值:可以排除行、進行資料插補或不執行任何操作。請注意使用探索缺失值 (jmp.com)平台分析您的缺失值,檢查它們是否為 MAR(隨機缺失)、MCAR(完全隨機缺失)或 MNAR(非隨機缺失)。根據您擁有的缺失值的類型/模式,某些選項可能比其他選項更好。
- 與您提到的其他演算法相比,基於樹的模型對缺失值更加靈活,並且可以將缺失值視為資訊性的: Informative Missing (jmp.com) 。
- 對於神經網路平台,您可以在啟動平台時選取「資訊缺失」選項以啟用缺失值插補和編碼。如果不選取此選項,則該行將從分析中排除。
- 當只有很少的缺失值時,樸素貝葉斯就不會出現缺失資料的問題。
- 預設情況下,SVM 將排除至少有一個缺失值的行。
- 異常值:排除它們、平衡/權衡它們(透過頻率或透過轉換)的可能性,或什麼都不做。您可以透過Explore Outliers (jmp.com)平台使用多種方法來偵測它們。
- 重複:可以排除它們、降低它們的頻率或不執行任何操作。您可以使用Explore Patterns (jmp.com)平台來偵測它們(以及其他模式)。
- 重複可能會影響所有演算法,因為與其他點相比,它會透過支援或強制重複點中發現的特定模式來影響學習。如果在將資料拆分為訓練集、驗證集和測試集時不考慮這些因素,也可能導致模型效能的過度擬合和錯誤評估。機器學習方法與統計建模有很大不同,統計建模使用重複項來評估變異數和不確定性。
- 變數縮放/歸一化:將所有特徵/變數值納入相似的範圍,而不扭曲值範圍的差異,以避免大範圍的特徵主導那些範圍/變化較小的特徵。
這對於基於距離或相似性的演算法很有幫助,例如 SVM、KNN、神經網路、(線性和邏輯)回歸,並且預設已由 JMP 完成(KNN 範例: https://community.jmp.com/ t5/印度-JMP-使用者群組庫/JMP-K-Nearest 中的機器學習預測建模/ta-p/720639 )
基於樹的模型和基於機率的演算法(例如樸素貝葉斯)可能不需要縮放。
- 處理分類資料:編碼時,需要使用標籤編碼、one-hot 編碼、虛擬編碼等對分類資料進行編碼...幸運的是,在JMP 中,這已經完成並準備好了,無需自己執行(回歸模型的範例) ):
名目效應編碼的統計詳細資料 (jmp.com)
序數因子 (jmp.com)
Stackexchange 的類似問題與解答:
機器學習 - 除了 SVM 之外,哪些演算法需要特徵縮放? - 交叉驗證 (stackexchange.com)
異常值和缺失值如何影響這些分類器? - 資料科學堆疊交換
正如我已經在另一個主題(以及 LinkedIn 上)中所寫的那樣,如果您想使用 ML 演算法進行首次快速測試,請嘗試使用隨機森林:
- 對異常值具有穩健性
- 對雜訊的敏感度低(裝袋有助於減少方差)
- 由於引導和可用的“袋外”(每個引導樣本中未使用的樣本)性能驗證,不太容易出現過度擬合
- 良好的泛化性能
- 由於決策樹集合可以使用“if-else”規則處理非線性邊界,因此可以輕鬆處理非線性情況
- 透過每個節點的隨機特徵子集選擇來控制變數之間的多重共線性
- 可調節性低:效能對超參數調整不是很敏感(請參閱我關於使用 DoE 進行隨機森林超參數調整的最新文章)
- 處理稀疏資料的能力
- 與其他演算法相比更容易解釋(使用「內建」特徵重要性)
- 相對快速且有效率的計算(取決於所使用的樹的數量和深度):由於各個樹彼此獨立,因此訓練過程可以並行化。
因此,如果您正在尋找一種準確、穩健、通用、可擴展且不易過度擬合的演算法來分析資料集,那麼隨機森林可能是一個很好的起點和基準。始終先從簡單的演算法和良好的驗證策略開始來評估和比較您的模型,然後再使用神經網路等可能需要多層驗證(以建立和微調它們)的複雜演算法。
我希望這個長答案能幫助你