我如何在 R 中实现相当于
lr = LogisticRegression(penalty='l2')
lr.fit(X, y)
在 R?
我如何在 R 中实现相当于
lr = LogisticRegression(penalty='l2')
lr.fit(X, y)
在 R?
您的问题是如何在 R 中运行 L2 正则化逻辑回归。
我的另一个详细答案可以在这里找到。逻辑回归的正则化方法
对于实施,有不止一种方法可以做到这一点。
方法一、使用方法glmnet(data,label,family="binomial", alpha=0, lambda=1),详情可参见glmnet手册,查看第9页。
方法 2 使用LiblineaR(data,label, type=0)或LiblineaR(data,label, type=7)。详细信息可以在LiblineaR 手册第 4 页找到。两者都是 L2 正则化逻辑回归,一个原始的和一个对偶的。
方法3,手动执行。
这是正则化逻辑损失的代码,它是梯度。我们可以使用优化工具箱(如BFGS)进行优化。
rm(list=ls())
set.seed(0)
library(mlbench)
d=mlbench.2dnormals(100,2)
x=d$x
y=ifelse(d$classes==1,1,0)
lambda=1
logistic_loss <- function(w){
p=plogis(x %*% w)
L=-y*log(p)-(1-y)*log(1-p)
LwR2=sum(L)+lambda*t(w) %*% w
return(c(LwR2))
}
logistic_loss_gr <- function(w){
p=plogis(x %*% w)
v=t(x) %*% (p - y)
return(c(v)+2*lambda*w)
}
optim(runif(2),logistic_loss,logistic_loss_gr,method="BFGS")