为了详细说明逻辑回归的数学原理,让我们使用一个简单的二元分类问题。假设我们要根据一个人的考试成绩(特征x)预测他们是否能被大学录取(目标变量y,1表示被录取,0表示未被录取)。我们有以下训练数据:
考试成绩 | 是否录取 |
---|---|
30 | 0 |
50 | 0 |
70 | 1 |
90 | 1 |
逻辑回归模型的数学表示形式如下:
h(x) = sigmoid(w * x + b)
其中,h(x)表示给定输入x(考试成绩)时被录取的概率,sigmoid是Sigmoid函数,w是权重,b是偏置项。
步骤1:初始化权重和偏置项
我们可以用任意较小的随机数初始化权重和偏置项。例如:
w = 0.1
b = 0.1
步骤2:计算线性组合和概率值
对于每个训练样本,我们先计算线性组合,然后将其输入Sigmoid函数得到概率值。
样本1(考试成绩=30):
线性组合 = w * x + b = 0.1 * 30 + 0.1 = 3.1
概率值 = sigmoid(3.1) = 1 / (1 + e^(-3.1)) ≈ 0.957
样本2(考试成绩=50):
线性组合 = w * x + b = 0.1 * 50 + 0.1 = 5.1
概率值 = sigmoid(5.1) = 1 / (1 + e^(-5.1)) ≈ 0.994
类似地,我们可以计算其他样本的概率值。
步骤3:计算损失函数
损失函数(Loss Function)衡量模型预测与实际标签之间的误差。逻辑回归通常使用交叉熵损失(Cross-Entropy Loss):
L(y, h(x)) = -[y * log(h(x)) + (1 – y) * log(1 – h(x))]
我们需要计算所有训练样本的损失函数值并求和,得到总损失。
步骤4:优化权重和偏置项
我们的目标是找到一组最佳权重和偏置项,使得损失函数值最小。我们可以使用梯度下降法来实现这一目标。首先,计算权重和偏置项的梯度,即损失函数对权重和偏置项的偏导数:
∂L/∂w = (h(x) – y) * x
∂L/∂b = (h(x) – y)
然后,使用学习率(α)更新权重和偏置项:
w = w – α * ∂L/∂w
b = b – α * ∂L/∂b
学习率(α)是一个超参数,用于控制参数更新的幅度。较大的学习率意味着更新幅度较大,可能导致参数在最佳值附近震荡;较小的学习率意味着收敛速度较慢。
步骤5:迭代优化
我们需要多次迭代训练样本,更新权重和偏置项,以最小化损失函数。每次迭代都需要完成步骤2到步骤4。迭代次数可以事先设定,或者当损失函数值的变化小于某个阈值时停止。
步骤6:模型评估和预测
在训练完成后,我们可以使用验证数据或测试数据评估模型的性能,例如计算准确率、精确率、召回率等指标。同时,我们可以使用训练好的模型对新的数据进行预测。预测过程如下:
- 对新数据(考试成绩)进行线性组合:Linear Combination = w * x + b
- 将线性组合值输入Sigmoid函数以获得概率值:h(x) = sigmoid(Linear Combination)
- 使用0.5作为阈值进行分类:如果 h(x) > 0.5,则预测为录取(1);如果 h(x) ≤ 0.5,则预测为未录取(0)。
这就是逻辑回归的数学原理和每一步运算过程。请注意,这个例子非常简化,实际应用中可能需要更多的数据和特征来提高预测准确性。
Python代码实现见:MLearnPractice/logicRegr.py