特徵工程是機器學習工作流程中重要的組成部分,他是將原始數據「翻譯」成模型可理解的形式。
本文將介紹特徵工程的基本概念、重要性和性能評估的4個步驟。
特徵工程的重要性
大家都聽過美國計算機科學家 Peter Norvig 的2句經典名言:
基於大量數據的簡單模型優於基於少量數據的複雜模型。
這句說明了數據量的重要性。
更多的數據優於聰明的算法,而好的數據優於多的數據。
這句則是說的特徵工程的重要性。
所以,如何基於給定數據來發揮更大的數據價值就是特徵工程要做的事情。
在16年的一項調查中發現,數據科學家的工作中,有80%的時間都在獲取、清洗和組織數據。構造機器學習流水線的時間不到20%。詳情如下:
- 設置訓練集:3%
- 清洗和組織數據:60%
- 收集數據集:19%
- 挖掘數據模式:9%
- 調整算法:5%
- 其他:4%
PS:數據清洗和組織數據也是數據科學家「最討厭」的工作。感興趣的可以看這篇原始的文章:
數據來源:《Data Scientists Spend Most of Their Time Cleaning Data》
什麼是特徵工程
我們先來看看特徵工程在機器學習流程中的位置:
從上圖可以看出,特徵工程處在原始數據和特徵之間。他的任務就是將原始數據「翻譯」成特徵的過程。
特徵:是原始數據的數值表達方式,是機器學習算法模型可以直接使用的表達方式。
特徵工程是一個過程,這個過程將數據轉換為能更好的表示業務邏輯的特徵,從而提高機器學習的性能。
這麼說可能不太好理解。其實特徵工程跟做飯很像:
我們將食材購買回來,經過清洗、切菜,然後開始根據自己的喜好進行烹飪,做出美味的飯菜。
上面的例子中:
食材就好像原始數據
清洗、切菜、烹飪的過程就好像特徵工程
最後做出來的美味飯菜就是特徵
人類是需要吃加工過的食物才行,這樣更安全也更美味。機器算法模型也是類似,原始數據不能直接餵給模型,也需要對數據進行清洗、組織、轉換。最後才能得到模型可以消化的特徵。
除了將原始數據轉化為特徵之外,還有2個容易被忽視的重點:
重點1:更好的表示業務邏輯
特徵工程可以說是業務邏輯的一種數學表達。
我們使用機器學習的目的是為了解決業務中的特定問題。相同的原始數據有很多種轉換為特徵的方式,我們需要選擇那些能夠「更好的表示業務邏輯」,從而更好的解決問題。而不是那些更簡單的方法。
重點2:提高機器學習性能
性能意味着更短時間和更低成本,哪怕相同的模型,也會因為特徵工程的不同而性能不同。所以我們需要選擇那些可以發揮更好性能的特徵工程。
評估特徵工程性能的4個步驟
特徵工程的業務評估很重要,但是方法五花八門,不同業務有不同的評估方法。
這裡只介紹性能的評估方式,相對通用一些。
- 在應用任何特徵工程之前,得到機器學習模型的基準性能
- 應用一種或多種特徵工程
- 對於每種特徵工程,獲取一個性能指標,並與基準性能進行對比
- 如果性能的增量大於某個閾值,則認為特徵工程是有益的,並在機器學習流水線上應用
例如:基準性能的準確率是40%,應用某種特徵工程後,準確率提升到76%,那麼改變就是90%。
(76%-40%)/ 40%=90%
總結
特徵工程是機器學習流程里最花時間的工作,也是最重要的工作內容之一。
特徵工程定義:是一個過程,這個過程將數據轉換為能更好的表示業務邏輯的特徵,從而提高機器學習的性能。
特徵工程容易被忽略的2個重點:
- 更好的表示業務邏輯
- 提高機器學習性能
特徵工程性能評估的4個步驟:
- 在應用任何特徵工程之前,得到機器學習模型的基準性能
- 應用一種或多種特徵工程
- 對於每種特徵工程,獲取一個性能指標,並與基準性能進行對比
- 如果性能的增量大於某個閾值,則認為特徵工程是有益的,並在機器學習流水線上應用