iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
Google Developers Machine Learning

透視Google Machine Learning的奧秘系列 第 18

[Day18] 深入探討機器學習模型-評估指標

昨天介紹了機器學習模型的偏差,今天我們繼續就同樣議題深入探討。

Statistical Measurements and acceptable tradeoffs

昨天討論了這個混淆矩陣,今天來舉一個案例說明對於有爭議的FP和FN做說明,以及討論各種評估的指標:

  • FP為模型預測錯誤,但真實值是正確的
  • FN為模型預測正確,但真實值是錯誤的

混淆矩陣在機器學習的分類問題可以很直觀的去理解,以電子郵件的例子來說,我們想分類寄來的信件是否為垃圾信件,以大部分的狀況來說TP與TN都是反映出電子郵件正確歸類為是垃圾信件與不是垃圾信件,而FP就會把電子郵件歸為垃圾信件,不過實際上不是,FN會把是垃圾信件的電子郵件放到一般信箱,當FP、FN這種誤報的狀況發生時,來自朋友或親人的郵件就有可能被放在垃圾信件,萬一有不小心把垃圾信件清空就得不償失,或著是一般信箱當中一直寄來惱人的垃圾信件,而有這類的狀況發生我們就把它稱之為機器學習模型的誤差。誤差是用於衡量機器學習模型的準確率,可以透過特徵工程或著是調參數來提升模型的準確率,直到你認為訓練的模型最低可以接受多少%的誤差為止。

而在機器學習當中評估誤差的指標除了偏差Bias以外還有以下這幾種

  • 迴歸:MSE、MAE、R-square
  • 分類:AUC、F1-Score

評估指標-迴歸:

X, y = datasets.make_regression(n_features=1, random_state=42, noise=4) # 生成資料
model = LinearRegression() # 建立回歸模型
model.fit(X, y) # 將資料放進模型訓練
prediction = model.predict(X) # 進行預測
mae = metrics.mean_absolute_error(prediction, y) # 使用 MAE 評估
mse = metrics.mean_squared_error(prediction, y) # 使用 MSE 評估
r2 = metrics.r2_score(prediction, y) # 使用 r-square 評估
print("MAE: ", mae)
print("MSE: ", mse)
print("R-square: ", r2)

評估指標-分類:

AUC(Area Under Curve):

  • AUC 指摽是分類問題常用的指標,通常分類問題都需要定一個閾值(threshold) 來決定分類的類別 (通常為機率 > 0.5 判定為 1, 機率 < 0.5 判定為 0)
  • AUC 是衡量曲線下的面積,因此可考量所有閾值下的準確性
  • auc = metrics.roc_auc_score(y_test, y_pred) # 使用 roc_auc_score 來評估。

F1-Score:

分類問題中,我們有時會對某一類別的準確率特別有興趣。例如瑕疵/正常樣本分類,我們希望任何瑕疵樣本都不能被漏掉。

  • Precision,Recall 則是針對某類別進行評估
  • Precision: 模型判定瑕疵,樣本確實為瑕疵的比例
  • Recall: 模型判定的瑕疵,佔樣本所有瑕疵的比例
  • F1-Score 則是 Precision, Recall 的調和平均數
threshold = 0.5 
y_pred_binarized = np.where(y_pred>threshold, 1, 0) # 使用 np.where 函數, 將 y_pred > 0.5 的值變為 1,小於 0.5 的為 0
f1 = metrics.f1_score(y_test, y_pred_binarized) # 使用 F1-Score 評估
precision = metrics.precision_score(y_test, y_pred_binarized) # 使用 Precision 評估
recall  = metrics.recall_score(y_test, y_pred_binarized) # 使用 recall 評估
print("F1-Score: ", f1) 
print("Precision: ", precision)
print("Recall: ", recall)

今天先介紹到這,明天我們來討論Cloud Datalab服務。

參考資料與圖片來源


上一篇
[Day17] 認識機器學習的誤差
下一篇
[Day19] 研究Google Cloud Datalab服務
系列文
透視Google Machine Learning的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言