機器學習的數據準備:分步指南
已發表: 2023-07-07多年前,當 Spotify 開發其推薦引擎時,它面臨著與用於訓練機器學習 (ML) 算法的數據質量相關的挑戰。 如果他們沒有決定回到數據準備階段並投入額外的精力來清理、標準化和轉換數據,我們的聆聽體驗很可能不會那麼愉快。
為機器學習徹底準備數據使流媒體平台能夠訓練強大的機器學習引擎,該引擎可以準確預測用戶的收聽偏好並提供高度個性化的音樂推薦。 Spotify 避免了公司在為機器學習準備數據時犯的一個關鍵錯誤——沒有投入足夠的努力或跳過這個階段。
許多企業認為將大量數據輸入機器學習引擎就足以生成準確的預測。 事實上,它可能會導致許多問題,例如算法偏差或可擴展性有限。
機器學習的成功在很大程度上取決於數據。 可悲的是:所有數據集都有缺陷。 這就是為什麼數據準備對於機器學習至關重要。 它有助於排除原始數據中固有的不准確性和偏差,以便生成的 ML 模型生成更可靠、更準確的預測。
在這篇博文中,我們強調了為機器學習準備數據的重要性,並分享了我們收集、清理和轉換數據的方法。 因此,如果您是機器學習新手,並且希望確保您的計劃取得成功,請繼續閱讀。
如何為機器學習準備數據
成功採用 ML 的第一步是明確闡述您的業務問題。 它不僅可以確保您正在構建的機器學習模型符合您的業務需求,還可以讓您節省準備不相關數據的時間和金錢。
此外,清晰的問題陳述使機器學習模型變得可解釋(意味著用戶了解它如何做出決策)。 這在醫療保健和金融等領域尤其重要,因為機器學習對人們的生活產生重大影響。
業務問題確定後,就可以開始數據工作了。
總的來說,為機器學習準備數據的過程可以分為以下幾個階段。
- 數據採集
- 數據清洗
- 數據轉換
- 數據分割
讓我們仔細看看每一個。
數據採集
ML 的數據準備從數據收集開始。 在數據收集階段,您收集數據用於訓練和調整未來的 ML 模型。 這樣做時,請記住數據的類型、數量和質量:這些因素將決定最佳的數據準備策略。
機器學習使用三種類型的數據:結構化、非結構化和半結構化。
- 結構化數據以特定方式組織,通常採用表格或電子表格格式。 結構化數據的示例涵蓋了從數據庫或事務系統收集的信息範圍。
- 非結構化數據包括圖像、視頻、錄音和其他不遵循傳統數據模型的信息。
- 半結構化數據不遵循表格數據模型的格式。 儘管如此,它並沒有完全雜亂無章,因為它包含一些結構元素,例如標籤或元數據,使其更易於解釋。 示例包括 XML 或 JSON 格式的數據。
數據的結構決定了為機器學習準備數據的最佳方法。 例如,結構化數據可以輕鬆地組織到表中,並通過重複數據刪除、填充缺失值或標準化數據格式進行清理。 相比之下,從非結構化數據中提取相關特徵需要更複雜的技術,例如自然語言處理或計算機視覺。
機器學習數據準備的最佳方法也受到訓練數據量的影響。 大型數據集可能需要採樣,由於計算限制,這涉及選擇數據子集來訓練模型。 反過來,較小的數據可能需要數據科學家採取額外的步驟來根據現有數據點生成更多數據(更多內容見下文)。
收集數據的質量也至關重要。 使用不准確或有偏見的數據可能會影響機器學習的輸出,從而產生嚴重後果,尤其是在金融、醫療保健和刑事司法等領域。 有一些技術可以糾正數據的錯誤和偏差。 然而,它們可能不適用於本質上傾斜的數據集。 一旦您知道什麼是“好”數據,您必須決定如何收集數據以及在哪裡找到它。 為此有幾種策略。
- 從內部來源收集數據:如果您的企業數據倉庫中存儲有信息,則可以使用它來訓練 ML 算法。 這些數據可能包括銷售交易、客戶互動、社交媒體平台的數據以及其他來源的數據。
- 從外部來源收集數據:您可以轉向公開的數據源,例如政府數據門戶、學術數據存儲庫和數據共享社區,例如 Kaggle、UCI 機器學習存儲庫或 Google 數據集搜索。
- 網絡抓取:該技術涉及使用自動化工具從網站中提取數據。 這種方法對於從無法通過其他方式訪問的來源(例如產品評論、新聞文章和社交媒體)收集數據可能很有用。
- 調查:此方法可用於從特定目標受眾收集特定數據點。 它對於收集有關用戶偏好或行為的信息特別有用。
然而,有時這些策略不能產生足夠的數據。 發生這種情況時,您可以使用這些技術來彌補數據點的缺失。
- 數據增強:這允許您通過以多種方式(例如旋轉、平移或縮放)轉換現有樣本來生成更多數據。
- 主動學習:這使您可以選擇信息最豐富的數據樣本,由人類專家進行標記。
- 遷移學習:這涉及使用用於解決相關任務的預訓練 ML 算法作為訓練新 ML 模型的起點,然後根據新數據微調新模型。
- 協作數據共享:這涉及與其他研究人員和組織合作,為了共同目標收集和共享數據。
數據清理
為機器學習準備數據的下一步是清理數據。 清理數據涉及查找並糾正錯誤、不一致和缺失值。 數據清理有多種方法。
處理缺失數據
缺失值是機器學習中的一個常見問題。 它可以通過插補(認為:用預測或估計數據填充缺失值)、插值(從周圍數據點導出缺失值)或刪除(簡單地從數據集中刪除具有缺失值的行或列)來處理。
處理異常值
離群值是與數據集的其餘部分顯著不同的數據點。 異常值的出現可能是由於測量錯誤、數據輸入錯誤,或者僅僅是因為它們代表了異常或極端的觀察結果。 例如,在員工工資數據集中,異常值可能是收入明顯高於或低於其他人的員工。 可以通過刪除、轉換異常值以減少其影響、縮尾(思考:用正常分佈範圍內的最接近值替換極值)或將它們視為單獨的數據類來處理異常值。
刪除重複項
為機器學習準備數據過程中的另一個步驟是刪除重複項。 重複不僅會影響機器學習預測,還會浪費存儲空間並增加處理時間,尤其是在大型數據集中。 為了刪除重複項,數據科學家採用各種重複識別技術(例如精確匹配、模糊匹配、散列或記錄鏈接)。 一旦識別出來,它們就可以被刪除或合併。 然而,在不平衡的數據集中,實際上可以歡迎重複項以實現正態分佈。
處理不相關的數據
無關數據是指對解決問題無用或無用的數據。 處理不相關的數據有助於減少噪音並提高預測準確性。 為了識別不相關的數據,數據團隊可以採用主成分分析、相關性分析等技術,或者僅僅依靠他們的領域知識。 一旦確定,這些數據點就會從相關數據集中刪除。
處理不正確的數據
機器學習的數據準備還必須包括處理不正確和錯誤的數據。 處理此類數據的常用技術包括數據轉換(更改數據,使其滿足設定的標準)或完全刪除不正確的數據點。
處理不平衡數據
不平衡數據集是一個類中的數據點數量顯著低於另一類中的數據點數量的數據集。 這可能會導致模型出現偏差,優先考慮多數類別,而忽略少數類別。 為了解決這個問題,數據團隊可能會採用重採樣(對少數類進行過採樣或對多數類進行欠採樣以平衡數據分佈)、合成數據生成(為少數類綜合生成額外的數據點)、成本等技術。 -敏感學習(在訓練期間為少數類分配更高的權重)和集成學習(使用不同算法組合在不同數據子集上訓練的多個模型)。
這些活動有助於確保訓練數據準確、完整和一致。 儘管取得了巨大成就,但還不足以生成可靠的機器學習模型。 因此,為機器學習準備數據的下一步是確保訓練數據集中的數據點符合特定的規則和標準。 數據管理過程中的這個階段稱為數據轉換。
數據轉換
在數據轉換階段,您將原始數據轉換為適合 ML 算法的格式。 這反過來又確保了更高的算法性能和準確性。
我們為 ML 準備數據的專家列出了以下常見的數據轉換技術。
縮放
在數據集中,不同的特徵可能使用不同的測量單位。 例如,房地產數據集可能包括有關每個房產的房間數量(範圍從 1 到 10)和價格(範圍從 50,000 美元到 1,000,000 美元)的信息。 如果不進行擴展,平衡這兩個功能的重要性就具有挑戰性。 該算法可能對具有較大值的特徵(在本例中為價格)過於重視,而對看似較小值的特徵不夠重視。 縮放有助於解決此問題,方法是對所有數據點進行轉換,使它們符合指定的範圍(通常在 0 到 1 之間)。現在,您可以平等地比較不同的變量。
正常化
機器學習數據準備中使用的另一種技術是標準化。 它類似於縮放。 然而,雖然縮放會改變數據集的範圍,但標準化會改變其分佈。
編碼
分類數據的值數量有限,例如顏色、汽車模型或動物種類。 由於機器學習算法通常處理數值數據,因此必須對分類數據進行編碼才能用作輸入。 因此,編碼代表將分類數據轉換為數字格式。 有多種編碼技術可供選擇,包括 one-hot 編碼、序數編碼和標籤編碼。
離散化
離散化是一種為機器學習準備數據的方法,可以將連續變量(例如時間、溫度或重量)轉換為離散變量。 考慮一個包含人們身高信息的數據集。 每個人的身高可以以英尺或厘米為單位的連續變量來測量。 然而,對於某些 ML 算法,可能需要將這些數據離散化為類別,例如“短”、“中”和“高”。 這正是離散化的作用。 它有助於簡化訓練數據集並降低問題的複雜性。 離散化的常見方法包括基於聚類的離散化和基於決策樹的離散化。
降維
降維代表限制數據集中特徵或變量的數量,僅保留與解決問題相關的信息。 例如,考慮一個包含客戶購買歷史信息的數據集。 它包含購買日期、購買的物品、物品的價格以及購買發生的地點。 為了降低該數據集的維數,我們忽略了除最重要的特徵之外的所有特徵,例如購買的商品及其價格。 降維可以通過多種技術來完成,其中一些是主成分分析、線性判別分析和 t 分佈隨機鄰域嵌入。
日誌轉換
為機器學習準備數據的另一種方法是對數轉換,指的是對數據集中的變量值應用對數函數。 當訓練數據高度傾斜或具有較大值範圍時,通常會使用它。 應用對數函數可以幫助使數據分佈更加對稱。
說到數據轉換,我們還應該提到特徵工程。 雖然特徵工程是數據轉換的一種形式,但它不僅僅是一種技術或為 ML 準備數據的過程中的一個步驟。 它代表在數據集中選擇、轉換和創建特徵。 特徵工程涉及統計、數學和計算技術的組合(包括使用機器學習模型)來創建捕獲數據中最相關信息的特徵。
它通常是一個迭代過程,需要測試和評估不同的技術和功能組合,以便找到解決問題的最佳方法。
數據分割
為 ML 準備數據的過程的下一步涉及將所有收集的數據劃分為子集,這一過程稱為數據拆分。 通常,數據被分解為訓練、驗證和測試數據集。
- 訓練數據集實際上用於教導 ML 模型識別輸入變量和目標變量之間的模式和關係。 該數據集通常是最大的。
- 驗證數據集是用於評估訓練期間模型性能的數據子集。 它有助於通過調整超參數來微調模型(想想:在訓練之前手動設置的訓練過程的參數,例如學習率、正則化強度或隱藏層的數量)。 驗證數據集還有助於防止過度擬合訓練數據。
- 測試數據集是用於評估訓練模型性能的數據子集。 其目標是評估模型在新的、未見過的數據上的準確性。 測試數據集僅使用一次 - 在模型在訓練和驗證數據集上進行訓練和微調之後。
通過分割數據,我們可以評估 ML 模型對以前從未見過的數據的執行情況。 如果不進行分割,模型很可能在新數據上表現不佳。 發生這種情況是因為模型可能只是記住了數據點,而不是學習模式並將其概括為新數據。
數據分割有多種方法,最佳方法的選擇取決於要解決的問題和數據集的屬性。 我們為機器學習準備數據的專家表示,數據團隊通常需要進行一些實驗才能確定最有效的分割策略。 以下是最常見的策略。
- 隨機抽樣:使用此策略,數據被隨機分割。 這種方法通常應用於代表被建模人群的大型數據集。 或者,當數據集中沒有已知關係時使用它,這可能需要更專門的方法。
- 分層抽樣:在此策略中,數據根據類標籤或其他特徵分為子集,然後對這些子集進行隨機抽樣。 該策略適用於不平衡的數據集,其中一個類中的值的數量明顯超過其他類中的值的數量。 在這種情況下,分層抽樣有助於確保訓練和測試數據集的每個類別的值分佈相似。
- 基於時間的採樣:此策略用於將在某個時間點之前收集的數據形成訓練數據集,而在設定點之後收集的數據形成測試數據集。 當收集了很長一段時間的數據時(例如,在金融或醫療數據集中),可以使用這種方法,因為它可以確保模型能夠對未來數據做出準確的預測。
- 交叉驗證:使用此策略,數據被分為多個子集或折疊。 一些折疊用於訓練模型,而其餘的用於性能評估。 該過程重複多次,每次折疊至少作為測試數據一次。 有多種交叉驗證技術,例如 k 折交叉驗證和留一交叉驗證。 交叉驗證通常比對單個測試數據集的評估提供更準確的模型性能估計。
最後一點
正確準備 ML 數據對於開發準確可靠的機器學習解決方案至關重要。 在 ITRex,我們了解數據準備的挑戰以及擁有高質量數據集對於成功的機器學習過程的重要性。
如果您想通過機器學習最大限度地發揮數據的潛力,請聯繫 ITRex 團隊。 我們的專家將在收集、清理和轉換您的數據方面提供幫助。
本文最初發表於 itrex 網站。