首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >文本分类问题

文本分类问题
EN

Stack Overflow用户
提问于 2019-05-09 21:01:08
回答 1查看 71关注 0票数 0

我是ML的新手,我试着把文本分成两类。我的数据集是使用Tokenizer从医学文本中创建的,它是不平衡的,有572条记录用于训练,471条记录用于测试。

对于我来说,很难建立具有不同预测输出的模型,几乎所有的值都是相同的。我已经厌倦了使用this等示例中的模型,并亲自调整参数,但输出总是毫无意义

下面是标记化并准备好的data

下面是脚本:Gist

我使用的示例模型

代码语言:javascript
运行
复制
    sequential_model = keras.Sequential([
        layers.Dense(15, activation='tanh',input_dim=vocab_size),
        layers.BatchNormalization(),
        layers.Dense(8, activation='relu'),
        layers.BatchNormalization(),
        layers.Dense(1, activation='sigmoid')
    ])

    sequential_model.summary()
    sequential_model.compile(optimizer='adam',
                             loss='binary_crossentropy',
                             metrics=['acc'])

    train_history = sequential_model.fit(train_data,
                                         train_labels,
                                         epochs=15,
                                         batch_size=16,
                                         validation_data=(test_data, test_labels),
                                         class_weight={1: 1, 0: 0.2},
                                         verbose=1)

不幸的是,我不能共享数据集。此外,我还尝试将keras.utils.to_categorical与类标签一起使用,但没有任何帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-12 05:20:57

你的损失曲线是有意义的,因为我们看到的是网络对训练集的过度拟合,而我们看到的是通常的碗形验证曲线。

为了使您的网络性能更好,您可以始终加深它(更多层),扩大它(每个隐藏层更多单位)和/或添加更多非线性激活函数,以便您的层能够映射到更大范围的值。

此外,我认为你最初获得如此多重复值的原因是由于你的网络规模。显然,每个数据点大约有20,000个特征(相当大的特征空间);网络的大小太小,因此可以映射到的输出值的可能空间也较小。我用一些较大的隐藏单元层(并增加了层的数量)进行了一些测试,并能够看到预测值确实有所不同: 0.519,0.41,0.37...

你的网络性能不同也是可以理解的,因为你拥有的功能数量大约是你训练规模的50倍(通常你想要更小的比例)。请记住,对于如此小的训练和测试数据集,训练太多的时期(例如超过10个)来看到损失的改善并不是很好的实践,因为您可能会严重过度拟合,并且可能是您的网络需要更宽/更深的迹象。

所有这些因素,如层大小,隐藏单元大小,甚至时期数,都可以被视为超参数。换句话说,将训练数据的某个百分比作为验证拆分的一部分,逐一检查每一类因素并进行优化,以获得最高的验证准确性。公平地说,你的训练集不是太高,但我认为你应该把大约10-20%的训练作为一种验证集来调整这些超参数,因为你每个数据点都有这么多的特征。在这个过程的最后,你应该能够确定你真正的测试准确性。这就是我将如何优化以获得此网络的最佳性能。希望这能有所帮助。

More about training, test, val split

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56060044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档