我正在用Keras制作深度学习ML模型。
我的任务是根据以下内容对某人的评分:1-10
中3
个不同类别的得分(例如,对于给定的人,输出必须是3
的得分1-10
个得分)人的不同属性,例如身高,体重,运动等。对于训练集,我得到了一些具有其属性和标签的人作为3
分数。
在我的模型中,我对输出使用一种热矢量编码。也就是说,我制作了3x10=30
个输出神经元,其中每个神经元分别表示一个特定的类别和得分(我使用categorical_crossentropy
损失函数,因此我在每个神经元中得到1或0作为输出,然后将其转换回来查看预测分数。
我的问题是我无法理解在这种情况下应使用哪种精度指标。我需要与实际成绩相同的趋势。有关该指标的任何建议(也可以是一个自定义指标)。
输出示例:
Category A score: 5
Category B score: 3
Category C score: 7
Output Vector: 00001 00000 00100 00000 00000 01000
(向量上方的空格只是为了便于阅读)
答案 0 :(得分:0)
您可以使用三个类别损失函数的加权和。假设对于类别i
,i \in {1, 2, 3}
,损失为l_i
,则度量可以为\alpha_1 * l_1 + \alpha_2 * l_2 + \alpha_3 * l_3
,其中\alpha_i
是类别{{1}的权重},您可以根据类别的重要性进行调整。对于损失,您有很多选择。这是因为,如keras文档here中所述,“您可以将任何损失函数用作度量函数。”。
但是,有一个问题,当您拥有一个评分系统(例如您的问题的评分从1到9)时,如果标签为9并且模型预测为8,则比模型预测为1要好但是,看起来这不是您对系统建模的方式所掌握的。因此,您可以将i
损失函数用于概率(softmax输出),也可以使用categorical_crossentropy
损失函数。