1. 程式人生 > >【機器學習】機器學習模型訓練與測試評估

【機器學習】機器學習模型訓練與測試評估

模型訓練

  • 模型選擇

對於特定任務最優建模方法的選擇或者對特定模型最佳引數的選擇

  • 交叉驗證
    在訓練資料集上執行模型(演算法)並且在測試資料集上測試效果,迭代 更新資料模型的修改,這種方式被稱為“交叉驗證”(將資料分為訓練集測試集),使用訓練集構建模型,並使用測試集評估模型提供修改建議。

模型的選擇會盡可能多的選擇演算法進行執行,並比較每個演算法的執行結果

模型測試

模型的測試一般從以下幾個方面來進行比較:準確率、召回率、精確率、F值、ROC、AUC

  • 混淆矩陣

在這裡插入圖片描述

  • 準確率

準確率(Accuracy) = 提取出的正確樣本數/總樣本數
A

c c u r a c y = T
P + T N
T P + T
N + F P + F N
Accuracy = \frac{TP+TN}{TP+TN+FP+FN}

  • 召回率

召回率(Recall) = 正確的正例樣本數/樣本中正例樣本數 ——覆蓋率
R e c a l l = T P T P + F N Recall = \frac{TP}{TP+FN}

  • 精確率

精確率(Precision) = 正確的正例樣本數/預測為正例的樣本數
P r e c i s o n = T P T P + F P Precison = \frac{TP}{TP+FP}

  • F值

F值 = Precision * Recall * 2 / (Precision + Recall)
即正確率和召回率的調和平均值
F = 2 1 P r e c i s i o n + 1 R e c a l l F = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}}

  • ROC

ROC描述的是分類混淆矩陣中FPR-TPR兩個量之間的相對變化情況,ROC曲線的縱軸是“真正例率(TPR)”,橫軸是“假正例率(FPR)”。

如果二元分類輸出的是對正樣本的一個分類概率值,當去不同閥值時會得到不同的混淆矩陣,對應於ROC曲線上的一個點。那麼ROC曲線就反映了FPR和TPR之間權衡的情況,通俗地來說,即在TPR隨著FPR遞增的情況下,誰增長得更快,快多少的問題。

TPR增長得越快,曲線越往上屈,AUC就越大,反映了模型的分類效能就越好。當正負樣本不平衡時,這種模型評價方式比起一般的精確度評價方式的好處尤其顯著。

在這裡插入圖片描述

  • AUC

AUC的值越大表示模型越好

AUC被定義為ROC曲線下的面積,顯然這個面積的數值不會大於1,又由於ROC曲線一般都處於 y = x y = x 這條直線的上方,所以AUC取值範圍在0.5和1之間。

使用AUC值作為評價標準是因為很多時候ROC曲線並不能清晰的說明哪個分類器的效果好,而AUC作為數值可以直觀的評價分類器的好壞,值越大越好。

AUC = 1,是完美分類器,採用這個預測模型時,不管設定什麼閥值都能得出完美預測。絕大數預測的場合,不存在完美分類器;
AUC = 0.5,跟隨機猜測一樣,模型沒有預測價值;
0.5 < AUC < 1,由於隨機猜測,妥善設定閥值,有預測價值;
AUC < 0.5,比隨機猜測還差,但只要總是反預測而行,比隨機猜測好。

模型評估

  • 迴歸演算法評估方式
指標 描述 scikit-learn函式
Mean Square Error(MSE, RMSE) 平均誤差 from sklearn.metrics import mean_squared_error
Absolute Error(MAE, RAE) 絕對誤差 from sklearn.metrics import mean_absolute_error,median_absolute_error
R-Squared R平方值 from sklearn.metrics import r2_score
  • 分類演算法評估方式
指標 描述 scikit-learn函式
Precision 精確度 from sklearn.metrics import precision_score
Recall 召回率 from sklearn.metrics import recall_score
F1 F1值 from sklearn.metrics import f1_score
Confusion Matrix 混淆矩陣 from sklearn.metrics import confusion_matrix
ROC ROC曲線 from sklearn.metrics import roc
AUC ROC曲線下的面積 from sklearn.metrics import auc