在 Andrew Ng 的 ML 课程的帮助下,我目前正在 Coursera 上学习 ML。我在 python 中执行作业,因为我更习惯它而不是 Matlab。我最近遇到了一个关于我对正则化主题的理解的问题。我的理解是,通过进行正则化,可以添加在预测中足够重要的不太重要的特征。但是在实现它时,我不明白为什么在计算成本时会跳过 theta(parameters) 的第一个元素,即 theta[0]。我已经提到了其他解决方案,但他们也做了同样的跳过没有解释。
这是代码:
`
term1 = np.dot(-np.array(y).T,np.log(h(theta,X)))
term2 = np.dot((1-np.array(y)).T,np.log(1-h(theta,X)))
regterm = (lambda_/2) * np.sum(np.dot(theta[1:].T,theta[1:])) #Skip theta0. Explain this line
J=float( (1/m) * ( np.sum(term1 - term2) + regterm ) )
grad=np.dot((sigmoid(np.dot(X,theta))-y),X)/m
grad_reg=grad+((lambda_/m)*theta)
grad_reg[0]=grad[0]
`
这是公式:
这里 J(theta) 是成本函数 h(x) 是 sigmoid 函数或假设。lamnda 是正则化参数。