[模型評估]Evaluation、Vaildation

2019-02-19  本文已影响0人  RJ阿杰

sklearn evaluation(評估)

sklearn Estimator(model)通常類中有一個score方法來作為默認評分標準,而呼叫evaluation(例如:cross_val_score)有一個參數scoring可以另外指定評分標準,輸入為下圖的scoring字符串,傳入evaluation的Estimator還必須實現fitpredict方法(其實就是訓練(參數為x,y)跟預測(參數為x))。
可以自定義建立Estimator跟method搭配tensorflow或pytorch使用。

Scoring

非平衡數據正確性

sklearn指標
sklearn.metrics.recall_score召回


sklearn.metrics.precision_score精確

sklearn.metrics.balanced_accuracy_score平衡準確率

sklearn.metrics.accuracy_score準確率

validation(驗證)

通常我們會將Data分成train set(訓練集)以及test set(測試集)來檢驗我們訓練的模型一般化能力,然而我們在訓練模型時,時常需要調整許多hyperparameter(超參數),所以我們會拿一部分資料來做validation(驗證)稱為validation set,來檢驗超參數的好壞,但是validation是不能拿test set來使用的,因為這等同於讓訓練模型去適應test set的資料,就失去測試一般化能力(適應訓練資料以外資料的能力)的意義了,最後test set測試的資料我們可以稱它為holdout set

這是最簡單的validation方式,將資料直接分成train、holdout 或train、validation、holdout。

Cross validation(交叉驗證)

sklearn.model_selection

hyperparameter最佳化

步驟1:給定超參數一個範圍,從設定超參數中隨機取樣。
步驟2:進行訓練,從驗證資料辨識準確度。
步驟3:重複前兩步驟多次,從結果慢慢縮小範圍。

sklearn.model_selection.fit_grid_point
sklearn.model_selection.GridSearchCV



underfitting、overfitting

hypothesis set(假設集)是我們假設的一個function set,例如: wx+b,我們選定參數(w、b)後的那個function稱predict(預測函數),例如: 2x+3
y 是我們真實產生數據的一個function,我們的數據是y |_x + noise(噪音) + error(誤差),noise通常有規律性(例如常態分怖),error為現實生活中數據可能因為人為、機器、測量等等產生誤差。

  1. high Bias即所謂的Underfitting,訓練與驗證loss很高(表示數據y與predic差異很大),可能是參數過少導致無法擬合訓練集(模型過於簡單),也可能是數據noise或error太大(數據質量太差),或是gradient descent無法到達最低點等等(超參數及模型需調整)。

    參數過少
    數據noise、error太大
  2. low Bias high Variance即所謂的Overfitting,訓練loss很低,但驗證loss卻很高。
    可能是參數過多導致過度擬合訓練集(模型太過複雜,需要降低複雜度、regularization或Dropout等),也可能是數據過少(沒有足夠的信息來判斷規則)等等。

    hypothesis set參數過多
    數據過少

underfitting與gradient descent關係

underfitting,訓練與驗證loss高,1.有可能是圖型的全局最小值本身就很高,參數太少或數據noise或error太大導致,2.也有可能全局最小值很低但我們的權重更新不到全局最小值,可能是卡在鞍點、某個最高點、局部小值。

非凸函數
鞍點

Model evaluation

上一篇下一篇

猜你喜欢

热点阅读