機器學習中數據特徵的處理 歸一化vs標準化,哪個更好

2020-12-05 deephub

眾所周知,特徵工程是將原始數據轉換為數據集的過程。 有各種可用的功能工程技術。 兩種最廣泛使用且最容易混淆的特徵工程技術是:

標準化歸一化今天我們將探討這兩種技術,並了解數據分析師在解決數據科學問題時所做出的一些常見假設。

歸一化

理論

歸一化是將數字特徵轉換為標準值範圍的過程。 值的範圍可以是[-1,1]或[0,1]。 例如,假設我們有一個數據集,其中包含兩個名為「年齡」和「體重」的特徵,如下所示:

假設一個名為「年齡」的要素的實際範圍是5到100。我們可以通過從「年齡」列的每個值中減去5,然後將結果除以95( 100-5)。 為了使您清晰可見,我們可以將以上內容寫為公式。

其中min ^(j)max ^(j)是數據集中特徵j的最小值和最大值。圖像來源於Andriy Burkov的《百頁機器學習書》

實例

現在您已經了解了背後的理論,現在讓我們看看如何將其投入實際。 通常,有兩種方法可以實現此目的:傳統的Old school手動方法,另一種使用sklearn預處理庫。 今天,讓我們藉助sklearn庫進行歸一化。

使用sklearn預處理-Normalizer

在將「 Age」和「 Weight」值直接輸入該方法之前,我們需要將這些數據幀轉換為numpy數組。 為此,我們可以使用to_numpy()方法,如下所示:

# Storing the columns Age values into X and Weight as YX = df['Age']y = df['Weight']X = X.to_numpy()y = y.to_numpy()

上面的步驟非常重要,因為fit()和transform()方法僅適用於數組。

from sklearn.preprocessing import Normalizernormalizer = Normalizer().fit([X])normalizer.transform([X])

normalizer = Normalizer().fit([y])normalizer.transform([y])

如上所示,兩個數組的值都在[0,1]範圍內。

我們何時應實際對數據進行歸一化?

儘管歸一化不是強制性的(必須做的事)。 它可以通過兩種方式為您提供幫助

歸一化數據將提高學習速度。 它將在構建(訓練)和測試數據期間提高速度。 試試看!!它將避免數值溢出。 意思是歸一化將確保我們的輸入大致在相對較小的範圍內。 這樣可以避免問題,因為計算機通常在處理非常小或非常大的數字時會遇到問題。標準化

理論

標準化和z分數標準化和最小-最大縮放是一種重新縮放數據集值的技術,以使其具有標準正態分布的屬性,其中μ= 0(均值-特徵的平均值)且σ= 1( 均值的標準偏差)。 可以這樣寫:

實例

現在有很多方法可以實現標準化,就像標準化一樣,我們可以使用sklearn庫並使用StandardScalar方法,如下所示:

from sklearn.preprocessing import StandardScalersc = StandardScaler()sc.fit_transform([X])sc.transform([X])sc.fit_transform([y])sc.transform([y])

Z分數標準化

同樣,我們可以使用pandas的mean和std來實現。

# Calculating the mean and standard deviationdf = (df - df.mean())/df.std()print(df)

最小-最大縮放

在這裡我們可以使用pandas的max和min來做有需要的

# Calculating the minimum and the maximum df = (df-df.min())/(df.max()-df.min())print(df)

通常,最好使用Z分數標準化,因為最小-最大縮放容易過度擬合。

什麼時候使用標準化?

上述問題沒有答案。 如果您的數據集較小且有足夠的時間,則可以嘗試上述兩種技術並選擇最佳的一種。 以下是您可以遵循的經驗:

您可以對無監督學習算法使用標準化。 在這種情況下,標準化歸一化更有利。如果您在數據中看到一個曲線,那麼標準化是更可取的。 為此,您將必須繪製數據。如果您的數據集具有極高或極低的值(離群值),則標準化是更可取的,因為通常,歸一化會將這些值壓縮到較小的範圍內。除上述情況外,在任何其他情況下,歸一化都適用。 同樣,如果您有足夠的時間可以嘗試兩種特徵工程技術。

作者:Tanu N Prabhu

翻譯:孟翔傑

