Logistic Regression

本文详细介绍了逻辑回归这一常见分类算法的基本原理。首先定义了Logistic函数(又称Sigmoid函数),并给出了其数学表达式及导数。接着介绍了模型的假设函数,用于预测数据点属于某个分类的概率,并给出了代价函数的定义,最后解释了梯度下降法如何用于更新模型参数。

一、说明

一个最常见的分类算法.

  • m: 训练集个数
  • n: 特征个数
  • 训练集: {(x(1),y(1)),...,(x(i),y(i)),...,(x(m),y(m))}.
  • x(i)Rn,  y(i){0,1}
  • 模型参数: θ=(θ0,θ1...,θα,...,θn).
  • 上标 (i) 表示第 i 个数据,下标 α 表示第 α 维特征。

y 的两个取值对应两种不同的分类。这里只说明二分类问题。  

二、Logistic Function

  又名 Sigmoid Function. 函数定义及其导数:

g(z)g(z)=11+ez,=g(z)(1g(z)).

三、模型训练

Hypothesis Funcition (模型预测值):

y^=g(z)=g(αθαxα).  (x0=1)

  其值的意义是数据点 x 属于分类 y=1 的概率。

Cost Function:

J(θ)=1mi=1m[y(i)logg(z(i))+(1y(i))log(1g(z(i)))]+λ2α=1nθ2α.

最后一项是正则项,求和中不包含 α=0 对应的偏置项的参数。所以在下面的梯度中,偏置参数与其他参数的梯度有所不同。

Gradien:

μJ(θ)=1mi[y(i)g(z(i))g(z)+(1y(i))g(z(i))1g(z(i))]z(i)θμ+λ2θμα=1nθ2α=1mi[y(i)(1g(z(i)))(1y(i))g(z(i))]x(i)μ+λ22θμ=1mi(y(i)y^(i))x(i)μ+λθμ

update:

θμθμημJ(θ)

更新策略,具体有 BGD (batch gradient descent), SGD (stochastic gradient descent) .

### 逻辑回归模型的训练与评估流程 逻辑回归(Logistic Regression)是一种广泛应用于分类任务的线性模型,尤其适用于二分类问题。其核心思想是通过拟合一个 Sigmoid 函数将线性回归的输出映射到 [0, 1] 区间,从而表示样本属于某一类别的概率[^5]。在实际应用中,通常使用 scikit-learn 提供的 `LogisticRegression` 类来实现该模型,并结合 Iris 等标准数据集进行训练和性能评估。 模型构建的基本步骤包括:导入必要的库、加载并预处理数据、划分训练集与测试集、创建逻辑回归实例、执行模型训练、进行预测以及评估模型效果。其中,数据预处理阶段常使用 StandardScaler 对特征进行标准化,以提高模型收敛速度和预测精度。以下是一个典型的代码示例: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 只保留前两类用于二分类 X = X[y != 2] y = y[y != 2] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 标准化数据 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 创建并训练逻辑回归模型 model = LogisticRegression() model.fit(X_train_scaled, y_train) # 预测与评估 y_pred = model.predict(X_test_scaled) accuracy = accuracy_score(y_test, y_pred) print(f"模型准确率为:{accuracy:.2f}") ``` 上述代码展示了完整的建模流程,从数据准备到模型评估均涵盖在内。值得注意的是,在训练过程中,可以通过设置 `max_iter` 参数控制梯度下降的最大迭代次数,以避免因迭代不足或过长而导致模型无法收敛或计算资源浪费。为了找到最优参数值,可以绘制学习曲线观察不同迭代次数下模型在训练集、验证集和测试集上的表现变化,进而选择合适的配置[^4]。 ### 模型调参与优化策略 除了标准化输入数据外,逻辑回归模型还可以通过正则化方法(如 L1 和 L2 正则化)来防止过拟合。在 scikit-learn 中,`penalty` 参数支持指定 `'l1'` 或 `'l2'`,默认为 `'l2'`。同时,`C` 参数用于控制正则化的强度,较小的 `C` 值意味着更强的正则化效果。此外,求解器的选择(如 `liblinear`、`lbfgs`)也会影响模型的训练效率和稳定性。 在某些应用场景中,例如医疗诊断或电影票房预测,逻辑回归被用来分析多个影响因素对目标变量的影响程度。通过对预算、导演知名度、主演知名度等因素的建模,能够有效预测电影是否具有高票房潜力。类似地,在医学领域,逻辑回归可用于识别疾病的危险因素,并辅助临床决策支持系统做出判断[^3]。 ### 实际应用中的注意事项 尽管逻辑回归模型简单且易于解释,但在使用过程中仍需注意以下几点: - **类别不平衡问题**:当数据集中某一类样本数量远多于另一类时,模型可能会偏向多数类,导致少数类识别率较低。此时可考虑采用过采样、欠采样或加权损失函数等方法缓解此问题。 - **特征相关性**:如果输入特征之间存在高度共线性,可能会影响模型系数估计的稳定性。可通过主成分分析(PCA)等降维手段减少冗余信息。 - **非线性关系处理**:逻辑回归本质上是一个线性模型,对于非线性关系较强的特征组合,建议引入多项式特征或使用更复杂的非线性模型。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值