過去不管在線上線下修了一些 AIML 課,也額外讀了一些書籍,借助這些額外的知識概念與思考,並正確地提供給 AI,常就能提出一個 above average 的答案,拿到不錯的結果,不過真正的 hands-on 才是親自走一次的收穫一定會步一樣,相信更能獲得解決實際且陌生問題的寶貴能力。
所以 Back to the basic 解一個基本問題開始 - Titanic。
Data overview
dataset 中有大量的 cabin 與 age 缺值,那該如何解決。
補缺值的觀念
最大前提 : 缺值本身是否為隨機的,若是才有填補依據。
- 要填補缺值就是要思考要用怎樣的分組來補 mode or median or mean,力求分組內變異性極低。
- 量化指標 : 組內 std 以及 iqr,前者看所有點距離平均的距離(易受極端值影響),後者看中間 50% 的人跨度多大(不受極端值影響)。
- 圖表參考 : box plot
缺值的類型:
MCAR : 缺值純隨機,取全體的mean or median,但這是作為 fallback 策略
MAR : 缺失跟某個已知變數有關,把變數作為條件設定好,缺失就能更有依據用 Group-based 填補
MNAR : 缺失原因與缺失值本身的數值有關,這種任何 Group-based 都分不出來,可考慮加一個binary feature 直接讓模型去學
EDA
先看一下資料長怎樣,作為參數調整或特徵工程的依據,不要一次全丟給模型處理。
重點可先看 :
- Target 分佈(38.4%,輕微不平衡)
- 單變數分析 : 看特徵的分布、極端值、比例等
- 雙變數分析 : 看特徵跟target的關係,有些特徵帶有明確資訊,有些看起來無關。
- 交互作用 : 挑直覺起來可能有關係的一組特徵一起看
- train/val/test 的切法是否趨近於同一分布。
1. 統計檢定(WS distance(數值)、KS 檢定(數值)、chi-square(類別)): 針對單一特徵直接看分布
2. Adversarial validation : 訓練分類器,看 AUC
Hypothesis
透過 EDA 的observation可以建立一些假設,並思考是否該進行實驗驗證 :
- 對成果的貢獻性大小,太小就不用驗證了
- 跑完 baseline 之後再一步一步驗證,才知道其貢獻。
- 這些紀錄是為了讓 feature 的決策是有依據的
Baseline and Iterate
先測試一下 rule based、基礎模型的效果,作為後續優化的參考標準。
先回過頭實驗 hypothesis,測試 feature engineering 會不會帶來額外的資訊貢獻,是否有些缺乏的訊號藏在特徵中可以提供給模型學習,feature上的資訊已經被榨乾的差不多了,再來調整超參數或模型。
分兩層思考:
- feature 是否提供足夠的資訊 : EDA + 特徵工程
- 模型能不能學到資訊 : 超參數 + 模型選擇

















