Deep Learning 3 -逻辑回归和牛顿法
数据
数据地址:ex4Data.zip
这个练习中,假设一高校有一数据集,代表了40个录取的学生和40个未录取的学生。每个(xi,yi)样本代表学生在两次标准考试中的成绩和是否录取的标签。
目标:建立模型,评估大学会录取一学生的几率,评判标准为学生在两次测试中的成绩。
1. x的第一列为1,第二列为两个成绩;
2. y为向量,0代表没录取,1代表录取
数据图绘制
加载数据,x0=1。
在牛顿法求解前,用不同的符号代表不同分类,matlab中,
% findreturns the indices of the
% rowsmeeting the specified condition
pos = find(y== 1); neg = find(y == 0);
% Assume thefeatures are in the 2nd and 3rd
% columns ofx
plot(x(pos,2), x(pos,3), '+'); hold on
plot(x(neg,2), x(neg, 3), 'o')
如下图:
牛顿法求解
逻辑回归模型如下:
根据给定的x,解读事件发生的可能性。
Matlab中没有sigmod函数库,因此要自己定义。如下:
g =inline('1.0 ./ (1.0 + exp(-z))');
% Usage: Tofind the value of the sigmoid
% evaluatedat 2, call g(2)
代价函数J(θ)如下:
目的是用牛顿法最小化上述函数,高纬情形下牛顿法的更新规则为:
逻辑回归中,一阶导数和hessian矩阵的矢量表示为:
注意到,上述式子为向量形式,尤其是
实施:
代码中实现牛顿迭代法,初始值θ= 0 为了求得迭代次数, 每次迭代后计算J(θ)并作图. 牛顿迭代法一般在5-15次后收敛.
在收敛后,利用求得的θ值预测分类问题,决策边缘为
与下式对应:
绘制决策边缘等同于绘制θTx=0,如下图:
问题:
θ值是多少,迭代多少次开始收敛?
解决方案:
代码如下:ex4.m。
牛顿法
1. 求得的结果
作图如下:
由上图,牛顿法大概在迭代5次左右收敛。J的值小于10^-7在第4到第5次时。回顾之前的2个练习,梯度下降要迭代成百上千次。牛顿迭代法更快。