R로 다항식 곡선을 맞추다
set.seed(0)
x<-seq(0.05,1,0.1)
t<-sin(2*pi*x)+rnorm(10,0,0.5)
makeA<-function(m){
A<-matrix(nrow=m+1,ncol=m+1)
for (i in 0:m) {
for (j in 0:m) {
A[1+i,1+j]<-sum(x^(i+j))
}
}
A
}
makeB<-function(m){
b<-0:m
for (i in 0:m) {
b[i+1]<-sum(x^i*t)
}
b
}
xrange<-c(-0.5,1.5)
yrange<-c(-2,2)
plot(x,t,xlim=xrange,ylim=yrange)
mrange=1:9
for (M in mrange) {
A<-makeA(M)
b<-makeB(M)
w<-solve(A,b)
estimate<-function(x){
i <- 0:(length(w)-1)
(sapply(x,function(xn){ (sum(w*xn^i)) })) # (w[1]+w[2]*x+w[3]*x^2+w[4]*x^3...)
}
par(new=T)
curve(estimate,type="l",xlim=xrange,ylim=yrange,col=M)
}
legend("topleft",legend=mrange,col=mrange,lty=1,cex=0.5)
다항식 $y(x,\mathbf{w}) = w_0 + w_1 x + w_2 x^2 +\ldots + w_M x^M =\sum_{j=0}^{M} w_관측치를 jx^j$로 맞춥니다.목표치(관측치)$t_n$로, 예측치 $y(x_n,\mathbf {w})$로, 최적 $\mathbf {w}$로 다음 제곱과 오차를 최소화합니다.{\displaystyle E(\mathbf{w}) = \frac{1}{2} \sum_{n=1}^N \Bigl(y(x_n,\mathbf{w}) - t_n\Bigr)^2}
제곱과 오차를 구하는 $\mathbf{w}$의 미분은 $\mathbf{0}$의 $\mathbf{w}$입니다.\begin{aligned}
\frac{\partial}{\partial w_i}E(\mathbf{w}) &= \frac{1}{2} \cdot 2 \sum_{n=1}^N \Bigl\{y(x_n,\mathbf{w}) - t_n\Bigr\}\frac{\partial}{\partial w_i}y(x_n,\mathbf{w})\\
&= \sum_{n=1}^N \biggl( \Bigl(\sum_{j=0}^M w_j x_n^j -t_n\Bigr)\frac{\partial}{\partial w_i}\sum_{j=0}^M w_j x_n^j\biggr)
\\
&= \sum_{n=1}^N \biggl( \Bigl(\sum_{j=0}^M w_j x_n^j -t_n\Bigr) x_n^i \biggr)\\
&= \sum_{n=1}^N \Bigl(x_n^i \sum_{j=0}^M w_j x_n^j - x_n^i t_n\Bigr) = 0\\
\sum_{n=1}^N \Bigl(x_n^i \sum_{j=0}^M w_j x_n^j \Bigr) &= \sum_{n=1}^N x_n^i t_n\\
\sum_{j=0}^M w_j \sum_{n=1}^N x_n^{i+j} &= \sum_{n=1}^N x_n^i t_n
\end{aligned}
$\mathbf{w}$의 연립 방정식 $\mathbf{Aw}=\mathbf{b}$를 구하십시오.\begin{aligned}
\mathbf{A}&=\sum_{n=1}^N \begin{bmatrix} x_n^0 && x_n^1 && \cdots && x_n^M \\ \vdots && \vdots && \ddots && \vdots \\ x_n^M && x_n^{M+1} && \cdots && x_n^{M+M}\end{bmatrix}\\
\mathbf{w}&=\begin{bmatrix}w_0 \\ \vdots \\ w_M\end{bmatrix}\\
\mathbf{b}&=\sum_{n=1}^N \begin{bmatrix} x_n^0 t_n \\ \vdots \\ x_n^M t_n\end{bmatrix}
\end{aligned}
Dropbox 자료도 있습니다.
Reference
이 문제에 관하여(R로 다항식 곡선을 맞추다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/data9824/items/59378dd5146a52bd2dbd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)