什麼是數據預處理? 正確做事的 4 個關鍵步驟

已發表: 2021-08-06

現實世界的數據在大多數情況下是不完整的、嘈雜的和不一致的。

隨著數據生成的指數級增長和異構數據源數量的增加,收集異常或不正確數據的概率非常高。

但只有高質量的數據才能產生準確的模型,並最終產生準確的預測。 因此,處理數據以獲得最佳質量至關重要。 處理數據的這一步稱為數據預處理,它是數據科學中必不可少的步驟之一,   機器學習和人工智能。

什麼是數據預處理?

數據預處理是將原始數據轉換為有用的、可理解的格式的過程。 現實世界或原始數據通常具有不一致的格式、人為錯誤,也可能不完整。 數據預處理解決了這些問題,使數據集更加完整和高效地進行數據分析。

這是一個可以影響數據挖掘和機器學習項目成功的關鍵過程。 它可以更快地從數據集中發現知識,並最終影響機器學習模型的性能。

45%

數據科學家的時間花在數據準備任務上。

資料來源:數據波

換句話說,數據預處理是將數據轉換為計算機可以輕鬆處理的形式。 它使數據分析或可視化變得更容易,並提高了對數據進行訓練的機器學習算法的準確性和速度。

為什麼需要數據預處理?

如您所知,數據庫是數據點的集合。 數據點也稱為觀察、數據樣本、事件和記錄。

每個樣本都使用不同的特徵進行描述,也稱為特徵屬性。 數據預處理對於有效構建具有這些特徵的模型至關重要。

收集數據時可能會出現許多問題。 您可能必須聚合來自不同數據源的數據,從而導致數據格式不匹配,例如整數和浮點數。

提示:使用的自動化功能  機器學習軟件  告別那些繁瑣的工作。

如果您要聚合來自兩個或多個獨立數據集的數據,則性別字段可能有兩個不同的男性值:男性和男性。 同樣,如果您要聚合來自十個不同數據集的數據,則其中八個中存在的字段可能在其餘兩個中丟失。

通過預處理數據,我們使其更易於解釋和使用。 此過程消除了數據中的不一致或重複,否則可能會對模型的準確性產生負面影響。 數據預處理還確保沒有由於人為錯誤或錯誤而導致的任何不正確或缺失的值。 總之,採用數據預處理技術使數據庫更加完整和準確。

質量數據的特徵

對於機器學習算法,沒有什麼比質量更重要  訓練數據。 它們的性能或準確性取決於數據的相關性、代表性和全面性。

在了解如何預處理數據之前,讓我們先看看影響數據質量的一些因素。

  • 準確性:顧名思義,準確性意味著信息是正確的。 過時的信息、拼寫錯誤和冗餘可能會影響數據集的準確性。
  • 一致性:數據應該沒​​有矛盾。 不一致的數據可能會給您對同一問題的不同答案。
  • 完整性:數據集不應包含不完整的字段或缺少空字段。 這一特性使數據科學家能夠執行準確的分析,因為他們可以訪問數據所描述情況的完整畫面。
  • 有效性:如果數據樣本以正確的格式出現、在指定的範圍內並且屬於正確的類型,則數據集被認為是有效的。 無效的數據集很難組織和分析。
  • 及時性:數據應在其所代表的事件發生後立即收集。 隨著時間的推移,每個數據集都變得不那麼準確和有用,因為它不能代表當前的現實。 因此,數據的時事性和相關性是關鍵的數據質量特徵。

數據預處理的四個階段

對於機器學習模型,數據就是飼料。

不完整的訓練集可能會導致意想不到的後果,例如偏見,從而導致特定人群的不公平優勢或劣勢。 不完整或不一致的數據也會對數據挖掘項目的結果產生負面影響。 為了解決這些問題,使用了數據預處理的過程。

數據處理有四個階段:清洗、整合、歸約和轉換。

1.數據清洗

數據清洗或清洗是通過考慮缺失值、去除異常值、更正不一致的數據點和平滑噪聲數據來清洗數據集的過程。 本質上,數據清洗背後的動機是為機器學習模型提供完整且準確的樣本。

數據清理中使用的技術特定於數據科學家的偏好和他們試圖解決的問題。 這裡快速瀏覽一下在數據清理過程中解決的問題以及所涉及的技術。

缺失值

