在機器學習裡面,為了要追求更好的表現,我們除了要選出最適當的演算法來應對不同場景外,同時,在將原始資料蒐集好後,我們該如何從中萃取出重要且有用的資訊,是非常重要的一件事情,這就是所謂的”特徵工程”,今天我們就來針對這個主題談談吧!
所謂的”特徵工程”,指的是將原始資料裡重要的特徵抽取出來,而被抽取出來的特徵可以很好的描述原始資料,並進而使整個機器學習的演算法有更好的表現,這就是特徵工程所期望達到之目的。
而在執行面上,這樣一個流程往往需要大量的領域專家(domain expert)以及領域知識(domain knowledge),因為唯有對某特定領域有深入了解的人,才容易找出資料裡重要的特徵。
一般來說,特徵工程不只非常倚靠經驗,它也是個非常花時間以及勞力的一個過程(*),但這也是整個AI系統能否表現的比其他系統出色的關鍵點之一,有好的特徵工程,不只能提高準確度,也可能大大降低模型複雜度並減少所需要的電腦資源。
那麼我們要如何去學習這樣一個很吃經驗的技巧呢?其實在很多數據比賽平台上面,如Kaggle、KDD,有著各式各樣不同領域的資料集,同時也有許多高手在上面分享許多他們多年特徵工程之技巧,或許特徵工程這門學問無法有系統性的成為一本教科書,但我們可以藉由大量去閱讀不同專家的小技巧從中學習,我想這是增進特徵工程功力的不二法門之一吧!
最後,我想要補充的是一個在資料領域裡常被流傳的一段話,“數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已”(*),這段話其實點出了數據以及特徵這兩個因素對導入AI之重要性,也是在實務上往往會被忽略的細節之一。
(*)根據資料顯示,這個過程可能長達整個專案一半的時間
(*)原文為data and characteristics determine the upper limit of machine learning, and models and algorithms just approach this upper limit.