表示法:清理資料

蘋果樹會結出一些很棒的水果和惡劣的混凝土。 然而,高級雜貨店裡的蘋果則展示了 100% 的完美水果。 在果園和雜貨店之間,有人花費大量時間移除壞的蘋果,或對可回收的蘋果丟些微蠟。機器學習工程師會花大量時間找出不良示例,並清除可回收的例子。就算是好幾個「糟糕的蘋果」,還是可能會破壞龐大的資料集。

縮放特徵值

「資源調度」是指將浮點特徵值從自然範圍 (例如 100 到 900) 轉換成標準範圍 (例如,0 到 1 或 -1 到 +1)。如果功能集只包含單一功能,資源調度幾乎沒有實質效益。但是,如果特徵集包含多個功能,特徵縮放功能可提供下列優點:

  • 協助梯度下降法加速收斂。
  • 防止出現「NaN 陷阱」,讓模型中的一個數字變成 NaN (例如在訓練期間超過浮點精確度限制) 並基於數學運算,讓模型中的所有其他數字最終成為 NaN。
  • 協助模型學習每個特徵的適當權重。 如果沒有特徵縮放功能,模型會過度關注範圍較廣的特徵。

您不必為每個浮點特徵指定相同的比例。如果功能 B 從 -1 提高到 +1,而功能 B 從 -3 提高至 +3,則不會造成任何嚴重影響。不過,如果特徵 B 從 5000 調整為 100000,模型的反應就會不佳。

處理極端離群值

下圖代表加州住宅資料集中名為 roomsPerPerson 的功能。roomsPerPerson 值的計算方式是將某區域的房產總數除以該區域的人口數。圖顯示加州的大部分區域,每人都有一到兩個房間。但建議你沿著 X 軸查看

RoomPerPerson 的圖有幾乎所有值都聚集在 0 到 4 之間,但其實還有一道生氣的長尾,一路延伸到每人 55 間房間

圖 4 一隻憤怒的惡棍龍尾。

我們該如何盡可能降低這些極端離群值的影響?其中一種做法是擷取每個值的記錄:

顯示 99% 數值的 Log(roomsPerPerson) 圖中有 99% 的數值在 0.4 至 1.8 之間,但仍然有 4.2 以上的長尾長尾。

圖 5 對數縮放仍留下尾數。

記錄資源調度執行的工作有點更優質的工作,但離群值仍然存在很大的尾。我們再選擇一種方法。如果直接「大寫」或「clip」為任意值 (例如 4.0) 的 roomsPerPerson 最大值,該怎麼做?

RoomPerPerson 的圖表,所有值皆介於 -0.3 和 4.0 之間。路標是鐘形,但 4.0 時有異常山丘

圖 6 從 4.0 版剪輯特徵值

將特徵值裁剪為 4.0 並不代表系統會忽略所有大於 4.0 的值。而是所有大於 4.0 的值現在都會變為 4.0。這說明瞭 4.0 吋的有趣山丘。儘管山坡地勢很高,經過縮放的特徵集現在也比原始資料更加實用。

特徵分塊

下圖顯示加州不同緯度的房屋相對分佈情形。請注意,分群法約在緯度 34 度,而舊金山約在緯度 38 度。

按緯度顯示的房屋圖。土地上標示相當不規律,包含緯度 36 左右的許多燈,在緯度 34 和 38 左右會有大幅高峰。

圖 7. 每一層樓。

在資料集中,latitude 是浮點值。不過,在我們的模型中將 latitude 表示為浮點地圖項目並不合理。這是因為緯度值和居住值之間不存在線性關係。舉例來說,緯度 35 的房屋不比緯度 34 的房屋 \(\frac{35}{34}\) 便宜 (或較低)。而個別緯度很可能是房屋價值的預測指標

如要將緯度設為實用的預測工具,讓我們將緯度分割成「特徵分塊」,如下圖所示:

按緯度顯示的房屋圖。這張圖分為

圖 8. 特徵分塊值。

現在,我們不再擁有一個浮點地圖項目,而是有 11 個不同的布林地圖項目 (LatitudeBin1LatitudeBin2、...、LatitudeBin11)。提供 11 個獨立的地圖項目有些可能的重要性,因此我們要將這些地圖項目合而為單一 11 元素向量。如此將使我們能以下列方式表示緯度 37.4:

[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]

藉由繫結,我們的模型現在可以學習每個緯度完全不同的權重。

拖曳

目前為止,我們已假設用於訓練和測試的所有資料都值得信賴。實際上,資料集中的許多範例會因下列一或多個問題而不可靠:

  • 省略的值。例如,使用者忘記輸入房屋年齡值。
  • 重複的範例。例如,伺服器不小心上傳了兩次相同的記錄。
  • 標籤不佳。例如,一個人將橡樹的圖片誤標為楓樹。
  • 特徵值錯誤。例如,某人輸入了額外的數字,或是在太陽中留下溫度計。

偵測到不良示例後,您通常會將其從資料集中移除,藉此進行「修正」。如要偵測省略的值或重複範例,您可以編寫簡單的程式。偵測錯誤的特徵值或標籤可能並不容易。

除了偵測不良的個別樣本外,您也必須在匯總中偵測無效資料。直方圖是以視覺化方式呈現匯總資料的絕佳機制。此外,取得下列統計資料也有幫助:

  • 最大值與最小值
  • 平均值和中位數
  • 標準差

建議您為離散特徵產生最常見的值清單。 例如,使用 country:uk 的示例數量是否與預期數量相符。language:jp 應該是資料集中最常見的語言嗎?

瞭解您的資料

請遵守下列規則:

  • 請記住,資料應以何種方式呈現。
  • 確認資料符合這些期望 (或者您可以說明資料不符合預期的原因)。
  • 再次確認訓練資料與其他來源 (例如資訊主頁) 是否同意。

請謹慎處理資料,謹慎處理任何重要業務程式碼。優秀的機器學習是仰賴優質資料。

其他資訊

機器學習規則 機器學習階段 II:特徵工程