【问题标题】:Optim.jl on simple logistic regressionOptim.jl 关于简单逻辑回归
【发布时间】:2020-04-28 21:38:25
【问题描述】:

我知道以前有人问过这个问题,但Logistic regression in Julia using Optim.jl 中提供的答案不再有效。我的代码看起来像这样......

sigmoid(x) = 1 ./ (1 .+ exp.(-x));
function costfunction(θ,X,y)
    m = length(y);
    J = 0;
    grad = zeros(size(θ));
    c(X,i,θ)=sigmoid(θ[1]+X[i,2]*θ[2]+X[i,3]*θ[3]);
    for i in 1:m
        d = c(X,i,θ);
        J += y[i]==0 ? (-log(1-d)) : (-log(d));
    end
    J/=m;
    for i in 1 : length(θ)
        for j in 1:m
            grad[i] += (c(X,j,θ) - y[j])*X[j,i];
        end
        grad[i]/=m;
    end
    return J,grad;
end
cost, grad! = costfunction(initial_theta,X,y);
res = optimize(cost, grad!, , method = ConjugateGradient(), iterations = 1000); `

initial_theta 为 [0,0,0]

X是一个99x3的DataFrame(第一列是1s),y是一个99个元素的向量

如何使用 Optim.jl 找到最小化函数的 theta?

【问题讨论】:

  • 你仔细看过那边的答案了吗?我认为传递给optimize 的渐变东西必须是一个函数。
  • 请在上面的评论中添加您的方法调用到问题中,以及您收到的任何错误消息。

标签: optimization julia logistic-regression minimization


【解决方案1】:

cost(θ)=costfunction(θ,X,y)[1]; grad!(θ)=costfunction(θ,X,y)[2]; res = optimize(cost, grad!, initial_theta, LBFGS();inplace = false); θ = Optim.minimizer(res);

inplace = false 参数在 optim.jl 文档中 https://julianlsolvers.github.io/Optim.jl/stable/#user/minimization/

【讨论】:

    猜你喜欢
    • 2018-04-10
    • 2015-12-18
    • 2017-09-11
    • 2018-05-06
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    相关资源
    最近更新 更多