Elastic Net惩罚如何应用于Logistic Regression的Maximum Likelihood代价函数?
首先直接回答核心疑问:你提到的「用极大似然减去惩罚项」是最大化目标下的表述,而实际实现时逻辑回归普遍将优化目标转化为最小化负对数似然损失,对应操作是在负对数似然损失的基础上直接加惩罚项,和你熟悉的线性回归给残差平方和加惩罚的逻辑完全一致。
基础前提:无惩罚的逻辑回归优化目标
无正则的逻辑回归核心目标是最大化样本的极大似然估计(MLE),公式为:
$$\max_{\beta} \prod_{i=1}^n p(y_i|x_i,\beta)$$
为了避免连乘的数值溢出、简化求导操作,通常会转化为最小化负对数似然损失(NLL),也就是你说的极大似然对应的代价函数:
$$\min_{\beta} -\sum_{i=1}^n \left[ y_i \log(p_i) + (1-y_i)\log(1-p_i) \right]$$
其中$p_i = sigmoid(\beta^T x_i)$是模型预测的正样本概率,$\beta$为模型系数向量,默认惩罚项不会作用于截距项$\beta_0$。
不同惩罚项的具体结合形式
Ridge(L2惩罚)
优化目标为:
$$\min_{\beta} \left[ -\sum_{i=1}^n \left[ y_i \log(p_i) + (1-y_i)\log(1-p_i) \right] + \lambda \sum_{j=1}^p \beta_j^2 \right]$$
其中$\lambda \geq 0$是惩罚强度系数,值越大对大权重的压制越强。对应scikit-learn中LogisticRegression的penalty='l2'参数,注意sklearn内置的正则化强度参数C与上述$\lambda$为倒数关系:$C = 1/\lambda$。Lasso(L1惩罚)
优化目标为:
$$\min_{\beta} \left[ -\sum_{i=1}^n \left[ y_i \log(p_i) + (1-y_i)\log(1-p_i) \right] + \lambda \sum_{j=1}^p |\beta_j| \right]$$
该惩罚会将不重要特征的系数压缩至0,可同时实现特征选择与正则化。对应scikit-learn中LogisticRegression的penalty='l1'参数,需配合支持L1优化的求解器(如saga)使用。Elastic Net(混合L1+L2惩罚)
优化目标为:
$$\min_{\beta} \left[ -\sum_{i=1}^n \left[ y_i \log(p_i) + (1-y_i)\log(1-p_i) \right] + \lambda \left( \alpha \sum_{j=1}^p |\beta_j| + \frac{1-\alpha}{2}\sum_{j=1}^p \beta_j^2 \right) \right]$$
其中$\alpha \in [0,1]$为惩罚混合比例,$\alpha=1$等价于Lasso,$\alpha=0$等价于Ridge。对应scikit-learn中LogisticRegression的penalty='elasticnet'参数,需额外指定l1_ratio参数匹配上述$\alpha$取值。
补充说明:几乎所有主流实现中,惩罚项都不会作用于截距项,因为截距项是对全量样本正负比例的全局调整,不需要被正则化约束。
内容的提问来源于stack exchange,提问作者Stephen

