为逻辑回归添加上限

问题描述 投票:0回答:1

我正在运行对数回归来建模延伸曲线。典型的到达曲线如下所示:

因此,使用对数回归似乎是显而易见的选择。覆盖率曲线基于历史活动,但我对总用户数有一些额外的了解,因此我确信覆盖率永远不会超过某个数字。

我很难将建模的对数曲线与已知的硬顶混合起来。理想情况下,我认为我应该添加一些修饰符,当输出接近已知上限时增加递减效应,以帮助保留较低值(大多数活动发生的地方)的曲线,同时添加已知上限以防止模型返回值其中覆盖率为所有用户的 125%。

目前我正在使用 scipy 优化,我在已知的最大值处添加了大量的合成数据,以尝试强制该模型尊重最大值,但我认为我在这里走错了路:

我觉得我需要另一个函数来获取这个函数的输出,并在值接近已知最大值时添加强度增加的惩罚,但我似乎无法让它工作,我的曲线一直为负值或混合结果真的像硬顶一样刺耳,关于如何解决这个问题有什么想法吗?

python logistic-regression
1个回答
2
投票

根据 @lastchance 拟合 tanh 的评论为此产生了必要的曲线:

作为参考,这里与 scipy Optimize 一起使用的函数是:

#tanh function
def tanh_func(x, A, B):
    return A * np.tanh(B * x)

#log-log function
def comp_loglog_func(x, A, B):
    return A * (1 - np.exp(-B * x))
© www.soinside.com 2019 - 2024. All rights reserved.