Logistic Regression
和前一节linear regression类似,只是logistic regression用于二分类问题,借助于sigmoid函数
σ(x)=11+e−x
的良好性质,使得可以从概率的角度去考虑二分类问题。判别函数定义为
P(y=1|x)=hθ(x)=11+e−θTx
,
P(y=0|x)=1−hθ(x)
.cost function定义为
J(θ)=−∑i(y(i)log(hθ(x))+(1−y(i))log(1−hθ(x)))
.
又称为cross-entropy error function.这个可由似然函数 P(y|θ)=∏i=1mhθ(x(i))y(i)(1−hθ(x(i)))1−y(i) 取负的对数值得到。与linear regression相比,虽然判别函数和cost function在具体形式上不一样,但是导数在形式上是一样的。我的古董电脑执行不了 ex1b_logreg.m,提示out of memory。。。 这里也提到了这个问题,但按照他说的方法试了试还是不行,换了一台稍微给力点的电脑就可以执行了。
Vectorization
这节主要是让我们感受下MATLAB的vectorization features,上节已经搞过。
Debugging:Gradient Checking
这节主要是验证自己写的梯度计算函数是否正确,利用
g(θ)≈J(θ+EPSILON)−J(θ−EPSILON)2∗EPSILON
看了下他们写的 grad_check.m,看别人码的代码也能学不少东西。这个函数参数列表里用了 MATLAB里面的 varargin:Variable length input argument list。大致就是可以实现参数个数的动态化,不必事先指定函数需要传进多少个参数。