是否可以在不影响准确性的情况下更改经过训练的 ML 模型的输入列,同时从中进行预测?

数据挖掘 机器学习 scikit-学习 聚类 预测建模 特征工程
2022-02-26 14:18:27

考虑以下场景。

我已经在一些输入特征上训练了一个 K-Means 模型,比如(A、B、C、D 和 E)。现在在进行预测时,我想让模型仅使用较少数量的特征进行预测,例如(A、D、E),而不是最初训练的特征数量(A、B、C、D 和 E) )。

了解了上述事实后,我有一些问题如下:-

  1. 这种方法是正确的方法,还是就机器学习原理而言合乎逻辑?
  2. 它会影响模型的准确性吗?如果是,那么如何?
  3. 如果我必须提供特征 B 和 C,那么我可以用零填充它们,然后将其提供给经过训练的模型以进行预测。
  4. 步骤 3) 中采取的措施是否会影响模型的准确性,如果是,那么为什么以及如何影响?
3个回答
  1. 这种方法是正确的方法,还是就机器学习原理而言合乎逻辑?

它将影响模型的性能,因为您的算法学会了根据所有特征根据距离分离集群。我已经阅读了有关如何计算像您这样的无监督问题上的特征重要性的讨论,因此您可以对此进行一些研究并找出衡量特征重要性的方法,以便您了解特征对您的影响有多大模型,因此对删除一个的影响。在这种情况下,删除将意味着使用 NaN 填充您不使用的功能,因此您的模型必须为这种情况做好准备(sklearn 管道是执行此操作的最佳方式)

  1. 它会影响模型的准确性吗?如果是,那么如何?

首先,您指的是无监督模型(K-means),因此您提到的指标不适用,而是必须有关于您形成的集群的分离性的指标(剪影分数等),并根据我的第一个答案,您可以根据您的问题使用度量来调整置换重要性的版本,以查看删除特征对一般性能的影响。

  1. 如果我必须提供特征 B 和 C,那么我可以用零填充它们,然后将其提供给经过训练的模型以进行预测

请记住,您使用的是基于欧几里得距离的算法,因此使用零进行插补可能会产生不希望的结果

  1. 步骤 3) 中采取的行动是否会影响模型的准确性,如果是,那么为什么以及如何影响?

肯定会的,用零插补会将不存在的特征带到欧几里得空间的原点,所以要小心

有趣的问题。答案是:视情况而定。

找出它将如何影响您的模型的最佳方法是使用 shap 包。您可以使用它来揭示特征的重要性并揭示模型中的交互效果。

根据被排除的特征的“重要性”程度,可能会产生非常不同的效果。

让我们假设一个非常简单的决策树模型,其中最重要的特征和规则将由前 n 个拆分(等等)表示。如果您想让您的模型更通用(即防止过度拟合),您还可以对树进行修剪(剪掉树中不太重要的特征/规则)。修剪不会影响您的模型性能(不会显着降低准确性)。相反,如果您排除其中一个最重要的功能(或仅提供静态值),则会对您的模型预测产生负面影响。

其他答案是有道理的,但我会更明确地否定这个想法:

  1. 这种方法是正确的方法,还是就机器学习原理而言合乎逻辑?

不,这不对。ML 模型的参数(无论是监督的还是非监督的)是使用一组特定的特征来估计的,这些特征被设计为问题的输入。改变输入(特征)也改变了问题的定义,因此从第一个问题获得的解决方案(模型)不太可能在新问题上同样有效。

  1. 它会影响模型的准确性吗?如果是,那么如何?

这很可能会降低模型的性能。

通常选择模型中使用的特征是因为它们可能“帮助”模型。如果它们“有帮助”,那么模型将依赖它们,因此删除它们将导致模型失败。

  1. 如果我必须提供特征 B 和 C,那么我可以用零填充它们,然后将其提供给经过训练的模型以进行预测。

你当然可以,但这是个坏主意。

  1. 步骤 3) 中采取的措施是否会影响模型的准确性,如果是,那么为什么以及如何影响?

同第 2 点:性能很可能会下降。用任意值替换模型的有价值的指示相当于在生物实验室中随机切换血液样本,它会导致错误的测试和错误的结果。

另一种看待它的方式:如果您的建议是可能的,则意味着通常可以删除一个功能并获得相同的性能。所以假设我们有特征(A,B,C,D,E)的性能P,当我们移除A时,我们仍然有性能P。那么根据我们的假设,我们也可以移除B并且仍然获得性能P,然后做再次重复,直到我们获得一个具有 0 个特征且性能为 P 的模型。这是一个矛盾,因此可以在不损失性能的情况下删除特征的假设是错误的。