數據與特徵
特徵工程(feature engineering)
/ FEE-cher en-juh-NEER-ing /
廚師不會把生食材直接扔給客人;他們會切配、調味,把原料組合成可以下嚥的菜餚。特徵工程就是資料的這道備料工序:把原始記錄變成有資訊量的輸入——也就是特徵——好讓模型真正讀得懂。它往往是人對問題的洞察最為關鍵的地方。
實踐中,你會創造、變換或組合各欄,使訊號更易於學習。從一個原始時間戳裡,你可以抽出星期幾、是否節假日、一天中的幾點;從身高和體重,你可以算出體質指數(BMI);你可能對偏態的金額取對數,把年齡分到若干區間裡,把兩個特徵相乘以刻畫它們的交互作用,或者統計某使用者上個月登入了多少次。其中的功夫,就在於把你對這一領域的了解,編碼成模型用得上的數字。
為何重要:一個特徵選得好的簡單模型,常常勝過一個被餵以原始、混亂輸入的花哨模型。對經典的表格資料而言,用心的特徵工程往往是撬動效能的最大那根槓桿。需要說明的是:現代深度學習,尤其在圖像、音訊和文字上,能從原始資料中自己學出特徵,從而削減了在這些領域手工雕琢的需要——但對於主導著商業問題的那類表格式資料,它依舊不可或缺。
在預測計程車費時,原始的上車和下車座標本身幾乎沒什麼用。把兩點間的直線距離、行程是否過橋、是否處於高峰時段這幾個特徵構造出來,就能讓一個簡單模型幾乎拿到它所需要的全部預測能力。
兩對原始座標,化作一個強有力的特徵:行程距離。
一個特徵只能使用預測當下就能拿到的資訊。若用「實際預測時刻之後才出現的資料」、或暗中編碼了標籤的資訊來構造特徵,正是資料洩露的典型成因——模型會在測試中驚艷、到了真實世界卻轟然垮掉。
又稱
另見