相關焦點

  • 數值數據的特徵預處理
    特徵預處理是數據挖掘中最重要的步驟。在這篇文章中,我將向你介紹特徵預處理的概念,它的重要性,不同的機器學習模型下的數值特徵的不同特徵預處理技術。模型的質量在很大程度上取決於輸入模型的數據。當從數據挖掘過程中收集數據時,會丟失一些數據(我們將其稱為丟失值)。此外,它很容易受到噪音的影響。
  • 數值數據的特徵工程
    同樣,良好的功能應代表數據的顯著方面,並採用由機器學習模型做出的假設的形式。特徵工程是從原始數據中提取特徵並將其轉換為可由機器學習模型攝取的格式的過程。通常需要進行轉換以減輕建模的難度並提高模型的結果。因此,設計數值數據類型的技術是數據科學家(無論是機器學習工程師)還是其炮兵的基本工具。
  • 數據科學和機器學習面試問題集錦
    在過去的幾個月裡,我面試了許多公司涉及數據科學和機器學習的初級職位。介紹一下我自己,以讓你對我有一定了解。我還有最後幾個月就研究生畢業,我的碩士是機器學習和計算機視覺,我之前的大部分經驗是研究/學術,但在一個早期創業公司待過8個月(與機器學習無關)。這些角色包括數據科學、通用機器學習和專精自然語言處理及計算機視覺。
  • 人工智慧算法:訓練神經網絡中的批量歸一化(附代碼)
    使用TensorFlow(Keras)實施介紹批處理規範化(BN)是許多機器學習從業人員遇到的技術。定義批處理規範化是一種技術,它通過引入一個附加層來減輕神經網絡中不穩定梯度的影響,該附加層對來自前一層的輸入執行操作。在通過縮放和移位操作對輸入值進行轉換之後,這些操作將對輸入值進行標準化和標準化。
  • 機器學習處理數據為什麼把連續性特徵離散化
    機器學習處理數據為什麼把連續性特徵離散化 易水寒 發表於 2018-11-17 09:31:41 在學習機器學習中,看過挺多案例,看到很多人在處理數據的時候,經常把連續性特徵離散化。
  • 機器學習之正則化
    當利用複雜的模型擬合數據,過擬合現象的出現導致模型的泛化能力下降時,使用正則化的適用可以降低模型的複雜度。這次為大家總結了正則化的相關知識點,幫助更好的理解正則化這一概念。正則化的本質就是對某一問題加以先驗的限制或約束以達到特定目的的一種手段或操作。
  • 算法應用|機器學習python應用,簡單機器學習項目實踐
    這個項目是針對鳶尾花(Iris Flower)進行分類的一個項目,數據集是含鳶尾花的三個亞屬的分類信息,通過機器學習算法生成一個模型,自動分類新數據到這三個亞屬的某一個中。項目中使用的鳶尾花數據集是一個非常容易理解的數據集,這個數據集具有以下特點:所有的特徵數據都是數字,不需要考慮如何導入和處理數據 。這是一個分類問題,可以很方便地通過有監督學習算法來解決問題。
  • 不同歸一化方法的比較
    批處理歸一化(BN)已經成為許多先進深度學習模型的重要組成部分,特別是在計算機視覺領域。它通過批處理中計算的平均值和方差來規範化層輸入,因此得名。要使BN工作,批大小必須足夠大,通常至少為32。但是,在一些情況下,我們不得不滿足於小批量:當每個數據樣本高度消耗內存時,例如視頻或高解析度圖像當我們訓練一個很大的神經網絡時,它只留下很少的GPU內存來處理數據因此,我們需要BN的替代品,它能在小批量下很好地工作。組歸一化(GN)是一種最新的規範化方法,可以避免利用批處理維,因此與批處理大小無關。
  • 批歸一化Batch Normalization的原理及算法
    輸入層的數據,已經人為的的歸一化,後面網絡每一層的輸入數據分布是一直在發生變化的,前面層訓練參數的更新將導致後面層輸入數據分布的變化,因此必然會引起後面每一層輸入數據分布的改變。而且,網絡的前面幾層發生微小的改變,那麼後面幾層就會被累積放大下去。我們把網絡中間層在訓練過程中,數據分布的改變稱之為:"Internal Covariate Shift"。
  • 單細胞交響樂4-scRNA的歸一化
    歸一化的目的就是去除細胞間與真實表達量無關的技術因素,方便後續比較。這裡需要說明:歸一化與批次處理還是不同的。歸一化不管實驗的批次因素,只考慮細胞中存在的技術誤差(比如測序深度),而批次處理既要考慮實驗批次,又要考慮技術誤差(比如不同實驗時間、不同細胞系、不同文庫製備方法、不同測序方法、不同測序深度)。
  • NLP三大特徵提取器全梳理:RNN vs CNN vs Transformer
    原創 Synced 機器之心機器之心原創編輯:陳萍在進行 NLP 模型訓練前,請先選擇一個好的特徵提取器。在中我們介紹了自然語言處理的基礎問題——文本預處理的常用步驟。
  • NOREVA: 代謝組學數據標準化工具
    當然,課程和多類別的代謝組學已經引起了極大的關注,數據歸一化對於消除這些研究中不必要的生物學/實驗變異至關重要。但是,沒有可用的工具(包括僅側重於病例對照研究的NOREVA 1.0)可以有效地評估時程/多類代謝組學數據的歸一化方法的性能。
  • 機器學習中的激活函數綜合指南
    對於one-hot編碼的分類數據,softmax函數將所有值壓縮到[0,1]區間,並確保它們全部加起來為1。通常,這些「數值特性」激活用於網絡的最後一層,即輸出層,因為這通常是唯一需要特殊處理的層。對於其他參數,使用更簡單的非線性,例如ReLU系列。雖然在某些情況下,網絡中間需要特殊的激活,例如用於對象檢測的模型和attention層,但這些並不是規範,不在本文的討論範圍之內。
  • 機器學習在生物大數據應用的一個例子
    也是在幾天前,有一家生物大數據的創業公司出現在媒體和公眾的視線中——Deep Genomics。這個公司是幹嘛的呢?簡單來說就是:利用機器學習的方法,預測基因組上的變化會對人體的特徵/疾病/表型產生怎樣的影響。這就是本文要說的,機器學習在生物大數據上應用的一個例子。那麼它是如何實現的呢?可以概括為兩步:(1)確定與某個特徵/疾病/表型相關的基因易感位點。
  • 機器學習:基於Knn算法的用戶屬性判斷方案設計
    knn算法簡介K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。knn的基本思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。如下圖所示,如何判斷綠色圓應該屬於哪一類,是屬於紅色三角形還是屬於藍色四方形?
  • 機器學習中特徵選擇怎麼做?這篇文章告訴你
    ▍簡介據《福布斯》報導,每天大約會有 250 萬字節的數據被產生。然後,可以使用數據科學和機器學習技術對這些數據進行分析,以便提供分析和作出預測。儘管在大多數情況下,在開始任何統計分析之前,需要先對最初收集的數據進行預處理。
  • 數據科學和機器學習的最佳Python庫
    數據科學是從數據中提取有用信息以解決實際問題的過程。機器學習是使機器學習如何通過提供大量數據來解決問題的過程。這兩個域是高度互連的。機器學習是數據科學的一部分,它利用ML算法和其他統計技術來了解數據如何影響和發展業務。
  • 10大機器學習算法,看懂你就是數據科學家
    這種思考模型主要用於考量具有最高特徵值的特徵向量。此外,SVD本質上也是一種計算有序成分的方法,但你不需要通過獲取數據點的協方差矩陣來實現它。現在,你可以使用它們來適配機器學習中的曲線,用於非常小的低維數據集。對於大數據或多維度的數據集,你可能會需要過度擬合,所以不用費心。普通最小二乘法(OLS)具有封閉形式的解決方案,因此你不需要使用複雜的優化技術。
  • 分享一個Python中機器學習的特徵選擇工具
    特徵選擇,即在數據集中查找和選擇最有用的特徵的過程,是機器學習的關鍵步驟。不必要的特徵會降低訓練速度、模型的可解釋性,最重要的是會降低測試集的泛化性能。FeatureSelector類包括一些最常見的特徵選擇方法:  1.高百分比的缺失值特徵選擇法  2.共線(高度相關)特徵選擇法  3.樹型結構模型中的零重要性特徵選擇法  4.低重要性特徵選擇法  5.唯一值特徵選擇法  在本文中,我將對機器學習數據集的示例使用FeatureSelector類。