如果你看了前面幾篇博客,我們說了決策樹,說了adaboost,這次我們說下模型訓練和衡量模型的好壞
其實我們已經訓練了模型了,例如決策樹的生成時模型訓練,adaboost的實現也是模型訓練的過程,所以我們已經訓練了好幾個模型,只是那個具體的模型,並且我們沒有把模型保存下來
可能覺得自己不是在訓練模型。
模型訓練的輸出是模型,什么是模型呢?
我們生成的決策樹是模型,adaboost的那幾條加權直線也是模型。
模型里面是什么?
模型里面是一系列的判斷或者計算,對於任何一個預測數據,通過模型最終得到一個預測值。
如何衡量模型的好壞?我們着重討論這個問題,下面我們就二分類問題討論模型好壞的衡量
精度和召回率
大的矩形是正負樣本組成的訓練集,右邊的半矩形是正樣本,左邊的半矩形是負樣本,中間的圓圈是預測為正的樣本,那么精度precision和召回率recall的計算方法如右圖所示
精度描述的是預測為正的結果里面真正正樣本的比例,召回率描述的是:正樣本里面被預測為正的比例
准確度
(true positive + true negative)/all:描述的是整個訓練集預測正確的比例
那么如何利用這些指標衡量模型的好壞呢?
理想情況下,肯定是希望模型可以預測為正的全部都是正樣本,並且全部的正樣本都預測為正,精度和召回率都是100%
現實情況是,如果我們提高了精度,讓預測為正的都是正樣本,很可能就導致很多正樣本沒有被召回;如果我們提高了召回率,讓更多的正樣本被預測為正,很可能就會誤把一些負樣本預測為正,降低了精度。
精度和召回率升高到一定程度時,在一定范圍是此起彼伏的關系, 那么如何衡量精度和召回率之間的關系呢?
fbeta
fbeta定義了一個衡量精度和召回率的可調函數,我們可以通過調整beta的值來更傾向於提高精度還是召回率
我們的目標都是希望fbeta值越大越好。
當beta=1時:希望fbeta越大越好的同時,同時提高進度和召回率
當beta<1時:希望在提高fbeta的同時,更多的提高召回率
當beta>1時:希望在提高fbeta的同事,更多的提高精度。
總結,對於二分類問題,我們可以用精度或者召回率來衡量模型的好壞,如果我們想用一個統一的評價,我們可以使用fbeta,還可以設定beta值,更多的提高精度或者召回率。