# 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 筆