# Machine Learning Crash Course 筆記 [toc] ## Generalization 先提到 overfitting 的問題,model 越簡單越好 (generalization theory) ,如何確保 model 夠 general : 使用 test set 接著提到通常訓練時 data distribution 不會改變,但可能實作時會有例外 ## Training and Test Sets 不要使用 test data 來 training test data 用來測試 model 適不適合 test data accuracy 100% 時要注意有無出錯 ## Validation Set 用 test data 用來測試 model 並調整 learning rate, feature 等,如果做太多次也可能會使 model overfit test data 額外使用 validation data 可解決此問題 ## Representation 先提到處理數據前期必須將各式各樣的數據型態做提取,再創建 feature vector 很花時間 #### one hot encoding 適用於稀少、分類型的 feature 例如:有時資料為 string 時可以使用多個 bit 分別代表不同的 string 有無出現 一個好的 feature 應具有非零的值,並出現多次 #### binning trick feature 可能只在特定數值區間與結果有高度關係,此時可將 feature 分成數區,並用 one hot encoding 來表示其分布的位置 了解 data 有一定的重要,避免將 ML 視為 black box 只投 data 看結果 ## Feature Crosses (synthetic feature) 在 x-y 座標軸中,一、三象限與二、四象限分別為兩類,此時無法用線性函數來做分類,但加入 $x \times y$ 這個 feature 後就可解決,這個由多個 feature 組合成的 synthetic feature 稱為 feature cross 有時 feature 各自不具有特殊的意義,但合在一起時就不同 因為 linear 的學習方式在過去是唯一能擴展到大量 data 的方法 兩者結合的能力佳 根據 crash course feature cross 似乎是指 cross product 不包含其他運算 ## Regularization for Simplicity 避免 overfitting 的方法 1. 提早結束 training 透過觀察 testing 與 training data 的 loss 來找到結束點 2. 調整 model 的 complexity 如:控制 weight 的範圍 除了 training loss 額外加入 L2 regularization (weights 的平方和) ,並使用係數 lambda 來平衡 ## batch 單一 iteration 中用來計算 gradient 的 data 數量 ## Stochastic Gradient Descent gradient descent 傳統是在一個 iteration 內使用整個 data set 來求出 gradient 並修改 parameter stochastic gradient descent 則是每個 iteration 只使用 data set 中隨機的一筆 data ## Mini Batch Gradient Descent batch 大約 10~1000 筆