因此在實際應用中,我們會將真實數據集按照一定比例分成訓練數據集和測試數據集,因為真實的數據集是有Label值的。
我們拿到訓練數據集訓練出來的模型後,用測試數據集進行預測,然後用其預測到的結果和測試數據集的真實分類做對比,再結合指標便可以衡量出預測的精準度。
基於Sklearn中切分數據集的方法,我們對鳶尾花數據集來進行一次切分。
from sklearn.model_selection import train_test_splitfrom sklearn import datasets
#測試數據集佔比為20%,加入隨機種子random_state後,每次運行後切分的數據是一致的。X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2, random_state=12345)
#查看切分後的訓練數據集和測試數據集print(X_train.shape) #(120, 4)print(X_test.shape)#(30, 4)print(y_train.shape)#(120,)print(y_test.shape)#(30,)可以看到,利用Sklearn提供的train_test_split對樣本進行了切分,此時就可以利用訓練數據集進行模型訓練,然後用測試數據集進行模型驗證。
下面我們可以熟悉一些具體的評價指標,最後我們結合之前的例子來實踐一下。針對分類而言,Sklearn預置了一個score方法,即分類準確度。但是分類準確度針對極度偏斜的數據,會產生問題:模型可能對某一類數據數據進行了擬合,而不能適應其他類型的數據,從而造成在某些情況下分類準確度很高的情況,在其他情況,準確度卻很低,模型看起來「時好時壞」。
所以僅憑分類準確度是無法全面的衡量一個模型是否好壞。於是我們會引入以下指標。
混淆矩陣是機器學習中總結分類模型預測結果的情形分析表,以矩陣形式將數據集中的記錄按照真實的類別與分類模型預測的類別判斷兩個標準進行匯總。
對於一個二分類問題,所有的問題都被分為0和1類,即是和否
混淆矩陣如下:我們用positive代表0,negative代表1
根據混淆矩陣我們可以得到4個基本指標:真實值是positive,我們預測為positive的數量,即預測正確(True Positive=TP)真實值是positive,我們預測為negative的數量,即預測錯誤(False Negative=FN)此錯誤對應統計學中的第一類錯誤真實值是negative,我們預測為positive的數量,即預測錯誤(False Positive=FP)此錯誤對應統計學的第二類錯誤真實值是negative,我們預測為negative的數量,即預測正確(True Negative=TN)混淆矩陣比分類準確度表達的信息更為全面,同時混淆矩陣也衍生出多個指標。我們通常比較關注我們模型預測對的情況,佔比等,比如是否患病,是否有風險等等,所以精準率通常指我們關注的那個事件,預測的有多準。
召回率是指真實值為1,預測對了的比例,即在我們關注的那個事件真實發生的情況下,我們成功預測的比例是多少。
針對上面幾種指標,我們可以結合看一個簡單的示例:我們的模型已經對一萬個人是否患病做了預測,針對預測結果,我們結合指標查看模型準確度。
分類準確度:9978/10000 = 99.78%結合上面精確率和召回率看來,驗證了我們上面說的分類準確度不能全面的評價一個模型。精確率和召回率的呈現往往是相反的,精確率越高,召回率越小,如何在兩者之間保持平衡呢?
由於精準率和召回率在有些場景下都需要關注,所以這兩個指標組合衍生出了F1 Score,F1 Score是精準率和召回率的調和平均值。
調和平均值的特點是:如果兩者極度不平衡,即一個特別大一個特別小,那調和平均值也會很小,只有當兩者都非常高時,它才會很高。在了解ROC曲線前,需要先熟悉TPR(True Precision Rate)和FPR(false precision rate)。TPR就是上面說到的召回率,即預測對了的比例;而FPR便是 FP/(TN+FP),即預測錯了的比例。ROC曲線(Receiver Operation Characteristic Cureve)即是描述TPR和FPR之間的關係。x軸是FPR,y軸是TPR。TPR越大越好,FPR越小越好。如果單一的增大TPR,勢必會增加FPR的值,增加了更多預測錯誤的比例。ROC曲線呈現的是FPR與TPR之間的關係,我們關注的是曲線下的面積大小(AUC),面積越大,效果越小,即FPR越小,TPR越大的時候,分類算法就會越好。如下圖,是模型在不同超參數下繪製出的ROC曲線,根據上面,我們可以發現藍色曲線對應的模型是最好的,因為其AUC最大。對應著就是當FPR為10%的時候,藍色曲線的TPR最大,為90%。
分類算法有分類準確度,有精準率,召回率,ROC,那麼對回歸算法而言,都有哪些指標呢?
即真實值減去預測值差值的平方均值。由於有對原數據進行了平方,所以會產生量綱的問題,引入RMSE。
RMSE是對MSE的平方根,消除了量綱的影響。
MAE是直接對真值和預測值差值絕對值的均值。
RMSE和MAE的區別?
RMSE和MAE一樣,有時候RMSE會大於MAE,這是由於RMSE是將錯誤差值平方後再開根號。如果錯誤值本身就很大,則平方後就更大。
所以,RMSE有放大錯誤值中最大錯誤的趨勢,所以我們一般會讓RMSE儘可能的小,意義會更大。
MSE/RMSE/MAE都只是對預測結果做一個差值的呈現,如果將模型用於兩個不同的場景:用來預測房產和預測成績,差值分別是10萬元 和10分,則如何判斷模型更適用於哪一個場景?
此時便引入R方
解釋一下R方的公式:
分子是:根據訓練的模型預測得到的結果和真值結果差值的平方和。
分母是:將y的均值理解為一個基準模型(base model),即針對所有的數據,預測值都是y的均值。所以分母就是根據基準模型預測得到的結果和真值結果差值的平方和。
用1減去,則可以衡量模型基於基準模型的好壞程度:
R方=1,此時分子趨於0,表示模型的數據與真值相差無幾,不犯任何錯誤。
R方=0,此時分子與分母相近,表示模型和基準模型差不多。
R方<0,此時說明我們的模型還不如基準模型,也可能是數據不存在任何線性關係。
🧐分享、點讚、在看,給個三連擊唄!👇