缺失數據值的問題非常普遍。 它可能發生在數據收集期間或由於某些特定的數據驗證規則。 在這種情況下,您需要收集額外的數據樣本或尋找額外的數據集。

當您連接兩個或多個數據集以形成更大的數據集時,也會出現缺失值的問題。 如果不是所有字段都存在於兩個數據集中,最好在合併之前刪除這些字段。

以下是一些解決缺失數據的方法:

  • 手動填寫缺失值。 這可能是一種乏味且耗時的方法,不建議用於大型數據集。
  • 使用標準值替換缺失的數據值。 您可以使用“unknown”或“N/A”之類的全局常量來替換缺失值。 雖然是一種簡單的方法,但它並非萬無一失。
  • 用最可能的值填充缺失值。 要預測可能的值,您可以使用類似的算法  邏輯回歸  或決策樹。
  • 使用集中趨勢替換缺失值。 集中趨勢是一個值圍繞其平均值、眾數或中位數聚集的趨勢。

如果數據庫中任何行或列的 50% 的值丟失,最好刪除整個行或列,除非可以使用上述任何方法填充值。

嘈雜的數據

大量無意義的數據稱為噪聲。 更準確地說,它是測量變量或屬性值不正確的數據中的隨機方差。 噪聲包括重複或半重複的數據點、對特定研究過程沒有價值的數據段或不需要的信息字段。

例如,如果您需要預測一個人是否會開車,那麼關於他們的頭髮顏色、身高或體重的信息將是無關緊要的。

異常值可以被視為噪聲,儘管有些人認為它是有效的數據點。 假設您正在訓練一種算法來檢測圖片中的烏龜。 圖像數據集可能包含錯誤標記為烏龜的海龜圖像。 這可以被認為是噪音。

然而,烏龜的形象可能看起來更像烏龜而不是烏龜。 該樣本可以被認為是異常值,不一定是噪音。 這是因為我們想教算法所有可能的方法來檢測烏龜,因此,偏離群體是必不可少的。

對於數值,您可以使用散點圖或箱線圖來識別異常值。

以下是一些用於解決噪聲問題的方法:

  • 回歸:回歸分析可以幫助確定有影響的變量。 這將使您能夠僅使用基本功能而不是分析大量數據。 線性回歸和多元線性回歸都可用於平滑數據。
  • 箱:分箱方法可用於已排序數據的集合。 他們通過查看周圍的值來平滑排序值。 然後將排序後的值劃分為“bins”,這意味著將數據排序為相同大小的較小段。 分箱有不同的技術,包括按箱均值進行平滑和按箱中位數進行平滑。
  • 聚類:聚類算法如 k-means 聚類可用於對數據進行分組並檢測過程中的異常值。

2. 數據整合

由於數據是從各種來源收集的,因此數據集成是數據準備的關鍵部分。 集成可能會導致多個不一致和冗餘的數據點,最終導致模型精度較低。

以下是一些整合數據的方法:

  • 數據整合:數據以物理方式聚集在一起並存儲在一個地方。 將所有數據集中在一個地方可以提高效率和生產力。 此步驟通常涉及使用  數據倉庫軟件。
  • 數據虛擬化:在這種方法中,界面提供來自多個來源的數據的統一和實時視圖。 換句話說,可以從單一的角度查看數據。
  • 數據傳播:涉及在特定應用程序的幫助下將數據從一個位置複製到另一個位置。 這個過程可以是同步的或異步的,通常是事件驅動的。

3. 數據縮減

顧名思義,數據縮減用於減少數據量,從而降低與數據挖掘或數據分析相關的成本。

它提供了數據集的精簡表示。 雖然這一步減少了體積,但它保持了原始數據的完整性。 在處理大數據時,此數據預處理步驟尤其重要,因為所涉及的數據量將是巨大的。

以下是一些用於數據縮減的技術。

降維

降維,也稱為降維,減少數據集中特徵或輸入變量的數量。

數據集的特徵或輸入變量的數量稱為維數。 特徵數量越多,可視化訓練數據集和創建預測模型就越麻煩。

在某些情況下,這些屬性中的大多數是相關的,因此是多餘的; 因此,可以使用降維算法來減少隨機變量的數量並獲得一組主變量。

降維有兩個部分:特徵選擇和特徵提取。

