机器学习:如何在误差计算中包含灵敏度或特异性?

时间:2013-10-24 14:34:50

标签: matlab machine-learning neural-network

我有一个用于分类的神经网络工作模型。目前,我已应用交叉熵计算测试结果(模型输出)和条件结果(真输出)之间的误差。该模型用于二进制分类,但将扩展为处理多个类。到目前为止,误差是使用MATLAB中的交叉熵计算的:

err = sum( y.*log(h(x)) + (1-y).*log(1-h(x)) )

我希望模型以这样的方式执行,即它可以分类或检测更多误报然后是假否定。我知道有所谓的混淆矩阵我可以指定所有内容,但我不知道这如何与错误计算相对应。我们非常欢迎任何建议:)

干杯!

1 个答案:

答案 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时则更不重要。请务必相应地修改衍生产品。