一、逻辑回归的概念
逻辑回归(Logistic Regression)是一种用于解决二分类问题的统计学习方法,其核心思想是通过Sigmoid函数将线性回归的输出映射到概率空间(0,1),从而预测样本属于正类的概率。尽管名为“回归”,但其本质是分类模型,通过设定概率阈值(如0.5)实现二分类决策。逻辑回归广泛应用于金融风控(如贷款违约预测)、医疗诊断(如疾病预测)、广告点击率(CTR)预估等领域,因其模型简单、解释性强且计算效率高。
二、逻辑回归的原理
- 概率映射:
- 输入特征通过线性组合得到 z=wTx+b,其中 w 为权重向量,b 为偏置项。
- 通过Sigmoid函数 σ(z)=1+e−z1 将 z 映射为概率 P(Y=1∣X),范围在 (0,1)。
- 决策边界:
- 当 z=0 时,P(Y=1∣X)=0.5,形成分类边界。
- 特征与对数几率(Log Odds)呈线性关系,权重 w 反映特征对分类的影响强度。
- 损失函数与优化:
- 交叉熵损失:通过最大化似然函数推导,目标是最小化负对数似然 L(w,b)=−∑[yilog(σ(zi))+(1−yi)log(1−σ(zi))]。
- 梯度上升法:通过迭代更新权重 w 和偏置 b,沿梯度方向逼近最优解。
三、代码实战:梯度上升法拟合逻辑回归模型
以下为基于Python的代码实现,使用梯度上升法找到最佳回归系数:
import numpy as np
import matplotlib.pyplot as plt
# 加载数据集(假设test.txt包含100个样本,每行格式为x1,x2,y)
def load_data(file_path):
data = []
labels = []
with open(file_path, 'r') as f:
for line in f:
x1, x2, y = map(float, line.strip().split(','))
data.append([1, x1, x2]) # 添加偏置项1
labels.append(y)
return np.array(data), np.array(labels)
# Sigmoid函数
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# 梯度上升法
def gradient_ascent(data, labels, alpha=0.001, max_iter=500):
m, n = data.shape
weights = np.ones(n) # 初始化权重
for _ in range(max_iter):
h = sigmoid(np.dot(data, weights)) # 预测概率
error = labels - h # 计算误差
weights += alpha * np.dot(data.T, error) # 更新权重
return weights
# 可视化决策边界
def plot_decision_boundary(weights, data, labels):
x1_min, x1_max = data[:, 1].min() - 1, data[:, 1].max() + 1
x2_min, x2_max = data[:, 2].min() - 1, data[:, 2].max() + 1
xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max, 100),
np.linspace(x2_min, x2_max, 100))
z = sigmoid(np.dot(np.c_[np.ones((xx1.ravel().shape[0], 1)), xx1.ravel(), xx2.ravel()], weights))
z = z.reshape(xx1.shape)
plt.contourf(xx1, xx2, z, alpha=0.4)
plt.scatter(data[:, 1], data[:, 2], c=labels, edgecolors='k')
plt.xlabel('x1')
plt.ylabel('x2')
plt.title('Logistic Regression Decision Boundary')
plt.show()
# 主程序
if __name__ == '__main__':
data, labels = load_data('test.txt')
weights = gradient_ascent(data, labels)
print("Best weights:", weights)
plot_decision_boundary(weights, data, labels)
代码说明:
- 数据加载:从
test.txt
中读取数据,每行格式为x1,x2,y
,其中y
为标签(0或1)。 - 梯度上升法:通过迭代更新权重,最小化交叉熵损失。
- 可视化:绘制决策边界,展示模型对数据的分类效果。
四、总结
- 逻辑回归的优势:
- 模型简单,解释性强,适合特征与目标变量关系明确的场景。
- 计算效率高,适用于大规模数据集。
- 梯度上升法的局限性:
- 收敛速度较慢,需调整学习率 α 和迭代次数。
- 对特征尺度敏感,实际应用中需进行标准化处理。
- 改进方向:
- 引入正则化(如L1/L2)防止过拟合。
- 使用随机梯度上升法(SGD)加速收敛。
通过本次实战,可深入理解逻辑回归的原理及实现过程,为后续处理更复杂的分类问题奠定基础。