逻辑回归详解
逻辑回归 (Logistic Regression) 是一种用于分类问题的统计方法,特别适用于二元分类问题,即预测一个样本属于两个类别中的哪一个。尽管名称中包含“回归”,但它实际上是一个分类模型。
1. 核心原理
逻辑回归的核心思想是通过一个 Sigmoid 函数 将线性模型的输出映射到 0 到 1 之间的概率值,从而判断样本属于某个类别的可能性。
1.1 线性模型
首先,逻辑回归建立一个线性模型:
z = w0 + w1 * x1 + w2 * x2 + ... + wn * xn
- z 是线性组合的结果
- w0 是截距(常数项)
- w1, w2, ... wn 是特征的权重
- x1, x2, ... xn 是特征值
1.2 Sigmoid 函数
接下来,将线性模型的输出 z 传递给 Sigmoid 函数,得到预测概率:
P(y=1 | x) = 1 / (1 + exp(-z))
- P(y=1 | x) 表示给定特征 x,样本属于类别 1 的概率
- exp(-z) 是 e 的 -z 次方
Sigmoid 函数是一个 S 形曲线,将任意输入值压缩到 0 到 1 之间,方便解释为概率。
2. 损失函数
逻辑回归使用 对数似然损失函数 (Log-Likelihood Loss) 来评估模型的预测性能:
L(w) = -1/N * Σ[y_i * log(P(y_i=1 | x_i)) + (1-y_i) * log(1-P(y_i=1 | x_i))]
- N 是样本数量
- y_i 是第 i 个样本的真实标签,取值 0 或 1
- P(y_i=1 | x_i) 是模型对第 i 个样本属于类别 1 的预测概率
损失函数的目标是:
- 当模型预测正确时,损失值越小
- 当模型预测错误时,损失值越大
3. 模型训练
逻辑回归的训练过程就是找到一组最优的权重 w,使得损失函数 L(w) 最小。通常使用 梯度下降法 (Gradient Descent) 或其变种来优化权重。
梯度下降法不断更新权重 w,沿着损失函数下降的方向移动,直到找到一个局部最小值点。
4. 模型评估
训练完逻辑回归模型后,需要评估其性能。常用的评估指标包括:
- 准确率 (Accuracy): 正确预测的比例
- 精确率 (Precision): 正确预测为正类的样本占所有预测为正类样本的比例
- 召回率 (Recall): 正确预测为正类的样本占所有真实正类样本的比例
- F1 Score: 精确率和召回率的调和平均数
5. 优缺点
优点
- 简单易懂,易于实现
- 训练速度快
- 对线性可分的数据效果较好
- 可以给出预测概率,而不是硬性分类结果
缺点
- 对非线性数据效果较差
- 易受离群点影响
- 需要对数据进行预处理,例如标准化
6. 应用场景
- 医疗领域:预测疾病风险
- 金融领域:客户信用评分、贷款违约预测
- 市场营销:客户流失预测、转化率预测
- 社会科学:选举投票行为预测
7. 代码示例
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
# 1. 数据准备
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7], [7, 8], [8, 9]])
y = np.array([0, 0, 0, 1, 1, 1, 1, 1])
# 2. 数据分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
# 3. 模型训练
model = LogisticRegression()
model.fit(X_train, y_train)
# 4. 模型预测
y_pred = model.predict(X_test)
# 5. 模型评估
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)
# 打印结果
print("模型准确率:", accuracy)
print("分类报告:\
", report)
总结
逻辑回归是一种简单但强大的分类模型,在许多实际应用中取得了成功。理解逻辑回归的原理及其应用场景,对于数据分析和模型构建非常重要。
网友评论