【发布时间】:2018-08-03 18:06:42
【问题描述】:
我正在尝试从头开始在 python 中实现其中一个 R 代码,它涉及逻辑回归。
据我了解逻辑回归,(同时使用梯度下降执行一对多)我认为如果有 F 个特征和 L 个标签,那么我们就有 M x F 个系数。基本上我们为每个 M 个标签有 F 个不同的向量,然后计算输入输入 X 的 sigmoid 函数,并且哪个向量给出最大值就是预测的类。
R中的逻辑回归函数:
try_lrm<-function(datadf, tol=1e-10, maxit=1e6){
try({ lrm(y~x, data=datadf, penalty=0, x=TRUE, y=TRUE, tol=tol, maxit=maxit) })
}
但是对于以下数据框的序数回归:
x y
24.03673 2
14.63598 2
26.85079 2
53.45076 1
36.8322 1
42.10773 1
39.68833 1
104.64827 0
114.97038 0
60.8128 0
59.67947 0
我得到以下系数:
y>=1 y>=2 x
131.440196 75.784904 -2.324528
当我试图从头开始实现所有内容时,我正在尝试使用梯度下降。
那么这应该如何解释呢?我想弄清楚 sigmoid 函数应该是什么样子,但我不确定为什么当我期望每个类都有一个 x 系数时,为什么只有一个 x 系数。那些拦截是什么。
是不是说sigmoid函数长这样:
(让我们将系数称为 k0,k1,k2,我得到 x,y>=1 和 y>=2)
对于 y = 0,
p = 1/(1+e^-(k0 * x))
对于 y = 1,
p = 1/(1+e^-(k0 * x + k1))
对于 y = 2,
p = 1/(1+e^-(k0 * x + k1 + k2))
并预测最大 p 类?
【问题讨论】:
标签: r logistic-regression ordinal