训练Word2Vec模型:用全量数据还是训练集以避免数据泄露?
Word2Vec训练数据选择与数据泄露问题解答
结论先行:必须只用拆分后的训练集训练Word2Vec,全量训练确实会导致数据泄露
为什么全量训练会有问题?
- Word2Vec是靠学习文本里的上下文关联生成词向量的,要是把测试集数据掺进去训练,模型就提前“接触”到了本该用来评估的未知数据,属于典型的作弊行为。
- 后续分类模型用这种带测试集信息的词向量训练,测出来的准确率、F1值都是虚高的,完全反映不了模型在真实陌生数据上的实际表现。
已经用全量训练了该怎么补救?
- 先把数据集严格拆分成训练集和测试集(建议用分层抽样,保证各类数据的分布和原数据集一致)
- 扔掉之前用全量训练的Word2Vec模型,用拆分后的纯训练集重新训练一个新的Word2Vec
- 用新的词向量分别把训练集和测试集的文本转换成特征向量,再训练你的分类模型
- 如果担心训练集数据量太小,Word2Vec学不出好的语义特征,可以试试k折交叉验证的思路:每一轮都用当前折的训练数据训Word2Vec,用验证数据测试,最后再用所有训练数据训最终的模型
额外提醒
- 所有和数据特征相关的操作(包括词向量训练、统计词频这类),都只能在训练集上做,测试集要全程“封存”,直到最后评估模型的时候再拿出来用
- 如果需要调参,得从训练集里再拆出一个验证集,绝对不能碰测试集
内容的提问来源于stack exchange,提问作者Mayur Pol
相关产品推荐
相关产品推荐

