一、对于分类问题
以二分类为例,y∈{+1,−1}y \in \{+1,-1\}y∈{+1,−1},损失函数通常表示为 yf(x)yf(x)yf(x) 的递减函数。我们希望 sign(f(xi,θ))=yisign(f(x_i, \theta))=y_isign(f(xi,θ))=yi
-
0-1损失函数
L0−1(f,y)=1fy≤0L_{0-1}(f, y)=1_{fy\le0}L0−1(f,y)=1fy≤0 0-1损失函数可以直观的刻画分类的错误率,但是因为其非凸,非光滑的特点,使得算法很难对其进行直接优化 -
Hinge损失函数(SVM)
Lhinge(f,y)=max{0,1−fy}L_{hinge}(f, y)=\max\{0,1-fy\}Lhinge(f,y)=max{0,1−fy} Hinge损失函数是0-1损失函数的一个代理损失函数,也是其紧上界,当 fy≥0fy\ge0fy≥0 时,不对模型做惩罚。可以看到,hinge损失函数在 fy=1fy=1fy=1 处不可导,因此不能用梯度下降法对其优化,只能用次梯度下降法。
-
Logistic损失函数
Llogistic(f,y)=log2(1+exp(−fy))L_{logistic}(f,y)=\log_{2}(1+exp(-fy))Llogistic(f,y)=log2(1+exp(−fy))Logistic损失函数是0-1损失函数的另一个代理损失函数,它也是0-1损失函数的凸上界,且该函数处处光滑。但是该损失函数对所有样本点都惩罚,因此对异常值更加敏感。当预测值 f∈[−1,1]f \in[-1,1]f∈[−1,1]时,另一个常用的代理损失函数是交叉熵损失函数 -
Cross-Entropy损失函数
Lcross entropy(f,y)=−log2(1+fy2)L_{cross\ entropy}(f,y)=-\log_{2}(\frac{1+fy}{2})Lcross entropy(f,y)=−log2(21+fy) 交叉熵损失函数也是0-1损失函数的光滑凸上界 -
Exponential损失函数(AdaBoost)
Lexponential(f,y)=e−fyL_{exponential}(f,y)=e^{-fy}Lexponential(f,y)=e−fy指数损失函数是AdaBoost里使用的损失函数,同样地,它对异常点较为敏感,鲁棒性不够 -
Log损失函数(LR)
Llogloss(y,p(y∣x))=−log(p(y∣x))L_{logloss}(y,p(y|x))=-\log(p(y|x))Llogloss(y,p(y∣x))=−log(p(y∣x)) 逻辑回归 p(y∣x)p(y|x)p(y∣x) 的表达式如下:
P(Y=y(i)∣x(i),θ)={hθ(x(i))=11+e−θTx,y(i)=11−hθ(x(i))=e−θTx1+e−θTx, y(i)=0, P(Y=y^{(i)}|x^{(i)},\theta)= \left\{ \begin{array}{lr} h_{\theta}(x^{(i)})=\frac{1}{1+e^{-\theta ^{T}x}}, y^{(i)}=1& \\ \\ 1-h_{\theta}(x^{(i)})=\frac{e^{-\theta ^{T}x}}{1+e^{-\theta ^{T}x}}, \ y^{(i)}=0, & \end{array} \right. P(Y=y(i)∣x(i),θ)=⎩⎪⎨⎪⎧hθ(x(i))=1+e−θTx1,y(i)=11−hθ(x(i))=1+e−θTxe−θTx, y(i)=0, 将上面两个式子合并,可得第 iii 个样本被正确预测的概率
P(Y=y(i)∣x(i),θ)=(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)P(Y=y^{(i)}|x^{(i)},\theta)=(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}P(Y=y(i)∣x(i),θ)=(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)对于所有的样本,由于生成过程是独立的,因此
P(Y∣X,θ)=Πi=1N(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)P(Y|X,\theta)=\Pi_{i=1}^{N}(h_{\theta}(x^{(i)}))^{y^{(i)}}(1-h_{\theta}(x^{(i)}))^{1-y^{(i)}}P(Y∣X,θ)=Πi=1N(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)最终的损失函数如下:
J(θ)=−∑i=1N[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]\mathcal{J}(\theta)=-\sum_{i=1}^{N}[y^{(i)}\log(h_{\theta}(x^{(i)}))+(1-y^{(i)})\log(1-h_{\theta}(x^{(i)}))]J(θ)=−i=1∑N[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
二、回归问题
对于回归问题,YYY = R\mathbb{R}R,我们希望 f(x(i),θ)f(x^{(i)},\theta)f(x(i),θ) = y(i)y^{(i)}y(i)
-
平方损失函数(最小二乘法)
Lsquare(f,y)=(f−y)2L_{square}(f,y)=(f-y)^2Lsquare(f,y)=(f−y)2平方损失函数是光滑的,可以用梯度下降法求解,但是,当预测值和真实值差异较大时,它的惩罚力度较大,因此对异常点较为敏感。 -
绝对损失函数
Labsolute(f,y)=∣f−y∣L_{absolute}(f,y)=|f-y|Labsolute(f,y)=∣f−y∣绝对损失函数对异常点不那么敏感,其鲁棒性比平方损失更强一些,但是它在fff = yyy 处不可导. -
Huber损失函数
LHuber(f,y)={12(f−y)2,∣f−y∣≤δδ∣f−y∣−12δ2, ∣f−y∣>δ, L_{Huber}(f,y)= \left\{ \begin{array}{lr} \frac{1}{2}(f-y)^2, |f-y|\le\delta & \\ \\ \delta|f-y|-\frac{1}{2}\delta^{2}, \ |f-y|>\delta, & \end{array} \right. LHuber(f,y)=⎩⎨⎧21(f−y)2,∣f−y∣≤δδ∣f−y∣−21δ2, ∣f−y∣>δ,Huber损失函数在 ∣f−y∣|f-y|∣f−y∣ 较小时为平方损失,在 ∣f−y∣|f-y|∣f−y∣ 较大时为线性损失,且处处可导,对异常点鲁棒性较好。 -
Log-cosh损失函数
Llog−cosh(f,y)=log(cosh(f−y))L_{log-cosh}(f,y)=\log(\cosh(f-y))Llog−cosh(f,y)=log(cosh(f−y))其中 cosh(x)=(ex+e−x)/2\cosh(x)=(e^{x}+e^{-x})/2cosh(x)=(ex+e−x)/2,log-cosh损失函数比均方损失函数更加光滑,具有huber损失函数的所有优点,且二阶可导。因此可以使用牛顿法来优化计算,但是在误差很大情况下,一阶梯度和Hessian会变成定值,导致牛顿法失效。 -
分位数损失函数
Lγ(f,y)=∑i: yi<fi(1−γ)∣yi−fi∣+∑i: yi≥fiγ∣yi−fi∣L_{\gamma}(f,y)=\sum_{i:\ y_i<f_i}(1-\gamma)|y_i-f_i|+\sum_{i:\ y_i\ge f_i}\gamma|y_i-f_i|Lγ(f,y)=i: yi<fi∑(1−γ)∣yi−fi∣+i: yi≥fi∑γ∣yi−fi∣预测的是目标的取值范围而不是值。γ\gammaγ 是所需的分位数,其值介于0和1之间,γ\gammaγ 等于0.5时,相当于MAE。
设置多个 γ\gammaγ 值,得到多个预测模型,然后绘制成图表,即可知道预测范围及对应概率(两个 γ\gammaγ 值相减)