拆分训练数据以训练最佳数量的n个模型

时间:2017-02-28 13:48:17

标签: optimization machine-learning cluster-analysis

假设我们有一个巨大的数据库,为我们提供训练数据D和一个专用的较小的测试数据T,用于解决机器学习问题。 数据涵盖了现实世界问题的许多方面,因此其结构非常多样化。 当我们现在用D训练一个没有更接近定义的机器学习算法(神经网络,SVM,随机森林......)并最终针对T测试创建的模型时,我们获得一定的性能测量P(混淆矩阵,mse,... )。

问题:如果我可以通过将问题分成较小的子问题来实现更好的性能,例如:通过将D聚类到几个不同的训练集D1,D2,D3 ......中,我怎样才能找到最佳聚类? (簇数,质心数......)

我以蛮力的方式考虑使用具有随机数量的簇C的kNN聚类,这导致训练数据D1,D2,... Dc。 我现在将训练C个不同的模型,最后根据训练集T1,T2,...,Tc测试它们,其中使用相同的kNN聚类将T分成C测试集T1,..,Tc。

给我最佳整体表现平均值(P1,P2,...,Pc)的组合将是我想要选择的组合。

我只是想知道你是否知道一种比蛮力更强大的方式呢?

非常感谢提前

1 个答案:

答案 0 :(得分:0)

群集很难。

比分类难得多,因为你没有标签可以告诉你你是做得还是不好。它不能做魔法,但它需要你仔细选择参数并评估结果。

你不能只是将你的数据转储成k-means,并期望出现任何有用的东西。您首先需要真正仔细地清理和预处理您的数据,然后您可能只是发现它实际上只是一个单个大块......

此外,如果群集运行良好并且您在每个群集上独立训练分类器,那么每个分类器都会错过关键数据。结果可能会表现得非常糟糕!

如果您只想训练部分数据,请使用随机森林。

但听起来你对分层分类方法更感兴趣。如果你有好的层次结构信息,那可能会有用。你首先要在类别上训练一个分类器,然后在类别中训练另一个分类器才能得到最终的类。