【发布时间】:2015-06-08 08:53:13
【问题描述】:
我正在解决关于机器学习的在线课程的练习。问题陈述是:
假设一所高中有一个数据集,代表 40 名被大学录取的学生和 40 名未被录取的学生。每个( x(i), y(i) ) 训练示例都包含一个学生在两次标准化考试中的成绩以及该学生是否被录取的标签。
我们的任务是构建一个二元分类模型,该模型根据学生在两次考试中的成绩来估计大学录取机会。在training data,
一个。 x 数组的第一列代表所有测试 1 的分数,第二列代表所有测试 2 的分数。
b. y 向量使用“1”标记被录取的学生,使用“0”标记未被录取的学生。
我已经通过使用名为fminunc 的预定义函数解决了这个问题。现在,我正在通过使用梯度下降来解决它,但我的成本与迭代次数的图表没有转换,即成本函数值不会随着迭代次数而减少。我的 theta 值也与我应该得到的答案不匹配。
我得到的θ值:
[-0.085260 0.047703 -0.022851]
我应该得到的θ值(答案):
[-16.38 0.1483 0.1589]
我的源代码:
clear ; close all; clc
x = load('/home/utlesh/Downloads/ex4x.txt');
y = load('/home/utlesh/Downloads/ex4y.txt');
theta = [0,0,0];
alpha = 0.00002;
a = [0,0,0];
m = size(x,1);
x = [ones(m,1) x];
n = size(x,2);
y_hyp = y*ones(1,n);
for kk = 1:100000
hyposis = 1./(1 + exp(-(x*theta')));
x_hyp = hyposis*ones(1,n);
theta = theta - alpha*1/m*sum((x_hyp - y_hyp).*x);
a(kk,:) = theta ;
end
cost = [0];
for kk = 1:100000
h = 1./(1 + exp(-(x*a(kk,:)')));
cost(kk,:) = sum(-y .* log(h) - (1 - y) .* log(1 - h));
end
x_axis = [0];
for kk = 1:100000
x_axis(kk,:) = kk;
end
plot(x_axis,cost);
我得到的图形看起来像 1/x;
请告诉我我在哪里做错了。如果有什么我误解了,请告诉我。
【问题讨论】:
标签: artificial-intelligence octave logistic-regression gradient-descent