estimated_standard_deviation
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
estimated_standard_deviation [2025/08/12 19:58] – [R 에서 SS값이 최소인 v값을 찾기] hkimscil | estimated_standard_deviation [2025/08/12 20:00] (current) – [R 에서 SS값이 최소인 v값을 찾기] hkimscil | ||
---|---|---|---|
Line 429: | Line 429: | ||
</ | </ | ||
+ | ====== output ====== | ||
+ | < | ||
+ | > # | ||
+ | > # | ||
+ | > | ||
+ | > rm(list=ls()) | ||
+ | > rnorm2 <- function(n, | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > # set.seed(191) | ||
+ | > nx <- 20 | ||
+ | > mx <- 50 | ||
+ | > sdx <- mx * 0.15 | ||
+ | > x <- rnorm2(nx, mx, sdx) | ||
+ | > | ||
+ | > mean(x) | ||
+ | [1] 50 | ||
+ | > sd(x) | ||
+ | [1] 7.5 | ||
+ | > length(x) | ||
+ | [1] 20 | ||
+ | > hist(x) | ||
+ | > | ||
+ | > x.span <- seq(from = mean(x)-6*sd(x), | ||
+ | + to = mean(x)+6*sd(x), | ||
+ | + by = 0.1) | ||
+ | > | ||
+ | > residuals <- function(x, v) { | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > ssr <- function(x, v) { | ||
+ | + | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > msr <- function(x, v) { | ||
+ | + | ||
+ | + # return((sum(residuals^2))/ | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > srs <- c() # sum of residuals | ||
+ | > ssrs <- c() # sum of square residuals | ||
+ | > msrs <- c() # mean square residuals = variance | ||
+ | > vs <- c() # the value of v in (x - v) | ||
+ | > | ||
+ | > for (i in x.span) { | ||
+ | + res.x <- residuals(x, | ||
+ | + srs.x <- sum(res.x) | ||
+ | + ssr.x <- ssr(x,i) | ||
+ | + msr.x <- msr(x,i) | ||
+ | + srs <- append(srs, srs.x) | ||
+ | + ssrs <- append(ssrs, | ||
+ | + msrs <- append(msrs, | ||
+ | + vs <- append(vs, i) | ||
+ | + } | ||
+ | > plot(srs) | ||
+ | > plot(msrs) | ||
+ | > plot(srs) | ||
+ | > | ||
+ | > min(msrs) | ||
+ | [1] 53.4375 | ||
+ | > min.pos.msrs <- which(msrs == min(msrs)) | ||
+ | > min.pos.msrs | ||
+ | [1] 451 | ||
+ | > print(vs[min.pos.msrs]) | ||
+ | [1] 50 | ||
+ | > | ||
+ | > plot(vs, msrs) | ||
+ | > plot(vs, srs) | ||
+ | > | ||
+ | > | ||
+ | > | ||
+ | > # the above no gradient | ||
+ | > # mse 값으로 계산 rather than sse | ||
+ | > # 후자는 값이 너무 커짐 | ||
+ | > | ||
+ | > gradient <- function(x, v){ | ||
+ | + | ||
+ | + dx = -2 * mean(residuals) | ||
+ | + | ||
+ | + } # function returns ds value | ||
+ | > | ||
+ | > residuals <- function(x, v) { | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > ssr <- function(x, v) { | ||
+ | + | ||
+ | + | ||
+ | + } | ||
+ | > | ||
+ | > msr <- function(x, v) { | ||
+ | + | ||
+ | + | ||
+ | + # return(mean(residuals^2)) | ||
+ | + } | ||
+ | > | ||
+ | > # pick one random v in (x-v) | ||
+ | > v <- rnorm(1) | ||
+ | > # Train the model with scaled features | ||
+ | > learning.rate = 1e-1 | ||
+ | > | ||
+ | > ssrs <- c() | ||
+ | > msrs <- c() | ||
+ | > mres <- c() | ||
+ | > vs <- c() | ||
+ | > # Record Loss for each epoch: | ||
+ | > zx <- (x-mean(x))/ | ||
+ | > | ||
+ | > nlen <- 100 | ||
+ | > for (epoch in 1:nlen) { | ||
+ | + | ||
+ | + ssr.x <- ssr(zx, v) | ||
+ | + msr.x <- msr(zx, v) | ||
+ | + ssrs <- append(ssrs, | ||
+ | + msrs <- append(msrs, | ||
+ | + | ||
+ | + grad <- gradient(zx, | ||
+ | + | ||
+ | + | ||
+ | + v <- v - step.v | ||
+ | + vs <- append(vs, v) | ||
+ | + } | ||
+ | > | ||
+ | > tail(srs) | ||
+ | [1] -890 -892 -894 -896 -898 -900 | ||
+ | > tail(msrs) | ||
+ | [1] 1 1 1 1 1 1 | ||
+ | > tail(ssrs) | ||
+ | [1] 19 19 19 19 19 19 | ||
+ | > tail(vs) | ||
+ | [1] 2.936258e-11 2.349006e-11 1.879204e-11 1.503363e-11 1.202690e-11 9.621523e-12 | ||
+ | > | ||
+ | > plot(srs) | ||
+ | > plot(msrs) | ||
+ | > plot(ssrs) | ||
+ | > plot(vs) | ||
+ | > # scaled | ||
+ | > v | ||
+ | [1] 9.621523e-12 | ||
+ | > v.orig <- (v*sd(x))+mean(x) | ||
+ | > v.orig | ||
+ | [1] 50 | ||
+ | > | ||
+ | > | ||
+ | </ | ||
====== tags ====== | ====== tags ====== | ||
{{tag>" | {{tag>" | ||
estimated_standard_deviation.txt · Last modified: 2025/08/12 20:00 by hkimscil