1. 描述
在本练习中,您将使用牛顿方法对分类问题实现逻辑回归。
2.数据
首先,下载data2.zip并从zip文件中提取文件。 在本练习中,假设一所高中有一个数据集,该数据集表示40名被大学录取的学生和40名未被录取的学生。 每个(x(i);y(i))(x(i) ;y(i))(x(i);y(i))训练示例包含学生在两个标准化考试中的成绩以及学生是否被录取的标签。
您的任务是建立一个二元分类模型,根据 学生在两门考试中的成绩来估计大学录取的机会。 在训练数据中,xxx数组的第一列代表所有测试1的分数,第二列代表所有测试2的分数,yyy矢量使用" 1“标记被录取的学生和" 0”标记 没被录取的学生。
3.绘制数据
将训练样例的数据加载到程序中,并将x0=1x_0 = 1x0=1截距项添加到xxx矩阵中。
在开始牛顿方法之前,我们将首先使用不同的符号绘制数据来表示两个类。 在Matlab / Octave中,您可以使用find命令分离正类和负类:
% find返回满足指定条件的行的索引
pos = find ( y == 1 ) ; neg = find ( y == 0 ) ;
% Assume the features are in the 2nd and 3rd columns of x
plot ( x ( pos , 2 ) , x ( pos , 3 ) , '+' ) ; hold on
plot ( x ( neg , 2 ) , x ( neg , 3 ) , ' o ' )
你画的应该如下所示

4 .逻辑回归
回想一下逻辑回归,假设函数为
(1)hθ(x)=g(θTx)=11+e−θTx=P(y=1∣x;θ) h _ { \theta } ( x ) = g \left( \theta ^ { T } x \right) = \frac { 1 } { 1 + e ^ { - \theta ^ { T } x } } = P ( y = 1 | x ; \theta ) \tag{1} hθ(x)=g(θTx)=1+e−θTx1=P(y=1∣x;θ)(1)
Matlab/Octave没有sigmoid函数库,所以你必须自己定义它。最简单的方法是通过内联表达式。
g = inline('1.0 ./ (1.0 + exp(-z))');
%Usage: To find the value of sigmoid
%evaluated at 2, call g(2)
给定一个训练集{
x(i)}i=1,…,m\{x^{(i)}\}_{i=1,\dots,m}{
x(i)}i=1,…,m我们定义一个极大似然函数为
(2)J(θ)=∏i=1m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(t) J ( \theta ) = \prod _ { i = 1 } ^ { m } \left( h _ { \theta } \left( x ^ { ( i ) } \right) \right) ^ { y ^ { ( i ) } } \left( 1 - h _ { \theta } \left( x ^ { ( i ) } \right) \right) ^ { 1 - y ^ { ( t ) } } \tag{2} J(θ)=i=1∏m(hθ