我正在使用 Weka 工作台来训练蛋白质折叠分类器。我将训练数据导入 Weka 并执行基于 PCA 的特征选择。这似乎工作得很好,但现在我无法在测试数据上评估我训练有素的分类器,因为测试数据包含所有原始属性。当然,如果我尝试在测试数据上运行特征选择,我会想出一组不同的特征。
在 Weka 中,将特征选择应用于训练集后,如何从测试集中提取相同的特征?
我正在使用 Weka 工作台来训练蛋白质折叠分类器。我将训练数据导入 Weka 并执行基于 PCA 的特征选择。这似乎工作得很好,但现在我无法在测试数据上评估我训练有素的分类器,因为测试数据包含所有原始属性。当然,如果我尝试在测试数据上运行特征选择,我会想出一组不同的特征。
在 Weka 中,将特征选择应用于训练集后,如何从测试集中提取相同的特征?
对于任何这样的建模事物,您将不得不使用新的训练集(即原始训练集减去其测试集)重新计算模型。
通常的方法是随机抽取一个子集进行测试。然后使用所有剩余的数据点进行训练。
当然会有一些随机变异性根据哪些被提取出来,所以你可以重复这个过程来获得一些统计意义。
您的最终模型不会针对您的所有数据进行训练。您要么必须忍受这一点(我通常在自然语言处理领域看到),要么一旦确定了最佳参数,使用所有数据计算最终模型 - 了解您将无法对其进行测试.
似乎基于 PCA 的特征选择会生成伪特征,这些伪特征是原始特征的线性组合。在对训练集进行特征选择之后,我还没有找到从测试集中提取相同伪特征的方法。
但是,如果您不依赖于特定的特征选择方法(在本例中为 PCA),您也可以使用更直接的特征选择方法。例如,我最终使用了一种根据信息增益对特征进行排序的方法。使用这种方法,很容易识别出n提供最佳信息增益的顶级特征,并仅从训练和测试数据中提取这些特征。
正如评论中所建议的那样,可能会有其他用不同语言实现的替代方案(我愿意考虑,给出更详细的回复),但这是我在 Weka 环境中能找到的最好的选择。