4

Newton의 방법을 사용하여 최적의 선형 회귀를 계산하는 MatLab 함수를 구현하려고합니다. 그러나 나는 한 지점에 갇혀 버렸다. 나는 2 차 미분을 찾는 방법을 모른다. 그래서 나는 그것을 구현할 수 없다. 여기 내 코드가있다.Newton 's Gradient Descent Linear Regression

도움 주셔서 감사합니다.

function [costs,thetas] = mod_gd_linear_reg(x,y,numofit) 

    theta=zeros(1,2); 
    o=ones(size(x)); 
    x=[x,o]'; 
    for i=1:numofit 

     err=(x.'*theta.')-y; 
     delta=(x * err)/length(y); %% first derivative 
     delta2; %% second derivative 

     theta = theta - (delta./delta2).'; 

     costs(i)=cost(x,y,theta); 
     thetas(i,:)=theta; 


    end 

end 
function totCost = cost(x,y,theta) 

totCost=sum(((x.'*theta.')-y).*((x.'*theta.')-y))/2*length(y); 

end 

편집 :

나는 몇 가지 종이와 펜이 문제를 해결했다. 미적분 및 행렬 연산 만하면됩니다. 나는 2 차 미분을 발견했으며 현재 작동 중이다. 관심있는 사람들을 위해 작업 코드를 공유하고 있습니다.

function [costs,thetas] = mod_gd_linear_reg(x,y,numofit) 

theta=zeros(1,2); 
sos=0; 
for i=1:size(x) 
    sos=sos+(x(i)^2); 
end 
sumx=sum(x); 
o=ones(size(x)); 
x=[x,o]'; 
for i=1:numofit 

    err=(x.'*theta.')-y; 
    delta=(x * err)/length(y); %% first derivative 
    delta2=2*[sos,1;1,sumx]; %% second derivative 

    theta = theta - (delta.'*length(y)/delta2); 

    costs(i)=cost(x,y,theta); 
    thetas(i,:)=theta; 


end 

end 

function totCost = cost(x,y,theta) 

totCost=sum(((x.'*theta.')-y).*((x.'*theta.')-y))/2*length(y); 

end 

답변

2

2 차 유도체는 찾기가 어려울 수 있음이 알려져있다.

note page 6은 어떤 의미에서 도움이 될 수 있습니다.

완전한 뉴턴의 방법을 찾기가 어려우면 fminuncfmincg과 같은 다른 기능을 사용할 수 있습니다.