glmnet パッケージの標準化オプションについて 1 つ質問があります。
係数を意味のあるものにするために、回帰分析にはデータセットのスケーリングまたは標準化が必要であることを理解しています。
通常、線形回帰 (R で glm 関数を使用する場合など) だけを行う場合は、glm モデルを実行する前に、scale() 関数を使用してデータセットを手動でスケーリングします。
ただし、(正規化された回帰のために) glmnet パッケージを使用する場合、標準化オプションはデータセットを標準化し、それによって係数を意味のある (比較可能な) ものにするようです。私は正しいですか?
これが正しければ、次のコードを実行するとします。そして、変数 "x3" が最大の係数 (絶対値スケール) を持っていることがわかります。それでは、変数「x3」がカテゴリを識別する上で最も重要な変数であると結論付けることができますか???
どなたかご意見お待ちしております!!ありがとう。
set.seed(12345)
example.dat <- data.frame(Category = rbinom(100, 1, 0.5),
x1 = rpois(100, 10),
x2 = rnorm(100, 3, 10),
x3 = rbeta(100, 8, 20),
x4 = rnorm(100, -3, 45),
x5 = rnorm(100, 1000, 10000))
sample = sample.split(example.dat$Category, SplitRatio = .70)
train = subset(example.dat, sample == TRUE)
test = subset(example.dat, sample == FALSE)
set.seed(12345)
lasso.fit <- cv.glmnet(data.matrix(train[,-1]),
train[,1],
family = "binomial",
nfolds = nrow(train), # LOOCV
grouped = FALSE,
type.measure = "class",
alpha = 0.6,
standardize = TRUE,
standardize.response = TRUE)
print(lasso.fit)
coef <- as.matrix(abs(coef(lasso.fit, s = "lambda.1se")))
coef.order <- as.matrix(coef[order(coef, decreasing = TRUE),])
rownames(as.matrix(coef.order[coef.order[,1]>0,]))
# [1] "x3" "(Intercept)"