Reflection: Deep Learning with R-Ch3.5–3.6
ch3.5-ch3.6
### 3.5. CLASSIFYING NEWSWIRES: A MULTICLASS CLASSIFICATION EXAMPLE
#### 3.5.1. The Reuters dataset
* 路透社數據集,一組短新聞通訊社及其主題,由路透社於1986年發布,46個不同主題,訓練集中,每個主題至少有10的樣本
* 每個樣本都是一個list的整數(word indices)
* decoding
#### 3.5.2. Preparing the data
* 可以將標籤列表轉換為整數張量,也可以使用one-hot encoding。 one-hot encoding是一種廣泛用於分類數據的格式,也稱categorical encoding。
#### 3.5.3. Building your network
* 46個類別需要更多的unit,小層可能會成為信息瓶頸,從而永久失去相關信息。所以這裡用 64 units
* 使用大小為46的dense層結束網絡。這意味著對於每個輸入樣本,網絡將輸出46維向量。
* 最後一層使用 softmax 激活函數。模型會輸出46個類別不同的機率,總合為1。
* loss function 最好是選擇 categorical_crossentropy。
#### 3.5.4. Validating your approach
* 切出 validation data 和 training data
* 訓練 20 epoch
* 畫圖,觀察到第 9 epoch 開始 overfit
* 模型用 9 epoch 再建一次
* 跟隨機抽取的類別準確度(模擬是18%)相比,本模型的準確度79%好很多
#### 3.5.5. Generating predictions on new data
* 預測值機率最高的類別,就是預測類別
#### 3.5.6. A different way to handle the labels and the loss
* labels to follow a categorical encoding: categorical_crossentropy
* integer labels: sparse_categorical_crossentropy
* 這個新的損失函數在數學上仍然與categorical_crossentropy相同。它只是具有不同的界面(interface)。
#### 3.5.7. The importance of having sufficiently large intermediate layers
* 嘗試中間層僅使用 4 個 unit
* 準確度下降主要是由於您試圖將大量信息(足夠的信息來恢復46類分離超平面的信息)壓縮到一個維數太低的中間空間中。 網絡能夠將大多數必要的信息塞入這些八維表示中,但不是全部。
#### 3.5.8. Further experiments
* 新增或減少unit,32 units or 128 units..
* 新增或減少hidden layer,一層或三層…
#### 3.5.9. Wrapping up
* 如果要進行 N 類別分類,則網絡應以大小為N的dense layer結尾。
* singlelabel, multiclass classification problem: 最後以softmax激活函數作為結束,並對N個輸出類上輸出概率分佈。
* Categorical crossentropy: 它使網絡輸出的概率分佈與目標的真實分佈之間的距離最小化。
* categorical encoding (one-hot encoding) label: categorical_crossentropy
* integer label: sparse_categorical_crossentropy
* 避免使用太小的中間層(unit),而在網絡中產生信息瓶頸。
### 3.6. PREDICTING HOUSE PRICES: A REGRESSION EXAMPLE
#### 3.6.1. The Boston Housing Price dataset
* only 506, split between 404 training samples and 102 test samples
* 變數有不同的尺度
* target 是自住房的中位數,以千美元為單位
#### 3.6.2. Preparing the data
* normalize data
* 注意,用於標準化的測試數據也是使用”訓練資料”計算的。在做任何處理時,絕對不能使用”測試資料”算出來的數據。
#### 3.6.3. Building your network
* 模型最後沒有激活函數就是 linear layer
* loss function 使用 mse
* 監控模型的 metric 使用 mae
#### 3.6.4. Validating your approach using K-fold validation
* 當資料點很少時,validation 值會差異很大,所以最好使用 k-fold cross validation。
* 計算每個 epoch 所有 fold 的平均,觀察何時 overfit
* 使用合適的 epoch 數建模
#### 3.6.5. Wrapping up
* regression 最合適的 loss function: MSE
* regression 最合適的 metric: MAE
* input data 應該要先標準化
* 當資料少的時候應該使用 K-fold validation
* 當訓練資料少的時候,不要用太多層的網路架構,避免 overfitting