代理损失函数
- 当原本的损失函数不方便计算时,就要用到代理损失函数了
- 二分类问题中,常用的损失函数是0-1损失
- 数据集: D : { ( X 1 , y 1 ) , . . . , ( X n , y n ) } D:\{(X_1,y_1),...,(X_n,y_n)\} D:{(X1,y1),...,(Xn,yn)}
- 0-1损失: l ( y , y ^ ) = ∑ i = 1 m χ ( y i ≠ y ^ i ) . l(y, \hat y)=\sum_{i=1}^m\chi(y_i\neq\hat y_i). l(y,y^)=i=1∑mχ(yi=y^i).
- 构造损失函数是为了找到一个最优分类器,使分类器在测试样本上的期望损失最小
min
h
E
X
×
y
[
l
(
y
,
h
(
X
)
)
]
.
\min_{h}\mathbb{E}_{X\times y}[l(y, h(X))].
hminEX×y[l(y,h(X))].理论上,可对上式进行优化,得到最优分类器
h
h
h,但这个过程很难,甚至不可进行
- 原因①:概率分布未知,求不出期望
- ②:期望值难以优化,因为0-1损失函数非连续,这个优化问题本质是 N P − h NP-h NP−h问题,什么梯度下降统统失效
- 因此,可考虑一个与零一损失相接近的函数,作为零一损失的替身。这个替身就称作surrogate loss function代理损失函数。
- 为了计算简便,通常选用凸函数,例如逻辑斯蒂的损失函数,就是光滑可导的
- 如果最优化代理损失函数的同时我们也最优化了原本的损失函数,我们就称校对性(calibration)或者一致性(consistency)
- 一个重要的定理,若代理损失函数为凸,并在0点可导,其导数小于0,那么它一定是具有一致性的。这也是为什么我们通常选择凸函数作为我们的loss function的原因之一。
NP-hard问题
- P:能以多项式时间被求解的问题称为P-问题,如 O ( n 3 ) O(n^3) O(n3)等
- NP:①NP-问题不能以多项式的时间求解;②假设找到了一个答案,则这个答案可以以多项式的时间检验该答案是否正确。
- 如:如果要找到(1,2,…,n)的置换且满足第一个元素小于第二个元素,我们则需要至少 O ( n ! ) O(n!) O(n!)的时间来求解,这是大于多项式时间的
- 如果给出任意一个备选答案,比如(5,2,1,4,3),只需要花多项式的时间(这里是O(n)时间)来检查这个备选答案是不是真的是一个置换并且第一个元素小于第二个元素。
- NP-hard:如果一个问题通过一些步骤能够化简为一个NP问题,那么这个问题就是NP-hard问题。换句话说,至少是NP的问题称之为NP-hard问题。