逻辑回归函数在sklearn上

我正在学习sklearn中的逻辑回归,并发现了这个链接: http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

我已经创建了一个实现,可以显示训练和测试的准确性得分。然而,我不太清楚这是如何实现的。我的问题是:什么是最大似然估计?这是如何计算的?错误度量是什么?使用的优化算法是什么?

我理论上了解上述所有内容,但是我不确定scikit-learn在哪里、何时以及如何计算这些,或者我是否需要在某个时候实现这些。我的准确率达到了83%,这是我的目标,但我对scikit-learn是如何实现这一点感到非常困惑。

有谁能指导我正确的方向吗?


回答:

我最近也开始学习逻辑回归,我仍然不理解许多推导步骤,但我认为我理解了使用哪些公式。

首先,让我们假设你使用的是scikit-learn的最新版本,并且使用的求解器是 solver='lbfgs'(我认为这是默认的)。

代码在这里: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py

什么是最大似然估计?这是如何计算的?

计算似然估计的函数是这个: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py#L57

有趣的一行是:

# Logistic loss is the negative of the log of the logistic function.out = -np.sum(sample_weight * log_logistic(yz)) + .5 * alpha * np.dot(w, w)

这是这个教程的公式7。该函数还计算似然的梯度,然后传递给最小化函数(见下文)。一个重要的事情是,截距是教程中公式的 w0。但这仅在 fit_intercept 为 True 时有效。

错误度量是什么?

对不起,我不确定。

使用的优化算法是什么?

查看代码中的以下几行: https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/logistic.py#L389

这是这个函数 http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.fmin_l_bfgs_b.html

一个非常重要的事情是,类别是+1或-1!(对于二元情况,文献中常见的是0和1,但这行不通)

还要注意,所有公式中都使用了numpy的广播规则。(这就是为什么你看不到迭代)

这是我尝试理解代码的努力。我慢慢地变得疯狂,直到拆解scikit-learn的代码(仅适用于二元情况)。这也作为纯Python实现的灵感

希望这对你有帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注