逻辑回归为什么使用对数损失函数
2017-03-19 11:23
453 查看
在前面介绍的《逻辑回归是个什么逻辑》中,我们构建的逻辑回归模型是:
P(y=1|x;θ)=11+e−θTx
在模型的数学形式确定后,剩下的就是如何去求解模型中的参数θ。而在已知模型和一定样本的情况下,估计模型的参数,在统计学中常用的是极大似然估计方法。即找到一组参数θ,使得在这组参数下,样本数据的似然度(概率)最大。对于极大似然估计,可以参考下前期文章《极大似然估计》。
对于逻辑回归模型,假定的概率分布是伯努利分布,根据伯努利分布的定义,其概率质量函数PMF为:
P(X=n)={1−pn=0pn=1
所以,似然函数可以写成:
L(θ)=∏i=1mP(y=1|xi)yiP(y=0|xi)1−yi
对数似然函数则为:
lnL(θ)=∑i=1m[yilnP(y=1|xi)+(1−yi)lnP(y=0|xi)]
lnL(θ)=∑i=1m[yilnP(y=1|xi)+(1−yi)ln(1−P(y=1|xi))]
而在机器学习领域,我们经常使用损失函数(loss function,或称为代价函数,cost function)来衡量模型预测的好坏。常用的有0-1损失,平方损失,绝对损失,对数损失等。其中对数损失在单个数据点上的定义为:
cost(y,p(y|x))=−ylnp(y|x)−(1−y)ln(1−p(y|x))
全体样本的损失函数则可表达为:
cost(y,p(y|x))=−∑i=1m[yilnp(yi|xi)+(1−yi)ln(1−p(yi|xi))]
可以看到,这个对数损失函数与上面的极大似然估计的对数似然函数本质上是等价的。所以逻辑回归直接采用对数损失函数来求参数,实际上与采用极大似然估计来求参数是一致的。
P(y=1|x;θ)=11+e−θTx
在模型的数学形式确定后,剩下的就是如何去求解模型中的参数θ。而在已知模型和一定样本的情况下,估计模型的参数,在统计学中常用的是极大似然估计方法。即找到一组参数θ,使得在这组参数下,样本数据的似然度(概率)最大。对于极大似然估计,可以参考下前期文章《极大似然估计》。
对于逻辑回归模型,假定的概率分布是伯努利分布,根据伯努利分布的定义,其概率质量函数PMF为:
P(X=n)={1−pn=0pn=1
所以,似然函数可以写成:
L(θ)=∏i=1mP(y=1|xi)yiP(y=0|xi)1−yi
对数似然函数则为:
lnL(θ)=∑i=1m[yilnP(y=1|xi)+(1−yi)lnP(y=0|xi)]
lnL(θ)=∑i=1m[yilnP(y=1|xi)+(1−yi)ln(1−P(y=1|xi))]
而在机器学习领域,我们经常使用损失函数(loss function,或称为代价函数,cost function)来衡量模型预测的好坏。常用的有0-1损失,平方损失,绝对损失,对数损失等。其中对数损失在单个数据点上的定义为:
cost(y,p(y|x))=−ylnp(y|x)−(1−y)ln(1−p(y|x))
全体样本的损失函数则可表达为:
cost(y,p(y|x))=−∑i=1m[yilnp(yi|xi)+(1−yi)ln(1−p(yi|xi))]
可以看到,这个对数损失函数与上面的极大似然估计的对数似然函数本质上是等价的。所以逻辑回归直接采用对数损失函数来求参数,实际上与采用极大似然估计来求参数是一致的。
相关文章推荐
- [每日问答]逻辑回归为什么使用Sigmod作为激活函数?
- LR(逻辑回归) 为什么使用sigmoid函数
- 逻辑回归-为什么使用逻辑函数
- CTR打分模型中为什么使用逻辑回归
- AndrewNg机器学习第四周作业:关于使用逻辑回归、神经网络训练数据并应用之的心得
- kaggle titanic 入门实例 逻辑回归的使用 & 随机森林的使用
- 使用fminunc找逻辑回归(logistic)代价函数的最小值
- 为什么大型网站前端使用 PHP 后台逻辑用 Java?
- 【转】为什么大型网站前端使用 PHP 后台逻辑用 Java?
- 逻辑回归的概率函数为什么要用sigmoid函数?
- 逻辑回归LR的特征为什么要先离散化
- 为什么大型网站前端使用 PHP 后台逻辑用 Java?
- 为什么大型网站前端使用 PHP 后台逻辑用 Java?
- 使用逻辑回归对MNIST数字分类
- 使用spark建立逻辑回归(Logistic)模型帮Helen找男朋友
- 使用R进行逻辑回归 分类
- 逻辑回归:使用SGD(Stochastic Gradient Descent)进行大规模机器学习
- 使用Minitab进行逻辑回归分析(一)
- 国嵌不用jlink那使用什么下载逻辑程序并单步调试的?& h-jtag原理,和jlink区别 & jlink为什么这么贵。
- 为什么大型网站前端使用 PHP 后台逻辑用 Java?