機器學習仍然是發(fā)展最快、需求量最大的技術領域之一。機器學習是人工智能的一個分支,它使計算機系統(tǒng)能夠學習和采用類似人類的特質,最終導致人工智能機器的發(fā)展。 下表列出了人工智能領域中,機器學習可以賦予計算機的八種關鍵類人特質。
人力素質 |
人工智能學科(使用機器學習方法) |
視覺 |
計算機視覺 |
演講 |
自然語言處理 (NLP) |
運動 |
機器人 |
理解 |
知識表示與推理 |
觸碰 |
觸覺 |
情商 |
情感計算(又稱情感人工智能) |
創(chuàng)造力 |
生成對抗網絡 (GAN) |
決策 |
強化學習 |
然而,創(chuàng)建人工智能的過程需要大量數據。在機器學習中,我們擁有的數據越多,用于訓練模型的數據越多,模型(AI 代理)在處理給定提示或輸入以及最終完成訓練任務方面的表現就越好。
這些數據并非以原始形式輸入到機器學習算法中。在輸入到學習算法之前,它(數據)必須先經過各種檢查和數據清理和準備階段。我們將機器學習生命周期的這一階段稱為數據預處理階段。顧名思義,此階段包括將應用于數據集(值的行/列)的所有操作和程序,以使其處于清潔狀態(tài),以便機器學習算法可以接受它并開始訓練/學習過程。
本文將討論和研究機器學習中最流行的數據預處理技術。我們將探索各種方法來清理、轉換和擴展我們的數據。所有探索和實際示例都將使用 Python 代碼片段完成,以指導您親身體驗如何有效地將這些技術應用于您的機器學習項目。
為什么要預處理數據?
預處理數據的字面整體原因是為了讓機器學習算法接受數據,從而開始訓練過程。但是,如果我們看看機器學習框架本身的內在工作原理,就可以提供更多理由。下表討論了為后續(xù)機器學習任務預處理數據的 5 個關鍵原因(優(yōu)勢)。
原因 |
解釋 |
提高數據質量 |
數據預處理可確保您的數據一致、準確且可靠。 |
提高模型性能 |
數據預處理允許您的 AI 模型在更深層次、更準確的層面上捕捉趨勢和模式。 |
提高準確性 |
數據預處理可以使模型評估指標更好,并反映 ML 模型更準確的概述。 |
減少訓練時間 |
通過輸入已清理的算法數據,您可以讓算法以最佳水平運行,從而減少計算時間并消除對計算資源不必要的壓力。 |
特征工程 |
通過預處理數據,機器學習從業(yè)者可以衡量某些特征對模型的影響。這意味著機器學習從業(yè)者可以選擇與模型構建最相關的特征。 |
我們將利用以下框架來處理數據預處理的實際示例:
NumPy
熊貓
科學學習
處理缺失值
處理缺失值最流行的技術是刪除和歸納。值得注意的是,無論您嘗試執(zhí)行什么操作,如果計算或過程中至少有一個空值(NaN),則整個操作將失敗并計算為 NaN(空/缺失/錯誤)值。
移動
刪除包含缺失值的行或列。這通常在缺失數據占整個數據集的比例相對較小時執(zhí)行。
例子
輸出
歸責
即我們用替代值替換數據中的缺失值。替代 值通常是該列數據的平均值、中位數或眾數。這個過程的術語是歸納。
例子
輸出
處理噪聲數據
當我們的數據中有異常值或不相關的數據點時,我們就說我們的數據是有噪聲的 。這種噪聲 會扭曲我們的模型,從而扭曲我們的分析。處理噪聲數據的常見預處理技術包括平滑和分箱。
平滑
這種數據預處理技術涉及采用移動平均等操作來減少噪音和識別趨勢。這樣就可以封裝數據的本質。
例子
輸出
分箱
這是統(tǒng)計學中常見的過程,遵循機器學習數據預處理中的相同底層邏輯。它涉及將數據分組,以減少微小觀察誤差的影響。
例子
輸出
數據轉換
這種數據預處理技術在幫助塑造和指導需要數字特征作為輸入的算法以實現最佳訓練方面起著至關重要的作用。這是因為數據轉換涉及將我們的原始數據轉換為適合我們的機器學習算法使用的格式或范圍。這是基于距離的機器學習算法的關鍵步驟。
關鍵的數據轉換技術是規(guī)范化和標準化。正如這些操作的名稱所暗示的那樣,它們用于將我們的特征內的數據重新縮放到標準范圍或分布。
正?;?
這種數據預處理技術會將我們的數據縮放到 [0, 1](包含兩個數字)或 [-1, 1](包含兩個數字)的范圍。當我們的特征具有不同的范圍并且我們希望將它們帶到一個共同的范圍內時,它很有用。
例子
輸出
標準化
標準化將把我們的數據縮放到平均值為 0、標準差為 1。當我們的特征中包含的數據具有不同的測量單位或分布時,它很有用。
例子
輸出
編碼分類數據
我們的機器學習算法通常要求特征矩陣(輸入數據)采用數字形式,即數值/定量。但是,我們的數據集可能包含文本(分類)數據。因此,在將數據輸入機器學習算法之前,必須將所有分類(文本)數據轉換為數字格式。處理分類數據最常用的技術包括獨熱編碼( OHE )和標簽編碼。
獨熱編碼
這種數據預處理技術用于將分類值轉換為二進制向量。這意味著每個唯一類別都將成為數據框中的列,而包含該值的觀察值(行)的存在與否由新列中的二進制 1 或 0 表示。
例子
輸出
標簽編碼
這是將分類值轉換為整數標簽的時候。本質上,每個唯一類別都被分配一個唯一的整數來表示。
例子
輸出
這告訴我們標簽編碼如下:
· ‘藍色’ -> 0
· ‘綠色’ -> 1
· ‘紅色’ -> 2
PS,數值分配是從零索引的(與 Python 中的所有集合類型一樣)
特征提取與選擇
正如這種數據預處理技術的名稱所暗示的,特征提取/選擇涉及機器學習從業(yè)者從數據中選擇最重要的特征,而特征提取則將數據轉換為一組簡化的特征。
特征選擇
這種數據預處理技術有助于我們從數據集中識別和選擇對模型影響最大的特征。最終,選擇最佳特征將提高我們模型的性能并減少過度擬合。
相關矩陣
這個矩陣可以幫助我們識別高度相關的特征,從而使我們能夠刪除冗余特征?!跋嚓P系數的范圍從 -1 到 1,其中越接近 -1 或 1 的值表示相關性越強,而越接近 0 的值表示相關性越弱或沒有相關性”。
例子
輸出 1
輸出 2
卡方統(tǒng)計量
卡方統(tǒng)計量是一種衡量兩個分類變量獨立性的檢驗方法。當我們對分類數據進行特征選擇時,它非常有用。它計算特征的 p 值,告訴我們特征對于當前任務有多大用處。
例子
輸出
卡方分數的輸出由兩個數組組成:
· 第一個數組包含每個特征的卡方統(tǒng)計值。
· 第二個數組包含與每個特征對應的 p 值。
在我們的示例中:
· 對于第一個特征:
1. 卡方統(tǒng)計值為 0.0
2. p 值為 1.0
· 對于第二個特征:
1. 卡方統(tǒng)計值為 3.0
2. p 值約為 0.083
卡方統(tǒng)計量衡量特征與目標變量之間的關聯??ǚ街翟礁?,表示特征與目標之間的關聯越強。這告訴我們,所分析的特征對于引導模型達到所需的目標輸出非常有用。
p 值測量在特征和目標獨立的零假設下觀察到卡方統(tǒng)計量的概率。本質上,較低的 p 值(通常 < 0.05)表示特征和目標之間的關聯具有統(tǒng)計意義。
對于我們的第一個特征,卡方值為 0.0,p 值為 1.0,從而表示與目標變量沒有關聯。
對于第二個特征,卡方值為 3.0,相應的 p 值約為 0.083。這表明我們的第二個特征和目標變量之間可能存在某種關聯。請記住,我們處理的是虛擬數據,而在現實世界中,數據會給你帶來更多的變化和分析點。
特征提取
這是一種數據預處理技術,允許我們通過將數據轉換為一組新特征來降低數據的維度。從邏輯上講,通過采用特征選擇和提取技術可以大大提高模型性能。
主成分分析(PCA)
PCA 是一種數據預處理降維技術,它將我們的數據轉換為一組直角(正交)分量,從而捕獲特征中存在的最大差異。
例子
輸出
由此,我們成功探索了 Python 機器學習任務中最常用的各種數據預處理技術。
結論
在本文中,我們探討了使用 Python 進行機器學習的流行數據預處理技術。我們首先了解了數據預處理的重要性,然后研究了與原始數據相關的常見挑戰(zhàn)。然后,我們通過 Python 中的實際示例深入研究了各種預處理技術。
最終,數據預處理是機器學習項目生命周期中不可跳過的一步。即使不需要對數據進行任何更改或轉換,也值得在適用的情況下將這些技術應用于數據。因為這樣做可以確保數據得到清理和轉換,以適應機器學習算法,從而提高后續(xù)機器學習模型開發(fā)因素(例如模型準確性、計算復雜性和可解釋性)的效率。
總之,數據預處理為成功的機器學習項目奠定了基礎。通過關注數據質量并采用適當的預處理技術,我們可以充分發(fā)揮數據的潛力,并構建能夠提供有意義的見解和可操作結果的模型。