數據建模的目的就是獲得從自變量映射到因變量的函數,在建模的探索過程中,不同的方式總會得出不同的函數模型,而這些函數大多是由一些參數構成的,比如 y = f( x; w0, w1, w2, w3, ...)。
平方損失函數
爲了選擇在某種方式下最好的參數值( w0, w1, w2, w3, ...的值),這個衡量方法一般是比較原始數據與模型的預測數據之間的平方差,平方差定義爲:
(y(原始)-y(預測))**2 = (y(原始)- f( x; w0, w1, w2, w3, ...))**2
這個數值越小,說明模型的預測值越接近原始值,也就代表模型越好。上述表達式也稱爲平方損失函數,這裏,我們用 L()表示。
絕對損失函數
平方損失是非常常見的選擇,其他的損失函數比較適合迴歸,比如另一個常見的是絕對損失函數。
| y(原始)-y(預測)| = | y(原始)- f( x; w0, w1, w2, w3, ...)|
準確率
用準確率判斷模型好壞比較適合分類問題,即因變量是固定的幾個值,比如自變量是0或1的二分類問題。準確率就是看模型分類的結果與原始數據中的分類結果相同的佔比。
準確率 = S(模型與原始數據的分類結果一致) / S(該分類下的所有數據量)
下面是python代碼示例:
y32 = lr.predict(x3)#用檢驗集x3的數據通過模型進行預測,結果儲存在變量y32中。
print(u'模型的平均準確率(檢驗集)爲:%s'% lr.score(x3, y3))
print(u'模型的平均準確率(檢驗集,y=0)爲:%s'% (sum(y32[i] == 0 for i,v in enumerate(y3) if v == 0) / sum(1 for i,v in enumerate(y3) if v == 0)))
print(u'模型的平均準確率(檢驗集,y=1)爲:%s'% (sum(y32[i] == 1 for i,v in enumerate(y3) if v == 1) / sum(1 for i,v in enumerate(y3) if v == 1)))