LR(逻辑回归)

数学公式与算法优化:从基本概念到高级方法
本文汇集数学公式与算法优化的知识点,深入探讨从基础概念到高级优化方法的过程。通过理解sigmoid函数及其性质,掌握概率分布与损失函数的联系,以及学习如何使用梯度下降法与高级优化算法如共轭梯度和BFGS来提升模型性能。

本系列文章用于汇集知识点,查漏补缺,面试找工作之用。数学公式较多,解释较少。

1.假设

2.sigmoid函数:

3.假设的含义:

4.性质:

5.找一个凸损失函数

6.可由最大似然估计推导出

单个样本正确预测的概率为

只是3两个式子合并在一起的表示方法

整个样本空间的概率分布为

取对数展开得,

作为损失函数,并且最小化它,则应改写为5式。

7.求解方法

最原始的方法,梯度下降法

先求导,并带入sigmoid表达式得

之后,参数更新为:

终止条件:

目前指定迭代次数。后续会谈到更多判断收敛和确定迭代终点的方法。

8.高级方法

共轭梯度

BFGS,L-BFGS

### 广告点击率预测中逻辑回归的应用 逻辑回归是一种广泛应用于分类问题的统计学模型,在广告点击率(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、付费专栏及课程。

余额充值