Matlab在多项式逻辑回归中的mnrfit函数是否有误?

看起来Matlab在多项式逻辑回归中给出的结果似乎是不正确的。

在其使用Fisher’s Iris数据集的示例文档中 [链接],他们给出了模型的系数,这些系数可以用于同一数据集本身以获得建模的概率。

load fisheririssp = categorical(species);[B,dev,stats] = mnrfit(meas,sp);PHAT=mnrval(B,meas);

然而,预期值的总和与总体总和不匹配,这是最大熵分类器的一个要求(参见 [此处] 的第35页幻灯片,或 [此处] 的第14个方程,或Agresti的《Categorical Data Analysis》第298页等)。

例如

>> sum(PHAT)>>   49.9828   49.8715   50.1456

这些值都应该等于50(总体值),其他聚合也应如此

如果使用以下参数

B=[36.9450   42.6378   12.2641    2.4653   14.4401    6.6809  -30.5885   -9.4294  -39.3232  -18.2862]

那么所有聚合的充分统计量都将匹配。

此外,Matlab使用似然度来解决这个问题似乎有些奇怪,这可能会产生错误,

警告:最大似然估计未收敛。迭代次数超限。您可能需要合并类别以增加观察计数

而根据最大似然估计的考虑,唯一要求是预期值匹配,并不需要进行似然度评估。

如果不是给出真实类别,而可以提供一个仅包含聚合信息的选项,这将是一个不错的功能。


回答:

在Mathworks网站上提交了一个技术错误审查。他们的回复如下:

您好 [—-],

我写信是关于您关于’mnrfit’的技术支持案例#01820504的参考。

非常感谢您的耐心和报告此问题。这似乎是意外的行为。这似乎与我们记录中已存在的一个问题有关,即在某些情况下,“mnrfit”不能给出正确的最大似然估计。由于“mnrfit”函数未能找到系数的最大似然估计,我们计算了实际的MLEs。当我们使用这些估计时,我们在这个案例中得到了所有50的期望结果。

问题在于,对于我们示例中的这个特定数据集,类别可以完美分离。这意味着,为了获得精确的零或一的概率,逻辑函数需要具有无限的系数。“mnrfit”函数执行了一个迭代过程,系数变得越来越大,但它在某个点停止,结果出现了您发现的问题。我们当然同意“mnrfit”可以做得更好。我们的开发团队正在处理这个问题。

在现阶段,我无法建议除编写自定义实现之外的解决方法,就像我和我的同事尝试过的那样。现在,我将关闭此请求,因为我已经将其转发到我们的记录中。然而,如果您有关于此案例的任何其他问题,请随时与我联系。

此致,
[—-]
MathWorks技术支持部门

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注