我正在使用高维数据集,并且发现我的降维尝试损害了下游分类器的准确性,这表明我在特征压缩过程中有效地丢失了信息。
此外,当我按重要性对特征进行排序(通过随机森林进行估计),然后在不同数量的最重要特征上训练神经网络时,我发现在我用尽所有看似有用的特征之前,得到的分类器准确度就停止了增加. 我怀疑同时训练数千个特征是问题所在,我想通过逐步学习特征来简化问题,即:
我想探索训练神经网络一次添加一些特征:例如使用前 100 个特征进行训练,然后添加下 100 个特征,再次训练(使用前一轮的系数加上随机系数作为新部分输入层),冲洗,重复。
请注意,这种“增量”是跨特征的,而不是样本;它不影响关于样本的训练是否是增量的(“在线”)。
我收集这种事情之前已经尝试过并取得了一些成功,但我无法在我检查过的 Python ML 库中找到实现,也找不到成功算法细节的良好解释。
我有大约 70K 个示例,分为 6 个平衡的类。对于我的大部分工作,我只关心总共 4 个类之间的区别,所以我合并了两对初始类并最终得到总共 4 个(结果,我最终得到了不平衡的训练集,但是由于这两个较大的类是分类最重要的类,我现在很好)。我总共有大约 28K 个特征,但我发现当使用不超过前 4K 个特征(通过随机森林按重要性预先排序)时,我得到了最好的分类器性能。
- 我的方法看起来合理吗?
- 是否有公认的已发布详细算法(例如,将特征添加为原始输入层的扩展是否合理,或者是否首选其他方法)?
- 是否有任何 Python 库,特别是与 scikit-learn 兼容的库,实现了这样的算法?