Tôi đang thực hiện khóa học của Andrew Ng trên Machine Learning và tôi đang cố gắng bọc đầu của mình xung quanh việc thực hiện vectơ của tô chuyển tiếp cho nhiều biến. khóa học.Thực hiện gradient gốc cho nhiều biến trong Octave bằng cách sử dụng "sum"
Đây là thuật toán trong câu hỏi (lấy từ here):
Tôi chỉ không thể làm điều này trong quãng tám sử dụng sum
tuy nhiên, tôi không chắc chắn làm thế nào để nhân lên tổng các giả thuyết của x (i) - y (i) bởi tất cả các biến xj (i). Tôi cố gắng lặp khác nhau của mã sau nhưng không có kết quả (một trong hai kích thước là không đúng hoặc câu trả lời là sai):
theta = theta - alpha/m * sum(X * theta - y) * X;
Câu trả lời đúng, tuy nhiên, là hoàn toàn không rõ ràng (để một người mới bắt đầu đại số tuyến tính như tôi dù sao, từ here):
theta = theta - (alpha/m * (X * theta-y)' * X)';
có một quy tắc của ngón tay cái đối với trường hợp sum
tham gia chi phối biến đổi như trên? Và nếu có, có phiên bản ngược lại ở trên (tức là đi từ một giải pháp dựa trên sum
đến phép nhân nhân) như tôi đã có thể đưa ra một cách thực hiện chính xác bằng cách sử dụng sum
cho gradient descent cho một biến duy nhất (ví dụ: sum
) (mặc dù không phải là một rất thanh lịch):
temp0 = theta(1) - (alpha/m * sum(X * theta - y));
temp1 = theta(2) - (alpha/m * sum((X * theta - y)' * X(:, 2)));
theta(1) = temp0;
theta(2) = temp1;
Xin lưu ý rằng chỉ có những lo ngại này vectorised triển khai và mặc dù có một số câu hỏi về SO như thế nào này được thực hiện, câu hỏi của tôi là chủ yếu quan tâm đến việc thực hiện của thuật toán trong Octave sử dụng sum
.
Bản sao có thể có của [Học máy - Phép hồi quy tuyến tính bằng cách sử dụng hàng loạt dốc gốc] (http://stackoverflow.com/questions/32274474/machine-learning-linear-regression- sử dụng batch-gradient-descent) – rayryeng
Nhìn vào liên kết trùng lặp - đặc biệt là cách tiếp cận thứ hai với 'sum'. – rayryeng