实现机器学习的分步指南 IV - 逻辑回归
易于实现的机器学习
引言
逻辑回归是统计学习中的一种经典方法,它计算条件概率 P(Y|X)
并使用较大的那个标签作为预测结果。具体来说,二项式逻辑回归模型是
其中 w
和 b
分别是权重和偏置。为了方便起见,展开权重向量和偏置向量,即
那么,二项式逻辑回归模型是
逻辑回归模型
逻辑回归模型包括参数估计、优化算法和分类。
参数估计
在 逐步指南:实现机器学习 III - 朴素贝叶斯 中,我们使用最大似然函数来估计贝叶斯模型中的参数。 类似地,我们使用最大似然函数来估计逻辑回归模型中的参数。 记
其中
g(x)
也被称为 **Sigmoid 函数**。 似然函数是
为了方便起见,我们取似然函数的对数,即
然后,问题就转化为计算似然函数的最大值。
优化算法
由于,**我们无法获得似然函数导数的解析解**。 为了获得似然函数的最大值,我们应用 **梯度上升法**,即
计算似然函数的导数
令导数等于零,我们可以得到
因此,我们可以通过上述方程获得优化的参数。 梯度上升法的代码如下所示
if method == "GA":
weights = np.random.normal(0, 1, [feature_dim, 1])
for i in range(iterations):
pred = self.sigmoid(np.dot(train_data, weights))
errors = train_label - pred
# update the weights
weights = weights + alpha * np.dot(train_data.T, errors)
self.weights = weights
return self
分类
在逻辑回归模型中,Sigmoid 函数被用来计算概率,表示为
当结果大于 0.5
时,样本属于类别 1,否则属于类别 0
。
def sigmoid(self, x, derivative=False):
output = 1/(1 + np.exp(-x))
if derivative:
output = output * (1 - output)
return output
结论与分析
为了获得逻辑回归模型的参数,我们也可以最小化损失函数。 最后,让我们将我们的逻辑回归与 Sklearn 的进行比较,检测性能如下所示
两者的检测性能相似。
本文相关的代码和数据集可以在 MachineLearning 中找到。
历史
- 2019 年 5 月 13 日:初始版本