【发布时间】:2020-01-05 11:05:08
【问题描述】:
首先,我很困惑为什么我们使用损失来更新 模型,但使用指标来选择我们需要的模型。
也许不是所有的代码,但我见过的大部分代码都是这样,他们使用 EarlyStopping 监控验证数据上的指标以查找 最佳时期(损失和指标不同)。
既然选择了使用损失来更新模型,为什么不使用 选择模型的损失?毕竟,损失和指标是 不完全相同。它给我的印象是你在做某事 为了这个目的,然后你用另一个指标来评估它, 这让我觉得很奇怪。把回归问题当作一个 例如,当有人使用“mse”作为损失时,他们为什么定义
metrics=['mae']并对此进行监控以尽早停止或减少学习 率,我只是无法理解,我想知道有什么优势 这样做?其次,当您的训练数据是不平衡数据并且问题是 一个分类问题,一些教程会告诉你使用 F1 或 AUC 作为您的指标,他们说这会改善问题 由不平衡数据引起的。我不知道为什么这些指标可以提高 数据不平衡导致的问题。
第三,当有人发送多个指标到 函数
compile中的参数metrics。我不明白 为什么是多个,为什么不是一个。定义多个有什么好处 指标超过一个?我似乎有太多的问题,他们一直困扰着我 很久了。
感谢您的友好回答。
上面的内容是我之前编辑的。有些人认为我的问题过于宽泛,所以我想重新组织我的语言。
现在假设有一个二分类问题,数据不平衡。正负类的比例为 500:1.
我选择DNN 作为我的分类模型。我选择了cross entropy 作为我的loss。
现在的问题是我应该选择cross entropy 作为我的metric,还是应该选择别的,为什么?
我想说说我从别人的回答中得到的信息,就是当问题是回归问题的时候,一般的metric和loss是可微的,所以其实选择同一个metrice和loss,或者不同的,完全取决于你自己对问题的理解。但是如果问题是分类,我们想要的metric是不可微的,所以我们会选择不同的loss和metric,比如F1和AUC,都是不可微的。为什么不直接选择cross entropy作为度量呢?
【问题讨论】:
-
你的问题太宽泛了,所有这些做法都取决于所学的问题,没有一般性的建议。
-
不好意思问了一个没有具体场景的问题,好像有点难以回答。但是因为看到某段代码后没有看到这个问题,而是看到了一些不同的问题和一些代码,我突然发现这个问题我看不懂。一般来说,人们使用不同的指标而不是损失并监控它以提前停止以防止过度拟合。仅这一点对我来说一直有点难以理解。
-
是的,我想告诉您的是,人们使用不同的损失/指标,因为问题不同。例如,对于对象检测,您使用自定义损失和指标,而对于图像分类,您使用交叉熵和准确性。还要考虑到有些人会犯错误,比如监控指标而不是 EarlyStopping 的损失
-
你的意思是正确的做法是检测损失而不是指标?
标签: python machine-learning keras imbalanced-data