Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sg <- function(b, m, data, LR){
- b_grad <- 0
- m_grad <- 0
- n <- nrow(data)
- result <- data.frame('b' = rep(NA, times = n),
- 'm' = rep(NA, times = n),
- 'i' = rep(NA, times = n))
- for(i in 1:n){
- b_grad <- b_grad + -(2/n) * (data$y[i] - ((m * data$x[i]) + b))
- m_grad <- m_grad + -(2/n) * data$x[i] * (data$y[i] - ((m * data$x[i]) + b))
- new_b <- b - (LR * b_grad)
- new_m <- m - (LR * m_grad)
- result[i,] <- cbind(new_b, new_m, i)
- }
- return(result)
- }
- (p <- data.frame('x' = rnorm(10, 5, 1.5), 'y' = rpois(10, 2)))
- sg(0, 0, p, .001)
- sg(0, 0, p, .01)
- sg(0, 0, p, .02)
- # enhance
- sg.iterate <- function(b, m, data, LR, n.iter){
- i.res <- data.frame('b' = b,
- 'm' = m,
- 'i' = 0)
- for(i in 1:n.iter){
- i.res <- rbind(i.res, sg(b, m, data, LR))
- b <- i.res$b[nrow(i.res)]
- m <- i.res$m[nrow(i.res)]
- }
- return(i.res)
- }
- sg.iterate(0, 0, p, .001, 100)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement