在Keras中使用未标记的数据集

时间:2017-04-27 10:12:23

标签: tensorflow neural-network dataset deep-learning keras

通常,在使用Keras时,用于训练神经网络的数据集会被标记。

例如,如果我有100,000行患者,每行12个视野,那么最后一个字段将指示该患者是否患有糖尿病(0或1)。 然后在训练结束后,我可以插入一个新的记录,并预测这个人是否患有糖尿病或没有。

但是在未标记数据集的情况下,由于某些原因我无法标记数据,我如何训练神经网络让他知道这些是正常记录和任何与此网络不匹配的新记录会被恶意还是不被接受?

2 个答案:

答案 0 :(得分:1)

这称为一类学习,通常使用自动编码器完成。您在训练数据上训练自动编码器以重建数据本身。在这种情况下,标签是输入本身。这会给你一个重建错误。 https://en.wikipedia.org/wiki/Autoencoder

现在,您可以根据重建错误定义数据良性与否的阈值。希望重建好数据比重建坏数据更好。

编辑以回答关于有监督和无监督学习之间绩效差异的问题。

这是不能肯定的,因为我没有尝试过,我不知道最终的准确性是什么。但是对于粗略估计,监督学习将对训练的数据执行得更好,因为向算法提供了更多信息。然而,如果实际数据与训练数据完全不同,则网络在实践中将表现不佳,而自动编码器倾向于更好地处理不同的数据。此外,根据经验,每个类应该有5000个示例来可靠地训练神经网络,因此标记可能需要一些时间。但是无论如何你都需要一些数据进行测试。

答案 1 :(得分:0)

听起来你需要适合两种不同的模型:

  1. 不良记录检测模型
  2. 用于预测患者糖尿病可能性的模型
  3. 对于这两种型号,您需要有标签。对于第一个模型,您的标签将指示记录是好还是坏(恶意),第二个是患者是否患有糖尿病。

    为了检测不良记录,您可能会发现简单的逻辑回归或SVM可以充分发挥作用。