LR(逻辑回归)

本文详细介绍了逻辑回归的基本概念,包括假设函数如何通过sigmoid函数进行转换,以及为何不能使用平方差作为损失函数的原因。文章深入解析了交叉熵损失函数的定义及其在逻辑回归中的应用,并给出了损失函数的偏导数计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、假设函数 (Hypothesis)

就是在多元线性回归的基础上再加一个sigmod函数。
yθ(x)=θ0+θ1x1+θ2x2....+θixiy_\theta(x) = \theta_0 +\theta_1x_1+\theta_2x_2....+\theta_ix_iyθ(x)=θ0+θ1x1+θ2x2....+θixi
zθ(x)=11+e−xz_\theta(x) = \frac{1}{1+e^{-x}}zθ(x)=1+ex1
综合以上两个公式:
hθ(x)=11+e−θxh_\theta(x) = \frac{1}{1+e^{-\theta x}}hθ(x)=1+eθx1

  • 注意:如果把最后的激活函数替换成阶跃函数,逻辑回归就变成了感知器
二、损失函数
1.交叉熵损失函数

逻辑回归的损失函数不能采用平方差损失函数,因为逻辑回归的损失函数不是凸函数。
逻辑回归的损失函数采用交叉熵作为损失函数。
Lθ(x)=−1m∑i=1m(yiloghθ(xi)+(1−y)ilog(1−hθ(xi)))L_\theta(x) =- \frac{1}{m}\sum_{i=1}^{m}(y^{i}logh_\theta(x^i)+(1-y)^{i}log(1-h_\theta(x^i)))Lθ(x)=m1i=1m(yiloghθ(xi)+(1y)ilog(1hθ(xi)))

2.交叉熵损失函数的推导

∂hθ(x)∂θ=1m∑i=1m(hθ(xi)−yi)xi\frac{\partial h_\theta(x)}{\partial_\theta}=\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^i)-y^i)x^iθhθ(x)=m1i=1m(hθ(xi)yi)xi
所有逻辑回归的交叉熵损失函数的偏导数和多元线性回归的平方差损失的偏导数是一样的

### 广告点击率预测中逻辑回归的应用 逻辑回归是一种广泛应用于分类问题的统计学模型,在广告点击率(CTR,Click-Through Rate)预测领域具有重要地位。以下是关于其概念、实现方法及其在广告算法中的具体应用。 #### 1. 逻辑回归的核心原理 逻辑回归通过sigmoid函数将线性组合的结果映射到(0,1)区间,从而表示事件发生的概率[^1]。对于二分类问题,假设输入特征向量为 \( \mathbf{x} \),权重向量为 \( \mathbf{w} \),偏置为 \( b \),则逻辑回归的概率估计可以写成: \[ P(y=1|\mathbf{x}) = \frac{1}{1 + e^{-(\mathbf{w}^\top \mathbf{x} + b)}} \] 该模型的目标是最小化损失函数,通常采用对数似然损失加上正则化项来防止过拟合[^2]。 --- #### 2. 特征工程的重要性 在广告点击率预测场景下,原始数据可能包含大量类别型变量(如用户ID、广告ID)。为了提高模型的表现力,常需对这些离散特征进行处理。一种常见的方式是对它们进行 **独热编码 (One-Hot Encoding)** 或者嵌入降维操作[^3]。例如: ```python import pandas as pd from sklearn.preprocessing import OneHotEncoder # 假设 df 是一个 DataFrame,其中 'user_id' 和 'ad_id' 需要被编码 encoder = OneHotEncoder(sparse=False) encoded_features = encoder.fit_transform(df[['user_id', 'ad_id']]) df_encoded = pd.DataFrame(encoded_features, columns=encoder.get_feature_names_out(['user_id', 'ad_id'])) ``` 这种转换能够使模型更好地捕捉不同类别的独立贡献。 --- #### 3. 模型训练与优化 针对大规模数据集,逻辑回归可以通过多种优化器解决参数更新问题。常用的有随机梯度下降(SGD)、L-BFGS等。下面是一个基于 `sklearn` 的简单实现示例: ```python from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import roc_auc_score # 数据准备 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化逻辑回归模型 model = LogisticRegression(penalty='l2', solver='lbfgs', max_iter=1000) # 训练模型 model.fit(X_train, y_train) # 测试模型性能 y_pred_proba = model.predict_proba(X_test)[:, 1] auc_score = roc_auc_score(y_test, y_pred_proba) print(f"AUC Score: {auc_score:.4f}") ``` 上述代码片段展示了如何使用 L2 正则化的逻辑回归,并评估 AUC 性能指标。 --- #### 4. 参数调整与网格搜索 为了进一步提升模型表现,可借助网格搜索寻找最佳超参数配置。以下是一段示例代码: ```python from sklearn.model_selection import GridSearchCV param_grid = { 'C': [0.01, 0.1, 1, 10], # C 表示正则化强度的倒数 'solver': ['liblinear', 'lbfgs'] } grid_search = GridSearchCV(LogisticRegression(), param_grid, cv=5, scoring='roc_auc') grid_search.fit(X_train, y_train) best_params = grid_search.best_params_ print(f"Best Parameters: {best_params}") final_model = grid_search.best_estimator_ y_final_pred_proba = final_model.predict_proba(X_test)[:, 1] final_auc_score = roc_auc_score(y_test, y_final_pred_proba) print(f"Final AUC Score with Best Params: {final_auc_score:.4f}") ``` 此部分重点在于探索不同的正则化强度和求解器选项,以获得更优的效果。 --- #### 5. 处理高阶多项式特征的影响 如果希望引入更高维度的信息,则可通过增加多项式特征扩展原空间[^4]。然而需要注意的是,随着次数升高可能会引发过拟合现象;因此建议配合正则化手段加以控制。 ```python from sklearn.preprocessing import PolynomialFeatures poly = PolynomialFeatures(degree=2, include_bias=False) X_poly = poly.fit_transform(X) estimator_l2 = LogisticRegression(C=0.005, penalty='l2', solver='lbfgs', max_iter=1000) estimator_l2.fit(X_poly, y) ``` 此处展示了一个简单的二次多项式的构建过程,并结合了 L2 正则化抑制复杂模式带来的负面影响。 --- ### 结论 综上所述,逻辑回归凭借其实现简便性和高效解释能力成为广告点击率预测的重要工具之一。通过对特征的有效加工以及合理设置惩罚因子等方式,可以在实际业务环境中取得良好的泛化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值