design a regress function whose coeficients satisfy certain conditions

1166 단어 conditionsKKT
Problem:
  Given n points (x_1, x_2, ...x_n) as independent variables, where x_i can be a value or a vector,  and the dependent variables (y_1, y_2, ... y_i), design a regression that satifies:
  1. f(x) = t(w) * x  (assume the the attribute of x corresponding w_0 is 1)
  2. sigma(w) = 1
  3. w_i >= 0
  3. minimize sigma(y - f(x))^2
Solution:
  The solution is based on KKT condition which is a generized from langrange muptiply method.
  KKT conditions of this question:
    1. delta(siagma(y - f(x))^2 + a * delta(w) + sigma(b_i * delta(w_i)) = 0
     2. sigma(w) = 1
  solve about equotions, we  get:
     b_i = 0 
     rbind(
        cbind(2 * t(X) *X, c(1, ....), 
         c(w, 1)
     )  * c(w, a) = 2 * t(X) * Y
R code: ( assume x is a vector, whose first element is 1 correponding w_0)
   
regress <- function(x, y) {
  A <- 2 * t(x) %*% x
  B <- rep(1, nrow(A))
  C <- 2 * t(x) %*% y
  D <- c(rep(1, nrow(A)), 0)
  left <- rbind(cbind(A, B), D)
  coef <- solve(left, c(C, 1))
  coef[1:length(coef) - 1]
}

좋은 웹페이지 즐겨찾기