Skip to Content

什麼是機器學習的資料前置處理?

機器學習(ML)的資料前置處理是指原始資料的準備,並轉換為適合訓練 ML 模型的格式。這是ML (或 AI) 流程的必要步驟,因為它會直接影響模型的效能和準確性。

資料預先處理涉及多項技術,例如清理資料以處理遺失值、移除離群值、調整特徵、編碼類別變數,以及將資料分成訓練和測試組。這些技術是確保資料在 ML 演算法上維持一致和可用格式的關鍵。

本文涵蓋機器學習資料預先處理所需的一切資訊,包括其功能、優點、步驟和範例。 

什麼是資料處理? 

資料預先處理是指原始資料轉換為對分析和模型訓練更合適、更有意義的格式。資料前置處理在改善ML模型的品質和效率方面,扮演了重要角色,解決了資料中遺失值、噪音、不一致和異常值等問題。

機器學習的資料前置處理的優點

機器學習的資料前置處理有許多好處,而這些優點與資料前置處理所涉及的步驟相同。我們來看看。 

1. 資料清理

資料清理是機器學習資料前置處理流程的重要組成部分。它涉及識別和更正資料集中的錯誤或不一致,以確保資料具有高品質,並適合分析或模型訓練。 

資料清理通常包括:

處理遺漏值

遺失值是現實世界資料集的常見問題,可能對 ML 模型的效能造成不利影響。要找出並處理遺漏的價值:

  • 使用描述性統計資料或視覺化資料,找出遺漏值的欄/功能。遺失值的常見指標包括 NaN(非數字)或 NULL 值。
  • 判斷遺漏值對您的分析或模型的影響。考量各欄的遺失值百分比,以及其對整體資料集的重要性。
  • 如果遺失值的百分比很小,而且這些列或欄並不重要,您可以選擇使用 dropna() 等方法或其他工具中的類似功能來移除。
  • 對於數字特徵,您可以使用平均、中位或模式插補(fillna()方法插補缺失值。對於類別功能,您可使用最常用的類別。

您也可以考慮更進階的插補方法,例如迴歸插補、K 最近的鄰居插補,或使用 ML 模型根據其他功能預測遺失值。

處理異常值

離群值是與資料集中其他觀察資料點明顯不同的資料點,可能會扭曲統計分析或機器學習模型。 

若要偵測並處理異常值:

  • 使用箱形圖、直方圖或散佈圖,以視覺化方式呈現數值特徵的分佈,並視覺化方式找出可能的異常值。
  • 計算摘要統計資料,如平均值、標準差、四分位數和四分位距(IQR)。離群值通常定義為低於 Q1 - 1.5 * IQR 或高於 Q3 + 1.5 * IQR 的資料點。
  • 在某些情況下,移除離群值可能是適當的,尤其是由於資料輸入錯誤或異常情況。使用基於統計閾值的篩選技術來移除異常值。
  • 應用日誌轉換、平方根轉換或 Box-Cox 轉換等轉換,使資料更常分配,並減少異常值的影響。
  • 考慮使用對離群值較不敏感的強大機器學習模型,例如支援向量機器(SVM)、隨機森林或組合式方法。

處理重複資料

重複的記錄可能會透過誇大某些模式或偏見,而使分析和模型訓練變得模糊。 

若要偵測並處理重複項目:

  • 使用 pandas 中的 duplicated()等功能,根據特定欄或整列來識別重複的列。
  • 如果重複的記錄是多餘的,而且沒有提供其他資訊,您可以使用 pandas 中的 drop_duplicates() 功能或其他工具中的類似方法將其移除。
  • 在某些情況下,由於多次輸入資料而可能發生重複,但具有獨特的識別碼。確保您保留唯一識別碼或關鍵欄,以區分重複記錄。

遵循這些步驟並使用適當的技術,您可以有效清理和預先處理機器學習任務的資料,從而提高模型預測的品質和可靠性。

2. 資料標準化

標準化是一種資料預先處理技術,用於擴展和標準化資料集內特徵值。標準化的主要目標是將所有功能值導入類似範圍,而不會扭曲值範圍的差異。這點很重要,因為許多機器學習演算法在輸入功能處於類似規模且分佈相似時,效能會更好或融合得更快。

標準化的優勢包括:

  • 在模型訓練期間,協助防止大規模的各項功能在規模較小的功能上佔有優勢。 
  • 當功能正常化時,梯度下降等演算法會更快融合,進而縮短訓練時間。 
  • 將所有值都帶入界限範圍內,降低異常值的影響。標準化資料可以更輕鬆地解讀和比較不同功能。

標準化技術

最小-最大擴展 

  • 公式:Xnorm​=Xmax​−Xmin​/Xmax​−Xmin​​
  • 範圍:將值轉換為介於 0 到 1 之間的範圍。

 

例子:

Z 分數標準化(標準化):

  • 公式:Xstd =σX/μ
  • 範圍:將值轉換為 0 的平均值和 1 的標準差。

 

例子:

應用標準化指南

最小-最大擴展:最低-最高縮放適用於要求輸入功能在特定範圍內的演算法,例如神經網路和支援向量機器。確保異常值得到適當處理,因為它們會影響擴展。

Z 分數標準化:這適用於 k 平均群集、線性迴歸和羅吉斯迴歸等演算法。它導致以 0 為中心的分佈,標準差為 1,因此非常適合假設常態分佈資料的演算法。

稀疏資料:對於稀疏的資料集(其中大多數值為零),請考慮使用 MaxAbsScaler 或 RobustScaler 等技術進行標準化。

類別資料:對於類別功能,在正常化之前,請考慮使用單熱編碼等技術,以確保有意義的擴展。

值得注意的是,標準化技術的選擇取決於您資料的特定特性,以及您計畫使用的機器學習演算法需求。實驗和理解對模型效能的影響是有效應用標準化的關鍵。

3. 功能擴展

功能擴充是一種資料預先處理技術,用於標準化資料組的獨立變數或功能範圍。功能擴展的目標是將所有功能都達到類似的規模或範圍,以避免在模型訓練或分析期間,有一個功能比其他功能更佔優勢。功能擴充可改善最佳化演算法的融合速度,並防止某些功能對模型造成不當影響。

功能擴展在資料預處理中扮演的角色

擴展功能可確保ML演算法平等地處理所有功能,防止對更大規模的功能產生偏見。它還增強了融合,因為許多優化演算法(例如,梯度下降)在功能擴展時融合得更快,從而加快模型訓練。它還可以防止由於功能量級的巨大差異而產生的數字不穩定問題。最後,擴展可以更輕鬆地解讀功能對模型預測的影響。

功能擴展方法

除了上述最低-最高比例和 Z 分數標準化之外,還有:

MaxAbsScaler:這會依最大絕對值來調整每個功能,因此產生的值範圍介於 -1 到 1 之間。它適用於保留零條目很重要的稀疏資料,例如文字分類或推薦系統。

穩健的規模:這使用對離群值強健的統計資料,例如中位數和四分位距 (IQR),來擴展特徵。它適用於包含離群值或偏斜分佈的資料集。

應用功能擴展指南

若要套用功能擴展:

  • 當資料遵循常態分佈,或使用線性迴歸、羅吉斯迴歸或 k 平均值叢集等演算法時,應用標準化(Z 分數標準化)。
  • 當您需要資料位於特定範圍內時,例如神經網路或支援向量機器,請套用標準化(最小至最大縮放)。
  • 處理稀疏資料時,請使用 MaxAbsScaler,例如文字資料或高維度稀疏功能。
  • 在處理包含離群值或非常態分佈特徵的資料集時,請使用 RobustScaler。

請記住,在應用特徵擴展之前,類別特徵可能需要編碼(例如,單熱編碼),尤其是在標稱(未排序類別)的情況下。

4. 處理類別資料

類別變量代表群組或類別,通常為非數字性質,在模型訓練期間帶來挑戰,包括:

  • 非數字表示:類別變數一般使用字串或標籤表示,大多數機器學習演算法無法直接處理。演算法需要數字輸入以進行訓練和預測。
  • 一般變數 vs. 名義變數:類別變數可以是一般變數(有意義順序)或標稱變數(沒有特定順序)。將順序變數視為標稱變數或反之亦然,可能導致不正確的模型解讀或偏誤預測。
  • 維度的詛咒:單熱編碼是處理類別資料的常見技術,可能導致資料集的維度增加,尤其是在大量獨特類別中。這會影響模型效能並增加運算複雜性。

類別變數編碼技術

類別變數的編碼技術包括:

標籤編碼:標籤編碼會為類別變數中的每個類別指派唯一的數字標籤。它適用於類別之間有意義順序的順序變數。

以下是使用 Python scikit-learn 的範例:

從 sklearn.preprocessing 匯入 LabelEncode

le = LabelEncoder()

encoded_labels = le.fit_transform(['cat', 'dog', 'rabbit', 'dog'])

單熱編碼:單熱編碼會為類別變數中的每個類別建立二進位欄,其中每一欄表示該類別的存在與否。它適用於在類別中沒有特定順序的標稱變數。

以下是使用熊貓的範例:

將 pandas 匯入為 pd

df = pd.DataFrame({'category': ['A', 'B', 'C', 'A']})

one_hot_encoded = pd.get_dummies(df【'category'】, prefix='category')

虛擬編碼:虛擬編碼與單熱編碼類似,但會捨棄其中一個二元式資料行,以避免線性模型中的多共存問題。它常用於迴歸模型中,其中一個類別作為參考類別。

以下是使用熊貓的範例:

dummy_encoded = pd.get_dummies(df['category'], prefix='category', drop_first=True)

類別資料的處理準則

為了正確處理類別資料,您應該:

了解變數類型:判斷類別變數是一般的還是標稱的,以選擇適當的編碼技術。

避免誤判:使用標簽編碼進行標稱變數時要謹慎,因為這可能會在資料中引入非預期的常式。

處理高基數:對於具有大量獨特類別的類別變數,請考慮使用諸如頻率編碼、目標編碼或減維技術等技術,如 PCA。

除了處理缺失值和標準化數值資料之外,這一切都是額外的。 

5. 處理不平衡的資料

處理不平衡資料是機器學習的常見挑戰,尤其是在分類任務中,一個類別(少數類別)的實例數量明顯低於其他類別(主要類別)。不平衡的資料會對模型訓練和評估產生深遠的影響,導致偏向多數類別的模型,對少數類別表現不佳。 

以下是關於不平衡資料與處理技術的一些關鍵要點:

不平衡資料對模型效能的影響

對不平衡資料進行訓練的模型往往在多數類別中優先考慮準確性,同時忽略少數類別。這可能導致少數族群預測的表現不佳。此外,準確度等指標在不平衡的資料集中可能具有誤導性,因為高準確度可能是因為正確預測多數類別,同時忽略少數類別而產生。精準度、召回、F1-score和 ROC 曲線下面積 (AUC-ROC) 等評估指標對於不平衡資料集而言,比單獨使用準確度更為重要。

處理不平衡資料的技巧

處理不平衡資料的最常見技術是超取樣和低取樣。超採樣涉及增加少數族群的案例數量,以平衡其與多數族群的平衡。低取樣涉及減少多數類別中的實例數量,以平衡其與少數類別。您還可以透過結合超採樣和低採樣,採取混合方式。

還有課程權重,您可以在模型訓練期間調整課程權重,以懲罰少數族群的錯誤,而非多數族群的錯誤。這僅適用於支援類別權重的演算法,例如羅吉斯迴歸或支援向量機器。

處理不平衡資料的準則

若要處理不平衡的資料,您應該:

了解資料分配:分析資料集中的類別分佈,以確定不平衡的嚴重程度。

選擇適當的技術:根據您的資料集大小、不平衡比例和運算資源,選擇超採樣、低採樣或混合技術。

評估指標:使用適當的評估指標,如精準度、回收率、F1-score或 AUC-ROC 曲線,來評估兩個類別的模型效能。

交叉驗證:在交叉驗證資料集中應用技術,以避免資料洩漏,並取得可靠的模型效能預估。

結論

資料前置處理有助於確保 ML 模型接受高品質、正確格式化的資料訓練,進而直接影響模型的效能、準確度和廣義能力。資料前置處理解決了遺失值、異常值、類別變數和類別不平衡等問題,使模型能夠做出更明智準確的預測,從而在現實世界應用中做出更好的決策。

有了適當的資料前置處理,ML 從業人員可以發揮資料的全部潛力,並為跨領域的各種應用程式建立更準確、更可靠的預測模型。

然而,要真正在現實世界中做到這一點,您首先需要有彈性的資料儲存解決方案,如 Pure Storage 幫助您加速 AI 和機器學習,並提前推動您的企業 AI 計劃

09/2024
Seven Key Storage Considerations for Digital Pathology
Explore 7 key considerations your organization should consider when choosing data storage for digital pathology.
白皮書
4 頁面
聯繫我們
問題或建議

如對Pure的產品或認證,有任何的疑問或建議,歡迎與我們聯繫!

預約試用

預約現場示範,親眼看看 Pure 如何幫助您將資料轉化為強大的成果。 

聯絡我們:886-2-3725-7989

媒體:pr@purestorage.com

 

Pure Storage總部

34F, Taipei Nanshan Plaza,

No. 100, Songren Road,

Xinyi District,

Taipei City 110016

Taiwan (R.O.C.)

800-379-7873 (一般資訊)

info@purestorage.com

關閉
您的瀏覽器已不受支援!

較舊版的瀏覽器通常存在安全風險。為讓您使用我們網站時得到最佳體驗,請更新為這些最新瀏覽器其中一個。