由于前面讲过了线性回归和正则化,
所以对于逻辑回归:
我们也给代价函数增加一个正则化的表达式,得到代价函数:
python code:
import numpy as np
def costReg(theta, X, y, learningRate):
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)))
reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:theta.shape[1]],2))
return np.sum(first - second) / (len(X)) + reg
要最小化该代价函数,通过求导,得出梯度下降算法为:
注:看上去同线性回归一样,但是知道 ,所以与线性回归不同。
的更新规则与其他情况不同。
注意:
-
虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,但由于两者的不同所以还是有很大差别。
-
不参与其中的任何一个正则化。
网友评论