逻辑回归代价函数的推导过程

逻辑回归代价函数的推导过程



1、代价函数

在篇文章中,我们要介绍如何拟合逻辑回归模型的参数。具体来说,我要定义用来拟合参数的优化目标或者叫代价函数,这便是监督学习问题中的逻辑回归模型的拟合问题。
在这里插入图片描述
对于线性回归模型,我们定义的代价函数是所有模型误差的平方和。理论上来说,我们也可以对逻辑回归模型沿用这个定义,但是问题在于,当我们将

在这里插入图片描述

带入到这样定义了的代价函数中时,我们得到的代价函数将是一个非凸函数(non-convexfunction)。
在这里插入图片描述
这意味着我们的代价函数有许多局部最小值,这将影响梯度下降算法寻找全局最小值。

线性回归的代价函数为:

在这里插入图片描述

我们重新定义逻辑回归的代价函数为:

这里是引用
其中在这里插入图片描述在这里插入图片描述

Python代码实现:

import numpy as np
    
def cost(theta, X, y):   
	theta = np.matrix(theta)
	X = np.matrix(X)
	y = np.matrix(y)
	first = np.multiply(-y, np.log(sigmoid(X* theta.T)))
	second = np.multiply((1 - y), np.log(1 - sigmoid(X* theta.T)))
	return np.sum(first - second) / (len(X))

在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:
在这里插入图片描述
求导后得到:
在这里插入图片描述
我们定义了单训练样本的代价函数,凸性分析的内容是超出这门课的范围的,但是可以证明我们所选的代价值函数会给我们一个凸优化问题。代价函数会是一个凸函数,并且没有局部最优值。



2、推导过程

在这里插入图片描述

注:虽然得到的梯度下降算法表面上看上去与线性回归的梯度下降算法一样,但是这里的
在这里插入图片描述

与线性回归中不同,所以实际上是不一样的。另外,在运行梯度下降算法之前,进行特征缩放依旧是非常必要的。
一些梯度下降算法之外的选择: 除了梯度下降算法以外,还有一些常被用来令代价函数最小的算法,这些算法更加复杂和优越,而且通常不需要人工选择学习率,通常比梯度下降算法要更加快速。这些算法有:共轭梯度(Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS) 。

牛顿迭代法是一种优化算法,常用于求解非线性方程组,包括在机器学习中最小化损失函数的过程,如逻辑回归代价函数逻辑回归的损失函数通常是交叉熵损失,对于单个样本 \( (x_i, y_i) \),其损失可以表示为: \[ J(\theta) = -y_i \ln(h_\theta(x_i)) - (1-y_i) \ln(1-h_\theta(x_i)) \] 其中 \( h_\theta(x) \) 表示模型预测的概率,通常是一个sigmoid函数 \( \sigma(z) = \frac{1}{1+e^{-z}} \),\( z = \theta^T x \)。 为了使用牛顿迭代法,我们需要对损失函数关于参数 \( \theta \) 的梯度和Hessian矩阵(二阶导数)进行计算。初始迭代时,我们假设 \( \theta_0 \) 为初始值,然后按照以下步骤更新参数: 1. 计算梯度 \( g = \nabla J(\theta) \),它表示损失函数对每个参数的偏导数之和。 2. 计算Hessian矩阵 \( H = \frac{\partial^2 J}{\partial \theta^2} \) 或近似它,这一步通常在实际应用中通过动量法、批量或随机梯度下降的二阶泰勒展开来简化。 3. 执行牛顿步:\( \theta_{t+1} = \theta_t - H^{-1}g \),即使用负Hessian的逆作为方向并乘以梯度的大小进行调整。 这个过程会不断迭代直到达到预设的停止条件,比如达到最大迭代次数,或梯度变化小于某个阈值。注意,由于Hessian计算复杂,实际应用中往往采用更简单的优化方法,例如L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)或 conjugate gradient 等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值