Leo Yeh's Blog

SAS 機器學習 (9)

教學目標

初步了解 SAS Visual Data Mining and Machine Learning 建立機器學習模型時需要先進行資料預處理的基本概念,此篇主要為學習筆記。

重點概念

首先當我們需要建立機器學習模型時需要先進行資料預處理,資料預處理包括了一系列不同的原始結構化和非結構化的資料,其來自一個或多個資料來源,資料預處理過程側重於改進資料的品質和完整性,標準化的定義和結構,收集方式並鞏固它,又及採取轉換步驟使其有用,特別是對於機器學習分析。準備過程的選擇和類型可能會因資料專業知識,計劃如何與資料交互,以及想回答的問題類型有所不同,資料問題分別為:

  1. 資料收集:主要有偏差資料、不完整資料、高維度資料和稀疏資料等問題。
  2. 不整潔的資料:主要有以值的範圍為欄、在相同欄中有多個變數和變數同時在資料列和欄等問題。
  3. 離群值:主要有超出範圍的數值和未知評分資料的類別值等問題。
  4. 稀疏目標變數:主要有主要事件發生率低和目標值中有過多的零或遺漏值等問題。
  5. 不同的變數大小:主要有誤導變數的重要性和距離測量不平衡等問題。
  6. 高基數變數:主要有過度擬合和取得資料中有未知分類值等問題。
  7. 遺漏資料:主要有資訊遺失和偏差等問題。
  8. 強多重共線性:主要有參數估計不穩定等問題。

為了解決上述資料問題,此時我們將會執行特徵選取或特徵擷取,其目標是包括特徵的子集描述方差的大部分,但不是全部,並降低資料中的訊噪比,雖然消除特徵等同於資訊的丟失,但是結束這種損失可以透過模型更準確地對應剩餘的能力來補償,針對低維度資料集中對目標的特徵,其結果是更簡單的模型,縮短訓練時間,改善泛化,以及更大可視化特徵空間的能力,而針對高維度資料集需要特別注意有效地執行特徵擷取。

接著需要透過 SAS 程式碼節點確保不會從分析中拒絕具有高基數的變數,預設拒絕超過 20 個等級別的名義變數,最高可接受的基數等級別為 1000。然而將高基數名義變數轉換為數值的轉換,等級別編碼不是理想的轉換,但它在工作方面效果很好與從分析中排除這些變數相比,提高了模型精度,請注意只有在執行轉換節點時才會在中繼資料中指定轉換,因此在連接到 SAS 的轉換節點中的 SAS 程式碼節點,沒有為類別輸入指定轉換,高基數變數的更有效轉換包括基於目標的轉換,像是建立一個捕獲標稱每個級別出現頻率的特徵變數。對於高基數我們可以使用所有級別的比率或存在百分比水平,或者使用另一個數值輸入對於高基數變數進行編碼通過為高基數名義變數的每個級別選擇該變量的最大值,最小值或中值來變數。

再來當執行特徵選取或特徵擷取將會增加執行時間,除了自動化超參數調整之外,我們也可以打開以查找漸變的最佳超參數設置提升演算法,因此特徵集之間的比較更公平,而不依賴超參數,但是自動調整還需要額外的計算成本的功能。若是此步驟運行時間過長,則我們可以更改自動調整設置,或者只是將其關閉並使用預設的超參數設置。此外若執行執行整個管線,則會資源不足的錯誤,建議逐個節點地執行管線,至於資料準備之最佳實務主要能夠分為三大步驟,第一步驟針對對高基數的變數執行等級編碼,第二步驟使用最佳轉換、PCA、SVD 或自動編碼器建立新特徵,第三步驟則是將新設計的功能的預測效能與原始特徵進行比較,特徵集用於梯度增強演算法的輸入,使用梯度增強演算法是因為它是有效的監督學習在預測準確性方面通常優於其它的演算法。

最後當然針對一些挑戰我們也可以在建模階段處理,像是使用基於樹的方法自動處理遺失的資料,以及針對不同資料問題的挑戰,我們將會有對應的建議作法,分別為:

  1. 資料收集:主要花時間了解一下業務問題及其背景豐富資料量,並且透過特徵擷取、變數分群和變數選取節點縮減資料維度。
  2. 不整潔的資料:主要透過 SAS 程式節點撰寫 SAS 程式碼進行轉換。
  3. 離群值:主要透過轉換節點進行離散化,以及透過設算節點進行極值調整。
  4. 稀疏目標變數:主要進行成比例的取樣。
  5. 不同的變數大小:主要透過轉換節點進行標準化。
  6. 高基數變數:主要透過轉換節點進行分箱,以及透過取代節點進行取代。
  7. 遺漏資料:主要透過轉換節點進行分箱,以及透過設算節點進行設算。
  8. 強多重共線性:主要透過特徵擷取、變數分群和變數選擇節點降低維度。

相關資源

⬅️ Go back