具有不同尺寸特征的模型

数据挖掘 分类 回归 预测建模 模型选择 特征
2022-03-12 14:11:00

我想训练一个具有不同大小的特征/输入的模型(分类或回归,没关系),但我不知道该怎么做。

例如,对于每个数据点,特征 1 和 2 只是实数,特征 3 是长度为 100 的向量,所以如果我有n数据点,然后我有一个n×1特征 1 的向量,另一个n×1特征 2 的向量和n×100特征 3 的矩阵。

第一个问题是我应该使用或尝试什么样的模型?梯度提升、随机森林还是神经网络?

第二个问题是如何将不同大小的特征馈送到模型中?只需将它们连接起来形成一个102×1每个数据点的向量?

谢谢。

2个回答

您可以尝试几个选项,所有选项都有您需要考虑的不同先决条件。

1. Direct Ensemble(n个数高,应该是首选)

如果n >> 103您可以直接使用标准 ML 程序,不同的模型和参数与 CV 并找到最佳拟合。由于大多数情况下并非如此,因此您可能希望使用集成树模型,因为当观察数量与特征数量相比,它们的表现优于其他学习器。

2. 聚类

如果这些100特征来源于一个共同因素,您可以将这些特征聚类为最优K(参见剪影分数),并将这些聚类标签添加为模型的第三个特征。最后你的模型变成了n观察、3特征。

3. 适合两次

在分类的情况下,您可以首先拟合100特征并使用它们的概率分数(predict_probain sklearn)作为模型的第三个特征。

4. PCA + 拟合

您可以使用PCA功能100和获取p功能。之后,p+2您可以使用功能构建模型。此处再次适用公因数条件。(在直接方法中,您也可以应用PCA到 102 个功能。)

最后评论:

上述所有方法都应该尝试并选择最好的方法。但是,如果您有n >> 102观察结果,则应直接使用强学习器(xgboostlgbmnn's 等)拟合模型,而无需聚类/两次拟合,因为这些方法除了最终的学习器错误外,还会根据其性质产生错误。

当数据以这种方式呈现时,通常是因为向量中的所有 100 个值都应该被读取为一个。例如,这些可以是一组 100 个测量值,例如系统不同位置的温度。向量中的数据可能是相关的,并且子特征的顺序可能是有价值的信息(例如,在我之前的示例中,如果它们表示沿管道的一系列位置的温度测量值)。

如果数据完全不相关,或者子特征没有任何共同点,您可以将每个子特征扩展为普通特征。在这个过程中,你可能会得到一个包含许多特征的最终数据集,这最终需要降维。

如果数据被认为是“简单”相关的,一个好的选择是将向量的维度从 100 减少到一个低得多的值,然后像以前一样扩展它。最直接的方法是 PCA。首先,请确保仅在每个特定的多子功能特征上执行它。

如果数据是相关的并且特征的顺序很重要(即(1,1,0,0,0,0)更接近(0,1,1,0,0,0)(0,0,1,0,0,1),例如,您将需要更复杂的方法。您可以基于自定义距离函数(例如Wasserstein 度量/推土机距离)执行基于密度的聚类。因此,100 维特征将被简化为代表该集群数据集中一个类的单个特征。