特徵選擇中,我們試圖找到原始特徵集的一個子集。 這使我們能夠獲得一個較小的子集,可用於使用數據建模來可視化問題。 另一方面,特徵提取將高維空間中的數據減少到低維空間,或者說是維數較少的空間。

以下是一些執行降維的方法:

  • 主成分分析 (PCA):一種統計技術,用於從大量變量中提取一組新變量。 新提取的變量稱為主成分。 此方法僅適用於具有數值的特徵。
  • 高相關過濾器:一種用於發現高度相關特徵並去除它們的技術; 否則,一對高度相關的變量會增加數據集中的多重共線性。
  • 缺失值比率:此方法刪除缺失值超過指定閾值的屬性。
  • 低方差過濾器:涉及刪除方差小於閾值的歸一化屬性,因為數據的微小變化會轉化為更少的信息。
  • 隨機森林:該技術用於評估數據集中每個特徵的重要性,允許我們只保留最重要的特徵。

其他降維技術包括因子分析、獨立成分分析和線性判別分析 (LDA)。

特徵子集選擇

特徵子集選擇是選擇貢獻最大或最重要的特徵或屬性子集的過程。

假設您試圖通過查看相似學生的歷史數據來預測學生是否會通過或失敗。 您有一個具有四個特徵的數據集:卷數、總分、學習時間和課外活動。

在這種情況下,卷號不會影響學生的表現,可以被淘汰。 新的子集將只有三個特徵,並且比原始集更有效。

這種數據縮減方法可以幫助創建更快、更具成本效益的機器學習模型。 屬性子集選擇也可以在數據轉換步驟中執行。

數量減少

數量減少是用更小的數據表示形式替換原始數據的過程。 有兩種方法可以執行此操作:參數方法和非參數方法。

參數方法使用模型進行數據表示。 對數線性和回歸方法用於創建此類模型。 相比之下,非參數方法使用聚類、直方圖、數據立方體聚合和數據採樣來存儲簡化的數據表示。

4.數據轉換

數據轉換是將數據從一種格式轉換為另一種格式的過程。 本質上,它涉及將數據轉換為計算機可以有效學習的適當格式的方法。

例如,速度單位可以是每小時英里、每秒米或每小時公里。 因此,數據集可能會以不同的單位存儲汽車的速度值。 在將此數據輸入算法之前,我們需要將數據轉換為相同的單位。

以下是數據轉換的一些策略。

平滑

這種統計方法用於在算法的幫助下從數據中去除噪聲。 它有助於突出數據集中最有價值的特徵並預測模式。 它還涉及從數據集中消除異常值以使模式更加可見。

聚合

聚合是指匯集來自多個來源的數據,並以統一的格式呈現以進行數據挖掘或分析。 聚合來自各種來源的數據以增加數據點的數量至關重要,因為只有這樣 ML 模型才會有足夠的示例可供學習。

離散化

離散化涉及將連續數據轉換為一組更小的間隔。 例如,將人們歸入“青少年”、“年輕人”、“中年”或“老年人”等類別比使用連續年齡值更有效。

概括

泛化涉及將低級數據特徵轉換為高級數據特徵。 例如,家庭地址等分類屬性可以推廣到更高級別的定義,例如城市或州。

正常化

規範化是指將所有數據變量轉換為特定範圍的過程。 換句話說,它用於縮放屬性的值,使其落在較小的範圍內,例如 0 到 1。十進制縮放、最小-最大歸一化和 z-score 歸一化是數據歸一化的一些方法。

特徵構造

特徵構建涉及從給定的特徵集構建新特徵。 這種方法簡化了原始數據集,更容易分析、挖掘或可視化數據。

概念層次生成

概念層次生成允許您在特徵之間創建層次結構,儘管它沒有被指定。 例如,如果您有一個房屋地址數據集,其中包含有關街道、城市、州和國家/地區的數據,則可以使用此方法以分層形式組織數據。

準確的數據,準確的結果

機器學習算法就像孩子一樣。 他們幾乎不了解什麼是有利或不利的。 就像孩子們開始重複從成年人那裡學來的粗話一樣,不准確或不一致的數據很容易影響 ML 模型。 關鍵是為他們提供高質量、準確的數據,其中數據預處理是必不可少的步驟。

機器學習算法通常被稱為勤奮工作者。 但是有一種算法經常被標記為惰性。 它被稱為k-最近鄰算法,是一種優秀的分類算法。