逻辑回归 - 计算成本函数会返回错误的结果

时间:2015-07-09 18:48:43

标签: matlab machine-learning logistic-regression gradient-descent

我刚开始在Coursera的this answer上学习Andrew Ng的课程。 第三周的主题是逻辑回归,所以我试图实现以下成本函数。

Cost function

该假设定义为: Hypothesis

其中g是sigmoid函数: Sigmoid

这就是我的功能目前的看法:

X = [magic(3) ; magic(3)];
y = [1 0 1 0 1 0]';
[j g] = costFunction([0 1 0]', X, y)

给出以下值

if $::ipaddress_bond0 {
  $primary_interface = 'bond0'
  notify{"$primary_interface":}
}
else {
  $primary_interface = 'eth0'
  notify{"$primary_interface":}
}

j返回0.6931 2.6067 0.6931,即使结果应为j = 2.6067。我假设Xi有问题,但我看不出错误。

如果有人能指出我正确的方向,我将非常感激。

2 个答案:

答案 0 :(得分:7)

您应该将sigmoid函数应用于参数向量(theta)和输入向量(Xi的点积,在这种情况下是行向量)。所以,你应该改变

H = sigmoid(transpose(theta).*Xi);

H = sigmoid(theta' * Xi'); % or sigmoid(Xi * theta)

当然,您需要确保将偏差输入1添加到输入中(1到1行X)。

接下来,考虑如何对整个操作进行矢量化,以便可以在没有任何循环的情况下编写它。这样会快得多。

答案 1 :(得分:0)

//Create model and assign values

$user_d = new UserDetail;
$user_d->father_name = $request['fname'];
$user_d->dob = $request['dob'];
$user_d->save();

//pass the model to updateOrCreate method
$ud = UserDetail::updateOrCreate([
          'user_id' => $user->id
      ], $user_d->attributesToArray());

在sigmoid函数可以正常工作的情况下,上述代码段对Logistic Regrssion Cost和Gradient函数非常适用。