將資料標準化
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
重新調整數值資料以將資料集值限制為標準範圍
類別: 資料轉換/調整和縮減
模組概觀
本文說明如何使用 機器學習 Studio (傳統) 中的Normalize Data模組,透過正規化轉換資料集。
正規化是一種技術,通常會在機器學習的資料準備過程中套用。 正規化的目標是要將資料集中數值資料行的值變更為使用一般縮放,而不會在值範圍下產生扭曲差異或遺失資訊。 某些演算法也需要正規化,才能正確地為資料建立模型。
例如,假設您的輸入資料集包含一個資料行,其值範圍從 0 到 1,而另一個資料行的值範圍從 10,000 到 100,000。 嘗試在模型化期間將值結合成特徵時,數值量表的大幅差異可能會造成問題。
正規化可避免這些問題,方法是建立新的值,以在來源資料中保有一般分佈和比例,同時將量表內的值對模型中所使用的所有數值資料行套用。
此課程模組提供數個選項來轉換數值資料:
- 您可以將所有值變更為 0-1 量表,或藉由將它們以百分位數排名而非絕對值表示來轉換值。
- 您可以將正規化套用至單一資料行,或相同資料集中的多個資料行。
- 如果您需要重複實驗,或將相同的正規化步驟套用至其他資料,您可以將步驟儲存為正規化轉換,並將其套用至具有相同架構的其他資料集。
警告
有些演算法會要求在定型模型之前必須先將資料正規化。 其他演算法則會執行其本身的資料調整或正規化。 因此,選擇要在建置預測性模型中使用的機器學習演算法時,請務必先檢閱演算法的資料需求,然後再將正規化套用至定型資料。
如何設定標準化資料
您一次只能使用此課程模組來套用一個正規化方法。 因此會將相同的正規化方法套用至您選取的所有資料行。 若要使用不同的正規化方法,請使用正規化資料的第二個執行個體。
將 標準化資料 模組新增至實驗。 您可以在 [調整和縮減] 類別的 [資料轉換] 底下,于 [機器學習 Studio] (傳統) 中找到模組。
連接包含至少一個全為數字資料行的資料集。
使用資料行選取器來選擇要正規化的數值資料行。 如果您未選擇個別資料行,則預設會包含輸入中的所有數值類型資料行,並將相同的正規化程序套用至所有選取的資料行。
如果您包含不應該正規化的數值資料行,這可能會導致奇怪的結果! 一律仔細檢查資料行。
如果未偵測到任何數值資料行,請檢查資料行中繼資料,以驗證資料行的資料類型是支援的數值類型。
提示
若要確保提供特定類型的資料行做為輸入,請在正規化資料之前,先嘗試使用 [選取資料集中的資料行]模組。
核取時對常數資料行使用 0:當任何數值資料行包含單一不變的值時,請選取此選項。 這可確保在正規化作業中不會使用這類資料行。
從 [轉換方法] 下拉式清單中,選擇要套用至所有選取資料行的單一數學函數。
Zscore:將所有值轉換為 z 分數。
資料行中的值會使用下列公式進行轉換:
平均值和標準差會針對每個資料行而分開計算。 使用母體擴展標準差。
MinMax:min-max 正規器會以線性方式將每個特徵重新調整為 [0,1] 間隔。
轉換每個特徵的值而使最小值為 0,然後再除以新的最大值 (這是原始最大值與最小值之間的差異),重新調整為 [0,1] 間隔的作業即完成。
資料行中的值會使用下列公式進行轉換:
Logistic:資料行中的值會使用下列公式進行轉換:
LogNormal:此選項會將所有的值轉換為對數量表。
資料行中的值會使用下列公式進行轉換:
這裡的 μ 和 σ 是分佈的參數,針對每個資料行而分開計算,從資料中根據實證以最大可能性估計來計算。
TanH:所有值都會轉換為雙曲正切。
資料行中的值會使用下列公式進行轉換:
執行實驗,或按兩下 [正規化資料 ] 模組,然後選取 [ 執行選取]。
結果
標準化資料模組會產生兩個輸出:
若要檢視轉換的值,請以滑鼠右鍵按一下模組,選取 [ 已轉換的資料集],然後按一下 [ 視覺化]。
預設會就地轉換值。 如果您想要比較已轉換的值與原始值,請使用 [新增 資料行] 模組來重新組合資料集,並排檢視資料行。
若要儲存轉換,以便您將相同的正規化方法套用至另一個類似的資料集,請以滑鼠右鍵按一下模組,選取 [轉換函式],然後按一下 [ 另存新檔轉換]。
然後,您可以從左側瀏覽窗格的 [轉換] 群組載入已儲存的轉換,然後使用套用轉換將它套用至具有相同結構描述的資料集。
範例
如需如何在機器學習中使用正規化的範例,請參閱 Azure AI 資源庫:
- 信用風險預測:在此範例中,正規化會套用至類別資料行以外的所有數值資料,也就是信用風險分數。 這個範例會使用 tanh 轉換,將所有數值特徵轉換成 0-1 範圍內的值。
技術說明
本課程模組僅支援 How to 區段中所列的標準正規化方法,而且不支援矩陣正規化或其他複雜的轉換。
如果您需要建立自訂正規化方法,您可以使用 執行 R 腳本 或 執行 Python 腳本 模組來計算並套用轉換。
套用正規化的演算法
正規化功能,使其使用一般規模是許多機器學習演算法的一般需求。
在線性分類演算法中,會將執行個體視為多維度空間中的向量。 由於原始資料的值範圍變化很大,因此有些目標函數未經正規化即無法正常運作。 例如,如果其中一項特徵的值範圍很大,則點之間的距離就會受到此特徵的控制。
因此應正規化數值特徵,使每個特徵均等地貢獻於最終距離。 這可以大幅提升速度和精確度。
使用 羅吉斯回歸 和 平均 Perceptron 演算法時,根據預設,特徵會在定型之前正規化。
延伸閱讀和資源
如果您不確定哪種類型的正規化適合您的資料,請參閱下列資源:
建議「我的資料模組」:Azure ML小組成員的這個自訂模組會評估您的資料集,並建議清除和調整資料的步驟。
特徵調整:Wikipedia 中的本文說明用來正規化數值資料的基本方法。
資料採礦的資料準備 涵蓋許多資料準備步驟。 如需資料正規化的討論,請參閱第 7 章。
預期的輸入
名稱 | 類型 | 描述 |
---|---|---|
資料集 | 資料表 | 輸入資料集 |
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
轉換方法 | 任意 | TransformationMethods | ZScore | 選擇用於調整的數學方法 |
要轉換的資料行 | 任意 | ColumnSelection | NumericAll | 選取要套用所選轉換的所有資料行 |
輸出
名稱 | 類型 | 描述 |
---|---|---|
已轉換的資料集 | 資料表 | 已轉換的資料集 |
轉換函數 | ITransform 介面 | 轉換函數的定義,可以套用至其他資料集 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0001 | 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。 |
錯誤 0003 | 如果一或多個輸入為 Null 或空白,就會發生例外狀況。 |
錯誤 0017 | 如果一或多個指定的資料行具有目前模組不支援的類型,就會發生例外狀況。 |
錯誤 0020 | 如果傳至模組的某些資料集中的資料行數目太少,就會發生例外狀況。 |
錯誤 0021 | 如果傳至模組的某些資料集中的資料列數目太少,就會發生例外狀況。 |
如需 Studio (傳統) 模組特有的錯誤清單,請參閱錯誤碼機器學習。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。