我正在尝试从头开始在python中实现R代码之一,它涉及逻辑回归。
据我了解的逻辑回归(使用梯度下降执行一个vs全部)时,我认为如果有F个特征和L个标记,则我们有M x F个系数。基本上,对于M个标签中的每个标签,我们有F个不同的向量,然后为传入的输入X计算S形函数,无论哪个Vector给出的最大值都是预测的类。
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
当我尝试从头开始实现所有功能时,我正在尝试使用渐变下降。
那么应该如何解释呢?我想弄清楚S型函数的外观,但是我不确定为什么每个类别的x系数都只有一个系数。那些拦截器是什么?
这是否意味着S型函数看起来像这样:
(让我们将系数x0,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类?
答案 0 :(得分:1)
这似乎主要是一个统计问题-R代码没有任何明显错误。如所报告的那样,x的系数应该只有一个。有关R中序数逻辑回归的示例,请参见https://stats.idre.ucla.edu/r/dae/ordinal-logistic-regression/。它使用的软件包与您尝试使用的软件包不同,但是它遍历了统计信息以及R代码。