R로 다항식 곡선을 맞추다

10411 단어 RPRML
PRML 연습 1.1 계산 계수에 따라 그림 1.3 다항식 곡선과 같은 도형을 그립니다.
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 자료도 있습니다.

좋은 웹페이지 즐겨찾기