python – Keras:如何计算多标签分类的准确度?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Keras:如何计算多标签分类的准确度?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1648字,纯文字阅读大概需要3分钟。
内容图文
我正在做有毒评论文本分类Kaggle挑战.有6个类:[‘威胁’,’严重毒性’,’淫秽’,’侮辱’,’身份_用’,’有毒’].注释可以是这些类的多个,因此它是一个多标签分类问题.
我用Keras建立了一个基本的神经网络如下:
model = Sequential()
model.add(Embedding(10000, 128, input_length=250))
model.add(Flatten())
model.add(Dense(100, activation='relu'))
model.add(Dense(len(classes), activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
我运行这一行:
model.fit(X_train, train_y, validation_split=0.5, epochs=3)
并在3个时期后获得99.11%的准确率.
但是,99.11%的准确率比最好的Kaggle提交要好一点.这让我觉得我(或许两者)a)过度拟合或b)滥用Keras的准确性.
1)当我使用50%的数据作为验证分割并且只有3个时期时,似乎有点难以过度拟合.
2)这里的准确度只是模型得到每个类的正确时间的百分比吗?
所以如果我输出[0,0,0,0,0,1]并且正确的输出是[0,0,0,0,0,0],我的准确度将是5/6?
经过一番思考之后,我认为这里的准确度指标只是看着我的模型以最高的置信度和比较真实性来预测的类.
因此,如果我的模型输出[0,0,0.9,0,0,0],它会将索引2(‘淫秽’)的类与真值进行比较.你认为这是发生了什么吗?
谢谢你尽你所能的帮助!
解决方法:
对于多标签分类,我认为使用sigmoid作为激活并使用binary_crossentropy作为丢失是正确的.
如果输出是稀疏的多标签,意味着一些正标签而大多数是负标签,则Keras准确度度量将被正确预测的负标签覆盖.如果我没记错的话,Keras不会选择概率最高的标签.相反,对于二进制分类,阈值为50%.所以预测将是[0,0,0,0,0,1].如果实际标签是[0,0,0,0,0,0],则精度为5/6.您可以通过创建始终预测负标签并查看准确性的模型来测试此假设.
如果确实如此,您可以尝试使用其他指标,例如top_k_categorical_accuracy.
我能想到的另一个遥远的可能性是你的训练数据.标签是否以某种方式“泄露”到x?只是一个疯狂的猜测.
内容总结
以上是互联网集市为您收集整理的python – Keras:如何计算多标签分类的准确度?全部内容,希望文章能够帮你解决python – Keras:如何计算多标签分类的准确度?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。