R에서 무작위 올가미 함수를 만들려고했지만 파이썬 sklearn 무작위 올가미 함수와 동일한 결과를 생성하지 않는 것 같습니다. 나는 여기에 같은 철학을 적용하고 있지만 그 차이를 이해할 수는 없습니다. 코드는 수정이 코드에 기초 하였다 :랜덤 화 된 올가미를 R
# generate synthetic data
set.seed(100)
size = 750
x = matrix(runif(14*size),ncol=14)
y = 10 * sin(pi*X[,1]*X[,2]) + 20*(X[,3]-0.5)**2 + 10*X[,4] + 5*X[,5] + runif(1,0,1)
nbootstrap = 200
nsteps = 20
alpha = 0.2
dimx <- dim(x)
n <- dimx[1]
p <- dimx[2]
halfsize <- as.integer(n/2)
freq <- matrix(0,1,p)
for (i in seq(nbootstrap)) {
# Randomly reweight each variable
xs <- t(t(x)*runif(p,alpha,1))
# Ramdomly split the sample in two sets
perm <- sample(dimx[1])
i1 <- perm[1:halfsize]
i2 <- perm[(halfsize+1):n]
# run the randomized lasso on each sample and check which variables are selected
cv_lasso <- lars::cv.lars(xs[i1,],y[i1],plot.it=FALSE, mode = 'step')
idx <- which.max(cv_lasso$cv - cv_lasso$cv.error <= min(cv_lasso$cv))
coef.lasso <- coef(lars::lars(xs[i1,],y[i1]))[idx,]
freq <- freq + abs(sign(coef.lasso))
cv_lasso <- lars::cv.lars(xs[i2,],y[i2],plot.it=FALSE, mode = 'step')
idx <- which.max(cv_lasso$cv - cv_lasso$cv.error <= min(cv_lasso$cv))
coef.lasso <- coef(lars::lars(xs[i1,],y[i1]))[idx,]
freq <- freq + abs(sign(coef.lasso))
print(freq)
}
# normalize frequence in [0,1]
freq <- freq/(2*nbootstrap)
결과는 표 (안정성)에 나타낸 결과 stability in python. 그러나이 유사한 비교되어야한다 : 여기서
randomized lasso function in R. 코드 샘플 데이터 인 첫 번째 하이퍼 링크 참조에있는 원본 R 코드 쇼는 상관 된 기능 X11에서 X14를 찾지 못했습니다. 내 코드에서 제대로 작동하지 않는 부분이 있는지 확인하십시오.
물론입니다. 미래의 질문에 대한 지침을 읽을 것입니다. –