实现机器学习的循序渐进指南IV——逻辑回归

目录

介绍

逻辑回归模型

参数估计

优化算法

分类

结论与分析


介绍

逻辑回归是统计学习中的经典方法,它计算条件概率P(Y|X)并使用较大的标签作为预测。具体而言,二项逻辑回归模型是:

实现机器学习的循序渐进指南IV——逻辑回归

实现机器学习的循序渐进指南IV——逻辑回归

其中w和b是权重和偏见。为方便起见,展开权重向量和偏见向量,即

实现机器学习的循序渐进指南IV——逻辑回归

然后,二项逻辑回归模型是:

实现机器学习的循序渐进指南IV——逻辑回归

实现机器学习的循序渐进指南IV——逻辑回归

逻辑回归模型

逻辑回归模型由参数估计,优化算法和分类组成。

参数估计

实现机器学习的循序渐进指南III——朴素贝叶斯中,我们使用最大似然函数来估计贝叶斯模型中的参数。同样,我们使用最大似然函数来估计逻辑回归模型中的参数。如下

实现机器学习的循序渐进指南IV——逻辑回归

实现机器学习的循序渐进指南IV——逻辑回归

其中:

实现机器学习的循序渐进指南IV——逻辑回归

g(x)也被称为sigmoid函数。似然函数是:

实现机器学习的循序渐进指南IV——逻辑回归

为方便起见,我们采用了似然函数的对数,即:

实现机器学习的循序渐进指南IV——逻辑回归

然后,问题转化为计算似然函数的最大值。

优化算法

因为,我们无法得到似然函数导数的解析解。为了获得似然函数的最大值,我们应用渐变上升方法,即:

实现机器学习的循序渐进指南IV——逻辑回归

计算似然函数的导数:

实现机器学习的循序渐进指南IV——逻辑回归

让导数等于零,我们可以得到:

实现机器学习的循序渐进指南IV——逻辑回归

因此,我们可以通过上面的等式得到优化的参数。梯度上升方法的代码如下所示:

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函数计算概率,表示为:

实现机器学习的循序渐进指南IV——逻辑回归

当结果大于时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进行比较,检测性能如下所示:

实现机器学习的循序渐进指南IV——逻辑回归

两者的检测性能相似。

可以在MachineLearning中找到本文中的相关代码和数据集。

有兴趣的小伙伴可以查看上一篇或者下一篇

 

原文地址:https://www.codeproject.com/Articles/4061324/Step-by-Step-Guide-to-Implement-Machine-Learning-4

上一篇:Padding Oracle Attack--代码实现及深入理解


下一篇:php AES加密解密的例子