是否可以使用比训练模型时使用的特征数量更少的特征进行预测?

数据挖掘 机器学习 scikit-学习
2022-02-25 16:52:58

我正在使用 sklearn.svm.SVC 制作一个可以预测机器性能的模型(ErrorID)。

对于模型的训练,我使用了 6 个特征,即 、、 、EmployeeIDJobIDMachineID作为标签传入SpeedRunningDateandTimeMetersErrorID

现在对于预测,我只是RunningDateandTime因为我想预测未来的表现。但是模型不会接受它,因为训练时的特征数和预测时的特征数不一样。

有什么方法可以强制模型在接受 5 个特征的训练时只使用 1 个特征进行预测?

3个回答

机器学习模型不过是一个方程(假设),源自用于模型训练的特征(数据集)。使用训练数据集,我们通过每次迭代(或每批)改变系数(也称为权重)值来优化这个方程。

例如:

基本假设其中 x1, x2, x3 是特征,theta1, theta2, theta3 是权重……我们必须在每次迭代中进行优化。

为了得到这个函数的结果,我们需要 x1、x2 和 x3 的一些值。如果您只输入其中任何一个值,此功能将不起作用。

在您的情况下,我们能做的最好的事情是为其余缺失的特征提供一些平均值。但那时不会对模型有太多期望。

如果您使用特征 x1、x2、x3 进行训练,但只有一个特征用于预测(例如 x1),您可以对 x2、x3做出假设。通常,您需要在进行预测时指定用于训练的所有特征。

所以你可以说:好吧,如果 x2, x3看起来像这样(做一个假设!),给定 x1,预测是 y。

如果这对您的情况有意义,那么您必须根据您的数据回答自己。但是,如果 x2、x3 有一个有意义的“平均值”,或者如果您可以以某种方式对这些特征进行分组,您可能能够很好地了解未来会发生什么。

注意:仅使用一个特征(例如时间日期)来训练模型可能不会产生很好的预测。但是,最终您需要尝试。

我见过的唯一处理缺失值的情况是 XGBoost 的情况,但话又说回来,如果您的样本在某些特征上存在缺失值,并且在现实世界中,您会期望完整的输入,我建议您省略那些样本。即使您找到了可行的方法,通常依赖一个特征而忽略其他特征进行预测也表明您的模型不好或问题表述不好。