前言
這本書適合擁有python(必備)和機器學習(尤其是scikit-learn)基礎知識的讀者,即便沒有接觸過機器學習也沒關係,反正google有一大堆資料。
特徵工程的重要性
- 資料工程師主要工作為負責整理(擷取、清洗、組織)資料,並且將整理過後的資料提供給機器學習工程師,但不代表機器學習工程師就不需要懂得特徵工程哦~
- 整個演算法的建置流程中,整理資料佔了所有工時的88%,演算法編寫和調整僅占12%。我的經驗是,處理資料遠比選擇模型還來的重要,就跟廚師主菜一樣,再好的廚具和廚藝,如果菜籃裡面有很多劣質食材,那也煮不出美味的佳餚。
- 而整個流程中,有81%的人最不喜歡整理資料這個過程。
- 清洗資料有點像是類比轉數位(例如:男生女生分別以1和0代表);組織資料則是將原始數據結構修改為俱行列結構的表格形式(簡單說就是EXCEL啦);擷取資料雖然書上沒提,但以我經驗來看應該是指從從環境周選擇哪則資料為已用,例如如果要預測室內溫度,則濕度、溫度、風速、室內人口數就顯得很重要,而當前道瓊指數、國際油價這種就顯得雞肋。
- 特徵工程就是將原始資料透過轉變或提煉,使得更清楚的描述待解決問題的樣貌,使得模型能更輕易或者明確的捕捉到脈絡並且學習到其規則,進而替代人們(甚至超越)解決相同或者類似的問題,畢竟職場上拿到的資料不像Kaggle一樣的乾淨。
- 通常我們會將表格中的行(columns)定義為屬性;列(rows)定義為觀測值。
- 眾多屬性(attributes)中,總是有些屬性的性質與問題有著更強烈的關係,這些高關聯性的屬性會被稱作特徵(features)。
資料和機器學習的基礎知識
- 假設表格中有屬性A~Z,監督式學習意旨用屬性A~Y(feature)去預測屬性Z(response)的值,因此監督式學習大多屬於預測(predictive)或者分類(classification);而非監督式學習其實泛指聚類(clustering),也就是根據屬性A~Z,將所有觀測值分成k類,因此某方面來說非監督式學習是以既有的屬性去建立新的屬性
- 補充一下,有人說predictive又分為regression和forecasting、前者是假設該問題無時間關係(每一刻的屬性互不影響,例如職等與收入);後者則假設問題具有時間關係(冷氣持續運轉時間與室內溫度)
機器學習演算法和特徵工程的評估
- 我們需要一個客觀且明確的指標來評價模型的好壞,雖然我不是很清楚cost function、fitness function、loss function這幾個的差別,但各大期刊或者相關書籍都是用遮幾個名詞來稱呼指標的。
- 當我們對原始數據執行了1個或者多個特徵工程,如何評估這次的改善效益是提升還是衰退呢
- 準備好一個機器學習模型
- 取得改善前的模型準確率(accuracy)或者誤差值(error),令其為基準(baseline),稱作A
- 設定我們的目標改善程度(百分比),稱作C
- 執行多種的特徵工程(異步執行或者同步執行),分別記錄最終的模型準確率(accuracy)或者誤差值(error),稱作B
- 計算改善效益(100*(B-A))/A,若大於C則代表有顯著提升
-
對於監督式學習的特徵工程效益評估,通常會採用最簡易的機器學習方法作為模型(例如LinearRegression和LogisticRegression)並且搭配5折驗證[1]。
採用簡易的模型之動機目的在於減少計算上的等候時間以及不會因為高級的模型而發現隱藏模式(有些厲害的模型可以更敏銳地發覺屬性和反應間的關係)[2],5折驗證是要確保模型準確率具有低變異性[3]。當然該書作者也鼓勵讀者採用其他模型,只需要遵循第2點的步驟就行。
-
由於非監督式學習沒有所謂的標準答案,因此無法像監督式學習一樣用指標來評估特徵工程的改善效益,但可以用輪廓係數(silhouette coefficient)[4],透過每一觀察值彼此間的距離來判斷該次聚類結果是否適當,越接近1代表越好,越接近-1代表越差。
-
特徵工程優化的效能不只是提升準確率,有時也會提升真陽性[5]
特徵理解:我的資料集裡面有什麼?
- 下一章節的內容摘要,標題後面的敘述是我的臆測
- 資料結構:類比轉數位,也就是編碼
- 資料的4個等級:猜不透
- 遺漏值:處理NaN和離群值
- 資料分析:猜不透
- 統計描述:應該是指平均值、眾數之類的吧
- 數據視覺化:靈魂畫師
參考資料
[1] 【機器學習】交叉驗證 Cross-Validation
[2] 機器學習演算法的三大陷阱:人類看不到,但 AI 看得一清二楚的「隱藏變數」
[3] 精準大不同!
[4] 聚类评估算法-轮廓系数(Silhouette Coefficient )
[5] 判定檢測有多凖的各項指標