機器學習之清理資料

Lois發表於2020-06-16

蘋果樹結出的果子有品相上乘的, 也有蟲蛀壞果.而高階便利店出售的蘋果是 100% 完美的水果.從果園到水果店之間,專門有人花費大量時間將壞蘋果剔除或給可以挽救的蘋果塗上一層薄薄的蠟.作為一名機器學習工程師, 您將花費大量的時間挑出壞樣本並加工可以挽救的樣本.即使是非常少量的“壞蘋果”也會破壞掉一個大規模資料集

縮放特徵值

縮放是將浮點特徵值從自然範圍 ( 例如 100 到 900 ) 轉換為標準範圍 ( 例如 0 到 1 或 -1 到 +1 ).如果某個特徵集只包含一個特徵, 則縮放可以提供的實際好處微乎其微或根本沒有.不過, 如果特徵集包含多個特徵, 則縮放特徵可以帶來以下優勢:
1.幫助梯度下降法更快素地收斂
2.幫助避免 “NaN 陷阱”.在這種陷阱中, 模型中的一個數值變成 NaN ( 例如, 當某個值在訓練期間超出浮點精確率限制時 ) , 並且規模中的所有其他數值最終也會因數學運算而變成 NaN.
3.幫助模型為每個特徵確定合適的權重.如果沒有進行特徵縮放, 則模型會對範圍較大的特徵投入過多的精力.
您不需要對每個浮點特徵進行完全相同的縮放.即使特徵 A 的範圍是 -1 到 +1 , 同時特徵 B 的範圍是 -3 到 +3, 也不會產生什麼惡劣的影響.不過, 如果特徵 B 的範圍是從 5000 到 100000 , 您的模型會出現糟糕的響應.

處理極端離群值

下面的曲線圖表示的是加利福尼亞州住房資料集中稱為 roomsPerPerson 的特徵. roomsPerPerson 值的計算方法是相應地區的房間總數除以相應地區的人口總數.該曲線圖顯示, 在加利福尼亞州的絕大部分地區, 人均房間數為 1 到 2 間.不過, 請看一下 X 軸.

圖 4.一個非常非常長的尾巴

如何最大限度降低這些極端離散群值的影響 ? 一種方法是對每個值取對數:

圖 5.對數縮放仍然留有尾巴

對數縮放可以稍稍緩解這種影響, 但仍然存在離群值這個大尾巴.我們來採用另一種方法.如果我們只簡單地將 roomsPerPerson 的最大值“限制”為某個任意值 ( 比如 4.0 ) , 會發生什麼情況呢 ?

圖 6.將特徵值限制到 4.0

將特徵值限制到 4.0 並不意味著我們會忽略所有大於 4.0 的值.而是說, 所有大於 4.0 的值都會變成 4.0 .這就解釋了 4.0 處的那個有趣的小峰值, 但是縮放後的特徵集現在依然比原始資料有用.

分箱

下面的曲線圖顯示了加利福尼亞州不同維度的房屋相對普及率.注意叢集 -洛杉磯大致在維度 34 度處, 舊金山大約緯度 38 處.

圖 7. 每個維度的房屋數

在資料集中, latitude 是一個浮點值.不過, 在我們的模型中將 latitude 表示為浮點特徵沒有意義.只是因為維度和房屋價值之間不純線上性關係,.例如, 緯度 35 處的房屋並不比緯度 34 處的房屋貴 35/34 ( 或更便宜 ) .但是, 緯度或許能很好地預測房屋價值.
為了將維度變為一項實用的預測指標, 我們對緯度 “分箱” , 如下圖所示:

圖 8.分箱值

我們現在擁有 11 個不同的布林值特徵 ( LatitudeBin1、LatitudeBin2、…、LatitudeBin11 ) , 而不是一個浮點特徵.擁有 11 個不同的特徵有點不太方便, 因此我們將它們統一成 11 個元素向量.這樣做之後, 我們可以將緯度 37.4 表示為:

分箱之後, 我們的模型可以為每個緯度學習完全不同的權重.

分箱邊界

為了簡單起見, 我們在緯度樣本中使用整數作為分箱邊界.如果我們需要更精細的解決方案, 我們可以每隔 1/10 個緯度拆分一次分箱邊界.新增更多箱可讓模型從緯度 37.4 處學習和緯度 37.5 處不一樣的行為, 但前提是每 1/10 個緯度均有充足的樣本可供學習.
另一種方法是按分位數分箱, 這種方法可以確保每個桶內的樣本數量是相等的.按分位數分箱完全無需擔心離群值.

清查

截至目前, 我們假定用於訓練和測試的所有資料都是值得信賴的.在現實生活中, 資料集中的很多樣本是不可靠的, 原因有以下一種或多種:
1.遺漏值.例如, 有人忘記為某個房屋的年齡輸入值.
2.重複樣本.例如, 伺服器錯誤地將同一條記錄上傳了兩次.
3.不良標籤.例如, 有人錯誤地將一顆橡樹的圖片標記為楓樹.
4.不良特徵值.例如, 有人輸入了多餘的位數, 或者溫度計被遺落在太陽底下.
一旦檢測到存在這些問題, 您通常需要將相應的樣本從資料集中移除, 從而 “修正” 不良樣本.要檢測遺漏值或重複樣本, 您可以編寫一個簡單的程式. 檢測不良特徵值或標籤可能比棘手.
除了檢測各個不良樣本之外, 您還必須檢測集合中的不良資料.直方圖是一種用於視覺化集合中資料的很好機制.此外, 收集如下統計資訊也會有所幫助:
1.最大值和最小值
2.均值和中間值
3.標準偏差
考慮生成離散特徵的最常見值列表.例如, country :uk 的樣本數是否符合您的預期 ?
language:jp 是否真的應該作為您資料集中的最常用語言 ?

瞭解資料

遵循以下規則:
1.記住您預期的資料狀態.
2.確認資料是否滿足這些預期 ( 或者您可以解釋為何資料不滿足預期 ).
3.仔細檢查訓練資料是否與其他來源 ( 例如資訊中心 ) 的資料一致.
像處理任何任務關鍵型程式碼一樣謹慎處理您的資料.良好的機器學習依賴於良好的資料.

本作品採用《CC 協議》,轉載必須註明作者和本文連結

Hacking

相關文章