機器學習中的常見問題——損失函式
阿新 • • 發佈:2022-05-04
一、分類演算法中的損失函式
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()