Question 1000921: 证明LogLoss是凸函数
统计/机器学习 损失函数Answer
严格意义上来说,我们是说logloss对于逻辑回归中任意一个变量的系数是凸的。
下面开始证明
$$L = -\frac{1}{n} \sum_{i=1}^n y_i \log(p_i) + (1-y_i) \log(1-p_i) $$
其中
$$ p_i = \frac{1} {1 + e^ { - v_i }} $$
其中
$ v_i = \beta X_i $,$ \beta$ 是逻辑回归的回归系数,$X_i$是第$i$个样本的特征。
凸函数的复合还是凸函数,并且凸函数的正线性组合还是凸函数,所以我们只要证明
$$F(v) = -\log\left(\frac{1}{1+e^{-v}}\right)=\log(1+e^{-v})$$
是凸函数。
要证明$F(v)$是关于$v$的凸函数,只要证明它的二阶导数非负。很容易可得,
$$F'(v)=\frac{-e^{-v}}{1+e^{-v}}$$
$$F''(v)=\frac{e^v}{(1+e^v)^2}\geq 0$$
证毕。
Question 1001139: R语言里求二分类的log-loss
统计/机器学习 R 损失函数R语言里怎么求二元分类的log-loss?
谢谢!
Answer
自己写一个咯
LogLoss <- function(actual, predicted){
result=-1/length(actual)*(sum((actual*log(predicted)+(1-actual)*log(1-predicted))))
return(result)
}
需要Metrics这个library
> library(Metrics)
> logLoss(y_true, y_pred)
Question 1002581: hinge loss的公式是什么?
统计/机器学习 损失函数hinge loss的公式是什么?求解!谢谢!
Answer
$$HingeLoss(y)=\max(0,1-ty)$$
其中$t$是真实标签,$+1$或$-1$。$y$是分类分数,也就是模型输出。图像上是这样的
Question 1003329: 怎么判断一个损失函数的凹凸性?
统计/机器学习 最优化 损失函数怎么判断一个损失函数的凹凸性?
Answer
通常来说是很难判断的,不过有两个可行的办法。
1. 画图。但是因为损失函数是多元的,所以可以一个切面一个切面的画。
2. 求导。如果能够得到损失函数和模型参数的表达式,那么你就可以对这个表达式求二阶导,得到Hessian Matrix,然后再判断这个矩阵是否是正定的,如果正定,那么就是凸的。
以上两个办法在实际过程中都不一定可行。
刚刚在西瓜书上看到相关的一段话,希望有帮助,在54页左下角:
“对实数集上的函数,可以通过求二阶导数来判别:若二阶导数在区间上非负,则称为凸函数;若二阶导数在区间上恒大于零,则称为严格凸函数。”
求导吧
Question 1003504: focal loss是什么?
统计/机器学习 损失函数focal loss是什么?能简单介绍一下吗?
Answer
focal loss是在这篇论文(Focal Loss for Dense Object Detection)中提出的,是对log loss(或者交叉熵)的一种推广。
对于LogLoss,我们比较熟悉
$$\text{LogLoss}=-y\log(p)-(1-y)\log(1-p)$$
而focal loss是对预测值$p$本身加了权重$\gamma$,
$$\text{FocalLoss}=-y(1-p)^\gamma\log(p) - (1-y)p^{\gamma}\log(1-p)$$
当权重$\gamma=0$,focal loss就和log loss等价了。$\gamma$可以取大于0的数,比如0.1,0.5,1,2等等。如下图:
那这个权重有什么作用呢?通过减少易分类样本的权重,从而使得模型在训练时更专注于难分类的样本。所谓“易分样本”就是正样本并且预测出来的概率$p$接近1或者负样本并且预测出来的概率接近0。
此外,focal loss还结合了正负样本的比重(解决正负样本非平衡问题),增加了另一个权重$\alpha$,这个$\alpha$的取值在0到1之间。
$$\text{FocalLoss}=-\alpha y(1-p)^\gamma\log(p) - (1-\alpha)(1-y)p^{\gamma}\log(1-p)$$
比如正样本较少,你想增加正样本的权重,可以设置$\alpha>0.5$
Question 1005702: tensorflow如何实现F1值作为损失函数?
统计/机器学习 损失函数 TensorFlowF1值不光滑,那么怎么能把F1值作为损失函数优化
Answer
F1不光滑,所以不可能直接用来做损失函数的。只能用binary crossentropy,如果不平衡的话,你可以加weight,或者focal loss。
来自sofasofa(一个专业的机器学习社区),建议去sofa社区阅读,这里只是记录。防止网站在网络中走失。