1. 程式人生 > 其它 >機器學習中的常見問題——損失函式

機器學習中的常見問題——損失函式

一、分類演算法中的損失函式

1、0-1損失函式

2、Log損失函式

2.1、Log損失

2.2、Logistic迴歸演算法的損失函式

2.3、兩者的等價

3、Hinge損失函式

3.1、Hinge損失

Hinge損失是0-1損失函式的一種代理函式,Hinge損失的具體形式如下:

max(0,1−m)

運用Hinge損失的典型分類器是SVM演算法。

3.2、SVM的損失函式

3.3、兩者的等價

4、指數損失

4.1、指數損失

指數損失是0-1損失函式的一種代理函式,指數損失的具體形式如下:

exp(−m)

運用指數損失的典型分類器是AdaBoost演算法。

4.2、AdaBoost基本原理

4.3、兩者的等價

5、感知損失

5.1、感知損失

感知損失是Hinge損失的一個變種,感知損失的具體形式如下:

max(0,−m)

運用感知損失的典型分類器是感知機演算法。

5.2、感知機演算法的損失函式

感知機演算法只需要對每個樣本判斷其是否分類正確,只記錄分類錯誤的樣本,其損失函式為:

5.3、兩者的等價

Hinge損失對於判定邊界附近的點的懲罰力度較高,而感知損失只要樣本的類別判定正確即可,而不需要其離判定邊界的距離,這樣的變化使得其比Hinge損失簡單,但是泛化能力沒有Hinge損失強。

import matplotlib.pyplot as plt
import numpy as np

xmin, xmax = -4, 4
xx = np.linspace(xmin, xmax, 100)
plt.plot([xmin, 0, 0, xmax], [1, 1, 0, 0], 'k-', label="Zero-one loss")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0), 'g-', label="Hinge loss")
plt.plot(xx, np.log2(1 + np.exp(-xx)), 'r-', label="Log loss")
plt.plot(xx, np.exp(-xx), 'c-', label="Exponential loss")
plt.plot(xx, -np.minimum(xx, 0), 'm-', label="Perceptron loss")

plt.ylim((0, 8))
plt.legend(loc="upper right")
plt.xlabel(r"Decision function $f(x)$")
plt.ylabel("$L(y, f(x))$")
plt.show()

參考文章