def ObjFun(x,y,beta): # 目标函数 """ Logistic regression loss function :param beta: model parameter vector :param x: feature matrix :param y: label vector :return: loss value """ n = x.shape[0] p = x.shape[1] pred = 1 / (1 + np.exp(-np.dot(x, beta))) pred = np.clip(pred, 1e-15, 1 - 1e-15) # 将预测值限制在一个很小的区间内 ObjVal = -np.sum(y * np.log(pred) + (1 - y) * np.log(1 - pred)) / n return ObjVal
时间: 2024-04-26 11:27:16 浏览: 326
优化设计Matlab编程作业.doc
好的,根据上面的目标函数,我们可以推导出其对应的梯度向量函数,如下所示:
def gradient(x, y, beta):
"""
Compute gradient of the logistic regression loss function
:param beta: model parameter vector
:param x: feature matrix
:param y: label vector
:return: gradient vector
"""
n = x.shape[0]
pred = 1 / (1 + np.exp(-np.dot(x, beta)))
pred = np.clip(pred, 1e-15, 1 - 1e-15)
grad = np.dot(x.T, pred - y) / n
return grad
其中,x, y, beta 分别表示特征矩阵、标签向量和模型参数向量。函数返回的是目标函数的梯度向量。
阅读全文