將資料分組成 Bin
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
將數值資料分組
類別: 調整和縮減
模組概觀
本文說明如何在 機器學習 Studio 中使用群組資料到 Bins模組, (傳統) ,將數位分組或變更連續資料的分佈。
將資料分組成 Bin模組支援量化資料的多個選項。 您可以自訂量化邊緣的設定方式,以及如何將值分配到 Bin 中。例如,您可以:
- 手動輸入一系列值作為 Bin 界限。
- 計算 Entropy 分數以判斷每個範圍的資訊值,以優化預測模型中的量化。 + 使用 分位數或百分位數排名,將值指派給量化。
- 也可以控制每個量化中的值數目。
- 強制將值平均散發至 Bin。
深入了解量化和群組
量化 或分組資料 (有時稱為 量化) 是準備機器學習數值資料的重要工具,在這類案例中很有用:
連續數值的資料行有太多唯一值可有效率地進行模型化,因此您可以自動或手動將值指派給群組,以建立較小的離散範圍集。
例如,您可以使用群組資料產生的 Entropy 分數 ,將資料分割成 Bin 來識別資料值的最佳群組,並使用這些群組作為模型中的功能。
以代表特定範圍的類別值來取代數值的資料行。
例如,您可能想要藉由指定自訂範圍 (例如,1-15、16-22、23-30 等等) 來將年齡資料行中的值群組在一起,以取得使用者人口統計。
資料集有幾個極端的值,全都在預期的範圍外,而這些值對定型的模型有巨大影響。 若要減輕模型中的偏差,您可以使用分位數 (或高度相等) 方法,將資料轉換成統一分佈。
使用此方法時,將資料分組成 Bin 模組會決定理想的 Bin 位置和 Bin 寬度,以確保大約相同數目的樣本落在每個 Bin 中。 然後,根據您選擇的正規化方法,會將 Bin 中的值轉換成百分位數或對應到 Bin 數值。
量化的範例
下圖顯示使用分位數方法進行量化前後,數值的分佈。 請注意,相較於左側的未經處理資料,資料已經過量化並轉換成一般單位的規模。
另一種量化方法示範于 「醫院」偵測 範例中,其中「 將資料分組到量化」 可用來將病患指派給各種控制與測試群組,以確保每個群組都有相等的病患數目。
因為有這麼多的方式可將資料分組,而且全部都可以自訂,所以我們建議您試驗不同的方法和值。 [範例] 區段包含範例實驗的連結,示範如何使用不同的量化演算法。
如何設定將資料分組成 Bin
將 群組資料新增至 Bins 模組至 Studio 中的實驗, (傳統) 。 您可以在 [ 資料轉換] 類別的 [ 調整和縮減] 下找到此課程模組。
將具有數值資料的資料集連線到 Bin。 量化只能套用至包含數值資料的資料行。
如果資料集包含非數值的資料行,請使用選取資料集中的資料行模組,選取要使用的資料行子集。
指定量化模式。 量化模式會決定其他參數,因此請務必先選取 [量化模式 ] 選項! 支援下列類型的量化:
Entropy MDL:這個方法會要求您選取要預測的資料行,以及要分組為量化的資料行或資料行。然後,它會進行資料傳遞,並嘗試判斷最小化 Entropy 的量化數目。 換句話說,它會選擇數個量化,讓資料行能夠最能預測目標資料行。 然後,它會傳回與資料行中
<colname>quantized
每個資料列相關聯的 bin 編號。。如果 Entropy MDL 方法找不到一開始將資料量化以做出良好預測的方法,則會將所有資料指派給統一量化。 這並不表示資料行不是良好的預測值。 在此情況下,您可以使用其他方法來尋找將 Entropy 最小化的量化數目,並讓資料成為更好的預測值。
這個方法不會傳回實際的 Entropy 分數。
分位數:分位數方法會依據百分位等級,將值指派至分類收納。 分位數也稱為等高量化。
等寬:使用此選項時,您必須指定 Bin 的數目總計。資料資料行中的值會放入 Bin,使得各個 Bin 都有開始值和結束值之間的相同間隔。 如此一來,如果資料聚集在特定點周圍,某些分類收納可能會更多值。
自訂邊緣:您可以指定每個 Bin 開頭的值。 邊緣值一律是 Bin 的下限。 例如,假設您想要將值分組成兩個 Bin,其中一個的值大於0,另一個的值小於或等於 0。 在此情況下,針對 bin 邊緣,您會在 間隔邊緣的逗號分隔清單中輸入 0。 模組的輸出會是 1 和 2,表示每個資料列值的 Bin 索引。
與 [自訂開始] 和 [停止] 相等寬度:這個方法就像 [ 等寬] 選項,但您可以同時指定下限和上限間隔界限。
量化數目:如果您使用 Entropy MDL、 Quantiles和 Equal Width 量化模式,請使用此選項來指定您想要建立的量化或 分位數。
針對 [要量化的資料行],使用資料行選取器來選擇含有您要量化值的資料行。 資料行必須是數值資料類型。
相同的量化規則會套用到您選擇的所有適用資料行。 因此,如果您需要使用不同方法來量化一些資料行,請針對每個資料行集,使用個別的將資料分組成 Bin 執行個體。
警告
如果您選擇的資料行不是允許的類型,則會產生執行階段錯誤。 當模組找到不允許類型的任何資料行時,就會傳回錯誤。 如果您收到錯誤,請檢閱所有選取的資料行。 此錯誤不會列出所有無效的資料行。
針對輸出模式,指出您要如何輸出量化值。
Append:使用已量化的值來建立新資料行,並將該資料行附加至輸入資料表。
Inplace:以資料集中的新值取代原始值。
ResultOnly:只傳回結果資料行。
如果您選取 [分位數] 量化模式,請使用 [分位數正規化] 選項,以決定在排序為分位數之前如何將值正規化。 請注意,正規化值會轉換值,但不會影響最終的量化數目。如需範例,請參閱 不同正規化方法的效果。
支援下列正規化類型:
Percent:值會在範圍 [0,100] 中正規化
PQuantile:值會在範圍 [0,1] 中正規化
QuantileIndex:值會在範圍 [1,間隔數目] 內正規化
如果您選擇 [自訂邊緣] 選項,請在 + [量化邊緣的逗號分隔清單] 文字方塊中,輸入以逗號分隔的數值清單,作為「量化邊緣」。 這些值會標示分割 Bin 的點,因此,如果您輸入一個量化邊緣值,則會產生兩個 Bin;如果您輸入兩個量化邊緣值,則會產生三個 Bin,依此類推。
必須以分類收納的建立順序來將值排序,從最低到最高。
如果您使用 [ 等於寬度與自訂開始和停止]選項,則必須指定間隔的界限。
在 [第一個 邊緣位置 ] 文字方塊中輸入值,以定義第一個間隔的下限。
在 [最後一個 邊緣位置 ] 文字方塊中輸入值,以定義最後一個間隔的下限。
將資料行標記為類別:選取此選項可將中繼資料旗標自動新增至量化值的資料行。 中繼資料旗標表示量化資料行應該處理為類別變數。
執行實驗,或選取此課程模組,然後按一下 [執行選取]。
結果
將資料分組成 Bin 模組會傳回資料集,其中的每個元素均根據指定的模式量化。
其也會傳回量化轉換,這是一個函式,可以傳遞至套用轉換模組,以使用相同的量化模式和參數來將新的資料範例量化。
若要查看量化方法如何作為預測值,您可以按一下 群組資料到 Bin 的資料集輸出,並將標籤資料行與量化資料行進行比較。 如果量化群組是預測性的,交叉索引標籤矩陣中的值應該集中幾個資料格。
提示
請記住,如果您在定型資料上使用量化,就必須在用於測試和預測的資料上使用相同的量化方法。 這包括量化方法、Bin 位置和 Bin 寬度。
若要確保一律使用相同的量化方法來轉換資料,建議您儲存有用的資料轉換,然後使用套用轉換模組,將其套用至其他資料集。
範例
如需如何在機器學習案例中套用量化的範例,請參閱 Azure AI 資源庫:
- 預防疾病偵測:在此範例中,量化是用來使用病患識別碼欄位,將病患分成相等的群組。
- 航班延誤預測:使用分位數正規化將案例排序為 10 個間隔。
- Twitter 情感分析:分數會分組為代表排名分數的五個間隔。
技術說明
本節包含實作詳細資料、提示和常見問題集的解答。
不同正規化方法的效果
如果您選取 [ 分位數正規化] 選項,則會在量化之前轉換值。 因此,您為正規化選擇的方法對數值有強大的影響。
例如,下表說明單一資料行 fLength
中的值如何透過每個正規化方法來轉換,而來自 「中」資料集 的值。 系統會隨機播放資料行 fLength
來說明每個選項的輸出值,而且沒有常態分佈。
source (fLength) | pQuantile | QuantileIndex | 百分比 |
---|---|---|---|
28.7967 | 0.363636 | 4 | 36.363636 |
31.6036 | 0.454545 | 5 | 45.454545 |
162.052 | 0.909091 | 10 | 90.909091 |
23.8172 | 0.272727 | 3 | 27.272727 |
每個方法的量化結果都類似。
下圖顯示使用預設值 10 個量化之前和之後資料行中的值分佈。
實作詳細資料
在量化期間,每個數位都會對應到量化,方法是將其值與 bin 邊緣的值進行比較。
例如,如果值為 1.5,而 bin 邊緣為 1、2 和 3,則元素會對應至 bin 數位 2。 值 0.5 會對應到分組數字 1 (反向溢位分組),而值 3.5 會對應到分組數字 4 (溢位分組)。
如果要分類收納 (量化) 的資料行分布稀疏,則在填入所產生的資料行時,會使用分類收納索引位移 (分位數位移)。 因為選擇該位移,所以疏鬆 0 一律會移到索引為 0 (換句話說,就是值為 0 的分位數) 的分類收納。
疏鬆 0 會從輸入資料行傳播至輸出資料行。
處理密集資料行一定會產生最小分類收納索引等於 1 的結果,也就是,最小分位數值等於資料行中的最小值。 同時,處理疏鬆資料行會產生具有變數最小量化索引的結果, (最小分位數值) 。
所有 NaN 和遺漏的值都會從輸入資料行傳播至輸出資料行。 唯一的例外是模組傳回分位數索引的情況。 在此情況下,所有 Nan 會都升級為遺漏值。
分類收納是以 1 為基底。 這是分位數的自然慣例 (第 1 分位數、第 2 分位數等等)。 唯一的例外是要分類收納的資料行是稀疏的情況。
預期的輸入
名稱 | 類型 | 描述 |
---|---|---|
資料集 | 資料表 | 要分析的資料集 |
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
分類收納模式 | List | QuantizationMode | 分位數 | 選擇分類收納方式 |
要分類收納的資料行 | 任意 | ColumnSelection | NumericAll | 選擇量化的資料行 |
輸出模式 | 任意 | OutputTo | 指出如何輸出量化的資料行 | |
將資料行標記為類別 | 任意 | Boolean | true | 指出是否應該將輸出資料行標記為類別 |
分類收納數目 | >=1 | 整數 | 10 | 指定所需的分類收納數目 |
分位數正規化 | 任意 | BinningNormalization | 選擇正規化分位數的方法 | |
第一個邊緣的位置 | 任意 | Float | 0.0 | 指定第一個分類收納邊緣的值 |
分類收納寬度 | 任意 | Float | 0.5 | 指定自訂的分類收納寬度 |
最後一個邊緣的位置 | 任意 | Float | 1.0 | 指定最後一個分類收納邊緣的值 |
分類收納邊緣的逗號分隔清單 | 任意 | String | 輸入要做為分類收納邊緣數目的逗號分隔清單 |
輸出
名稱 | 類型 | 描述 |
---|---|---|
已量化的資料集 | 資料表 | 含量化資料行的資料集 |
分類收納轉換 | ITransform 介面 | 對資料集套用量化的轉換 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0003 | 如果一或多個輸入為 Null 或空白,就會發生例外狀況。 |
錯誤 0004 | 如果參數小於或等於特定值,就會發生例外狀況。 |
錯誤 0011 | 如果傳遞的資料行集引數不適用於任何資料集資料行,就會發生例外狀況。 |
錯誤 0021 | 如果傳至模組的某些資料集中的資料列數目太少,就會發生例外狀況。 |
錯誤 0024 | 如果資料集未包含標籤資料行,就會發生例外狀況。 |
錯誤 0020 | 如果傳至模組的某些資料集中的資料行數目太少,就會發生例外狀況。 |
錯誤 0038 | 如果預期的項目數目應該是精確的值,但卻不是,就會發生例外狀況。 |
錯誤 0005 | 如果參數小於特定值,就會發生例外狀況。 |
錯誤 0002 | 如果有一或多個參數無法剖析或從指定的類型轉換成目標方法所需的類型,就會發生例外狀況。 |
錯誤 0019 | 如果資料行應包含已排序的值,但卻沒有,就會發生例外狀況。 |
錯誤 0039 | 如果作業失敗,就會發生例外狀況。 |
錯誤 0075 | 如果在量化資料集時使用了無效的量化函式,就會發生例外狀況。 |
如需 Studio (傳統) 模組特有的錯誤清單,請參閱錯誤碼機器學習。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。