gpt4 book ai didi

matlab - 逻辑回归的实现

转载 作者:行者123 更新时间:2023-11-30 09:50:35 24 4
gpt4 key购买 nike

我在实现逻辑回归时遇到一些困难,我应该如何逐步进行。根据我到目前为止所做的,我通过以下方式实现它:

  • 第一次取theta等于特征数量并使其成为 n*1零向量。现在使用这个theta计算以下 htheta = sigmoid(theta' * X');
    theta = theta - (alpha/m) * sum (htheta' - y)'*X

  • 现在使用 theta第一步计算成本函数
    J= 1/m *((sum(-y*log(htheta))) - (sum((1-y) * log(1 - htheta)))) + lambda/(2*m) * sum(theta).^2

  • 最后计算梯度
    grad = (1/m) * sum ((sigmoid(X*theta) - y')*X);

正如我正在采取的那样theta为零。我得到的值与 J 相同在整个向量中,这是正确的输出吗?

最佳答案

您正在最后一步计算梯度,而之前在计算新theta时已经计算过梯度。此外,您对成本函数的定义包含正则化参数,但这并未纳入梯度计算中。没有正则化的工作版本:

% generate dummy data for testing
y=randi(2,[10,1])-1;
X=[ones(10,1) randn([10,1])];

% initialize
alpha = 0.1;
theta = zeros(1,size(X,2));
J = NaN(100,1);

% loop a fixed number of times => can improve this by stopping when the
% cost function no longer decreases
htheta = sigmoid(X*theta');
for n=1:100
grad = X' * (htheta-y); % gradient
theta = theta - alpha*grad'; % update theta
htheta = sigmoid(X*theta');
J(n) = sum(-y'*log(htheta)) - sum((1-y)' * log(1 - htheta)); % cost function
end

如果您现在绘制成本函数,您将看到(随机性除外)它在大约 15 次迭代后收敛。

关于matlab - 逻辑回归的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45705490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com