sklearn上的Logistic回归函数

use*_*834 4 python numpy machine-learning scipy scikit-learn

我正在从sklearn学习Logistic回归并且遇到了这个:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression

我创建了一个实现,向我展示了培训和测试的准确度分数.然而,目前尚不清楚这是如何实现的.我的问题是:最大似然估计是多少?这是如何计算的?什么是错误衡量标准?使用的优化算法是什么?

我在理论上知道以上所有内容,但是我不知道scikit.learn在何时何地计算它,或者它是否需要在某些时候实现它.我的准确率为83%,这正是我的目标,但我对scikit学习如何实现这一点非常困惑.

有人能指出我正确的方向吗?

Ale*_*Ale 10

我最近开始自己学习LR,我仍然没有得到很多推导步骤,但我想我明白了哪些公式正在被使用.

首先,我们假设您使用的是最新版本的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)
Run Code Online (Sandbox Code Playgroud)

这是本教程的公式7.该函数还计算似然的梯度,然后将其传递给最小化函数(见下文).一个重要的是拦截是w0教程中的公式.但那只有效才有效fit_intercept.

什么是错误衡量标准?

对不起,我不确定.

使用的优化算法是什么?

请参阅代码中的以下行: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广播规则.(这就是你没有看到迭代的原因)

这是我尝试理解代码.我慢慢地发疯,直到撕开appart scikit-learn代码(仅适用于二进制案例).这也是灵感

希望能帮助到你.