我有一个用于分类的神经网络工作模型。目前,我已应用交叉熵计算测试结果(模型输出)和条件结果(真输出)之间的误差。该模型用于二进制分类,但将扩展为处理多个类。到目前为止,误差是使用MATLAB中的交叉熵计算的:
err = sum( y.*log(h(x)) + (1-y).*log(1-h(x)) )
我希望模型以这样的方式执行,即它可以分类或检测更多误报然后是假否定。我知道有所谓的混淆矩阵我可以指定所有内容,但我不知道这如何与错误计算相对应。我们非常欢迎任何建议:)
干杯!
答案 0 :(得分:3)
您可以通过引入标量类权重来衡量积极等级高于或低于负等级。由于
y .* log(h(x))
表示阳性训练样本的损失和
(1 - y) .* log(1 - h(x))
是负面训练样本的损失,
err = -sum(w .* y .* log(h(x)) + (1 - y) .* log(1 - h(x)))
导致正面训练样本在w>1
时比负面训练样本更重要,而在w<1
时则更不重要。请务必相应地修改衍生产品。