我正在使用spark ml IDF 估计器/模型 (TF-IDF)将文本特征转换为向量,然后再将其传递给分类算法。这是过程:
数据集:
Full sample data (labeled) <br>
Training (labeled)<br>
Test (labeled)<br>
Unseen (non-labeled)<br>
这是我目前的工作流程:
Fit IDF model (idf-1) on full Sample data<br>
Apply(Transform) idf-1 on full sample data<br>
Split data set into Training and Test data<br>
Fit ML model on Training data<br>
Apply(Transform) model on Test data<br>
Apply(Transform) idf-1 on Unseen data<br>
Apply(Transform) model on Unseen data<br>
我在某处读到我应该在拟合 IDF 模型之前将我的数据拆分为训练和测试;仅在训练数据上拟合 IDF,然后使用相同的转换器来转换训练和测试数据。
为什么要这么做?IDF 在拟合过程中究竟学到了什么,它可以重用于转换任何新数据集。也许,想法是在使用 new 时|D|保持相同的值?DF|t, D|TF|t, D|
另外,我多久会根据新的看不见的数据拟合(而不是转换)IDF 模型?假设我的模型已准备好进行预测。我使用相同的 IDF 和分类器模型进行了 n 预测。之后我想重新训练模型,因为我现在有新数据。那我还应该重新培训 IDF 吗?