如何确定 Sigmoid 函数中的阈值

数据挖掘 机器学习 分类 逻辑回归
2021-10-11 20:42:55

语境:

我从这里拿起数据集并尝试对其运行逻辑回归。由于我不太了解 MATLAB,因此我使用“NUMBERS”软件将“Strings”转换为“Numbers”。

我想要达到的目标:

当我尝试预测现有数据点的值时运行 LR 算法后,我得到的值介于 0-1 之间(应该是),但由于我的工作是预测它是 0(是)还是 1 (否),这意味着我需要在我的预测中找到一个截止线(阈值)(这可能通过将实际值与预测值进行比较来完成)。

问题

如何计算预测结果的阈值,如果预测值 > 阈值,则假设结果为 1,否则为 0?

预测值可以在这里找到。 我假设预测值是正确的,因为成本曲线显示出渐近性质。我已经把我的工作推到这里,你可能想交叉验证并提供更多的关键点。

1个回答

根据 Andrew Ng 的课程,如果您使用 sigmoid 激活,输出代表结果 0 或结果 1 的概率。

所以决策边界是 0.5

如果 prediction > 0.5 ,则预测为 1

如果 prediction <= 0.5 ,则预测为 0

这是 Andrew Ng幻灯片的截图:

在此处输入图像描述

我已经浏览了您的代码和结果。实施似乎有问题,因为您的预测都没有给出大于 0.5 的值。

我无法确定问题所在。您需要进行一些调试。

矛盾的是,您的损失正在减少。我怀疑这可能是因为您的数据集不平衡,即您有 221 个 0 和大约 30 个 1。这也可能是其他问题的原因。

考虑wikipedia示例,其中值正确匹配。 在此处输入图像描述

如果您设法最终找到错误或解决方案,请在此处发布,以便我们大家学习。

希望这可以帮助!