即使在機器學習這個花哨的世界中,就像人類無法在崎vehicles不平的道路上駕駛汽車一樣,機器學習演算法也無法在大量不需要的雜項數據上產生預期的結果。因此,讓我們深入探討所有用於優化數據的選項。

注意:這可能有點冗長。因此,我將其分為三個部分。因此,請逐步進行探索。


第1部分:特徵工程

什麼是特徵工程,為什麼要打擾

特徵工程是使用數據的領域知識來創建使機器學習演算法起作用的特徵的過程。特徵工程是機器學習應用的基礎,既困難又昂貴。但是,如果操作正確,可能會帶來奇蹟。這是相同演算法工作不佳和性能出色之間的區別。

這很重要,不能忽略。讓我們看看它的總體思路:

  • 數據清理和預處理

→處理異常值

→處理缺失值

→處理偏斜

  • 縮放比例
  • 編碼方式
  1. 數據清理和預處理: 在現實世界中,我們永遠不會獲得完美適合演算法的量身定製數據。我們需要通過以下方式做到這一點。
特徵工程的圖像結果

i)處理異常值:異常值是不遵循數據總體趨勢的數據點。許多演算法對異常值敏感。那麼問題是怎麼辦?

→如果數量很少,請完全將其取出。您可以設置閾值以識別它們,然後將其刪除。如果列中有很多離群值,則最好完全刪除該列,行也一樣。

→您可以將所有內容轉換為「日誌形式」,因為日誌可以使所有內容保持相同的距離。(儘管僅適用於數字數據)

→ 使用散點圖,直方圖以及箱形圖和晶須圖可視化數據,並尋找極值。還有很多其他技術可以用來處理離群值,我建議您仔細閱讀。

ii)處理缺失值: 為什麼要缺失價值處理?

訓練數據集中的數據丟失會降低模型的功效/擬合度。缺少值可能會導致模型產生偏差,因為我們沒有正確分析其行為以及與其他變數的關係。這很有用,因為某些演算法無法使用或利用丟失的數據。因此,重要的是識別並標記該丟失的數據。標記後,即可準備替換值。

→用均值,中位數,眾數替換缺失值(這完全取決於判斷結果)。您可以將sklearn.preprocessing.impute用於相同的目的。

→如果需要,您可以用全新的數據替換(再次調用判斷)。

→或者,如果缺少太多值,則可以刪除完整的列。因此,這主要需要判斷調用,再次!!!

iii)偏斜度:偏斜度是分布不對稱的度量。偏斜度是對稱性的量度,或更準確地說,是缺乏對稱性的量度。

偏度的三種基本類型
偏度的三種基本類型

為什麼要處理偏度?

→許多模型構建技術都假設預測變數值呈正態分布並具有對稱形狀。因此,有時處理偏斜度至關重要。

→對稱分布優於傾斜分布,因為它更易於解釋和生成推論。

→使用對數變換,平方根變換等。

2. 縮放: 就像處理缺失值是強制性的一樣,縮放不是必須的。但這並不意味著它不那麼重要。考慮一種情況,您的某一列(例如A)的值在10k到100k的範圍內,而一列的值在0到1(例如B)的範圍內,那麼A將比B具有不適當的優勢因為它將攜帶更多的重量。

→ 縮放將要素修改為介於給定的最小值和最大值之間,通常介於零和一之間,或者將每個要素的最大絕對值縮放為單位大小,以提高某些模型的數值穩定性。

縮放效果

→但是標準化/縮放不能應用於分類數據,因此我們將分類數據和數值數據分開以使數值數據標準化。

→ MinMax縮放器,Standard Scler,Normalizer等是一些技術。可以使用「 sklearn.preprocessing.scaler」執行所有操作

(我建議您訪問此博客以更深入地研究Scaling)

3.編碼:那麼,什麼以及為什麼編碼?

我們使用的大多數演算法都使用數值,而分類數據通常採用文本/字元串(男性,女性)或bin(0–4、4–8等)形式。

一種選擇是將這些變數排除在演算法之外,而僅使用數字數據。但是這樣做,我們可能會丟失一些關鍵信息。因此,通常最好將類別變數包括在您的演算法中,方法是將其編碼以轉換為數字值,但首先讓我們了解有關類別變數的一兩件事。

變數類型

通常,對數據執行兩種類型的編碼,即標籤編碼和一種熱編碼(或pandas.get_dummies)。

i)標籤編碼:給每個類別一個標籤(例如0、1、2等)。標籤編碼是一種對分類變數進行編碼的便捷技術。但是,這樣編碼的名義變數可能最終會被誤解為序數。因此,標籤編碼僅對序數類型的數據(具有某種順序感)進行。

→因此,即使在標籤編碼之後,所有數據也不會丟失其排名或重要性級別。

例如標籤編碼

可以使用「 sklearn.preprocessing.LabelEncoder執行

ii)一種熱編碼:標籤編碼無法在標稱或二進位上執行,因為我們無法根據它們的屬性對其進行排名。每個數據均被平等對待。考慮以下兩個類別變數及其值,例如

→顏色:藍色,綠色,紅色,黃色

→學歷:小學,中學,研究生,研究生,博士學位。

例如,一個熱編碼

可以使用「 pd.get_dummies」「 sklearn.preprocessing.OneHotEncoder」執行

具有更大維度的數據集需要更多參數才能使模型理解,這意味著需要更多行才能可靠地學習這些參數。使用一個熱編碼器的效果是增加了許多列(尺寸)。

如果數據集中的行數是固定的,那麼在不增加更多信息以供模型學習的情況下添加額外維度可能會對最終模型的準確性產生不利影響。

標籤編碼器示例的圖像結果
一種熱編碼與標籤編碼

至此,第1部分結束了。請閱讀第2部分,其中將討論特徵提取和超重要的降維。

下一篇:《準備好數據以進行建模:特徵工程,特徵選擇,降維(第二部分)