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代码(仅适用于二进制案例).这也是灵感
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
4279 次 |
| 最近记录: |