盤點機器學習中那些神奇的損失函數

盤點機器學習中那些神奇的損失函數

我最近在學習R語言,但是估R語言我應該沒能跟sas一樣玩那麼好。今天來更新在機器學習中的一些專業術語,例如一些損失函數,正則化,核函數是什麼東西。

損失函數:損失函數是用來衡量模型的性能的,通過預測值和真實值之間的一些計算,得出的一個值,這個值在模型擬合的時候是爲了告訴模型是否還有可以繼續優化的空間(模型的目的就是希望損失函數是擬合過的模型中最小的),損失函數一般有以下幾種,爲什麼損失函數還有幾種呢,因爲不同的算法使用的損失函數有所區分。

1

0-1損失函數:

這個損失函數的含義,是最簡單的,預測出來的分類結果跟真實對比,一樣的返回1,不一樣返回0,這種方式比較粗暴,因爲有時候是0.999的時候,其實已經很接近了,但是按照這個損失函數的標準,還是返回0,所以這個損失函數很嚴格,嚴格到你覺得特別沒有人性。

2

感知損失函數

那麼這個感知損失函數,其實是跟混淆矩陣那種算法是一樣,設定一個閥值,假設真實值與預測值之間的差距超過這個閥值的話,就是1,小於的話就是0,這種就多多少少彌補了0-1損失函數中的嚴格,假設以0.5爲界限,那麼比0.5大的我們定義爲壞客戶,小於0.5定義爲壞客戶,假設用這種方式,那麼大部分好客戶聚集在0.6,以及大部分好客戶聚集在0.9這個位置,感知損失函數,判斷的時候可能是差不多的效果。但是很明顯兩個模型的效果是,後者要好。當然你在實際的做模型的時候也不會單靠一個損失函數衡量模型啦,只是你在擬合的時候可能使用的損失函數來擬合出機器覺得是最優的。

3

Hinge損失函數

Hinge損失函數是源自於支持向量機中的,因爲支持向量機中,最終的支持向量機的分類模型是能最大化分類間隔,又減少錯誤分類的樣本數目,意味着一個好的支持向量機的模型,需要滿足以上兩個條件:1、最大化分類間隔,2、錯誤分類的樣本數目。錯誤分類的樣本數目,就回到了損失函數的範疇。

我們看上面這張圖:把這四個點,根據下標分別叫1、2、3、4點,可以看到hinge衡量的是該錯誤分類的點到該分類的分類間隔線之間的距離,像1點,他雖然沒有被正確分類,但是是在分類間隔中,所以他到正確被分類的線的距離是小於1的(分類間隔取的距離是1),那麼像2,3,4點他們到正確的分類間隔的距離都是超過1,正確分類的則置爲0,那麼回到上面的公式,支持向量機中,分類使用+1,-1表示,當樣本被正確分類,那麼就是0,即hinge的值爲0,那麼如果在分隔中的時候,hinge的值爲1-真實值與預測值的積。舉個例子,當真實值yi是1,被分到正確分類的分類間隔之外,那麼yi=1,>1,那麼這時候即樣本被正確分類hinge值則爲0。那麼如果是被錯誤分類,則hinge值就是大於1了。這就是hinge損失函數啦。

4

交叉熵損失函數

這個函數是在邏輯迴歸中最大化似然函數推出來,在公式層面的理解,可以看到就是計算樣本的預測概率爲目標值的概率的對數。這個你不想聽公式推導也看下去啦,因爲這對於優化問題的理解可以更深刻。

以上的公式中的h(x)代表的樣本是目標值的概率,那麼模型最極端的預測是什麼,y=1的樣本的h(x)都爲1,y=0的樣本的h(x)都是0,那麼你這個模型的正確率就是100%,但在實際建模中這個可能性是極低的,所以這時候使用最大似然估計將全部的樣本的預測值連乘,那麼這時候意味着對於y=1的樣本,h(x)的值越大越好,y=0的時候h(x)的值越小越好即1-h(x)的值越大越好,這時候似然估計這種相乘的方式貌似很難衡量那個模型是最好的,所以加上log函數的轉化之後再加上一個負號,全部的項變成相加,這時候我們只要求得-ln(l())最小就可以了。這就是交叉熵損失函數。那麼這裏你可能會問,爲什麼用的是log,不是用什麼exp,冪函數這些,因爲log是單調遞增的,在將式子從相乘轉成相加的同時,又保證了數值越大,ln(x)的值越大。

5

平方誤差

平方差,這個大家很熟啦,線性迴歸很愛用這個,這個衡量線性關係的時候比較好用,在分類算法中比較少用。

6

絕對誤差

那麼這個也是迴歸中比較常用的,也不做多的解釋。

7

指數誤差

這是adaboosting中的一個損失函數,假設目標變量還是用-1,1表示,那麼就以爲在上面的公式中,當yi=1的時候,就希望越大越好,即越小越好,同樣可推當yi=0的時候。思想跟邏輯迴歸類似,但是因爲這裏使用-1,1表示目標變量,所以損失函數有些區別。

發佈了1 篇原創文章 · 獲贊 87 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章