哪种方法最适合 11 个自变量、2 个因变量的预测建模系统?

Which approach is best for a 11 independent, 2 dependent variable predictive modeling system?

我想这最好用机器学习来完成,但我在 ML 方面还是个新手。

我有一个包含 11 个自变量的系统:

           'Time1',
           'Y-Radial | Band 1 (in/sec)',
           'Y-Radial | Peak Acceleration (g)',
           'Y-Radial | Peak Velocity (in/s)',
           'X-Axial | RMS Velocity (in/s)',
           'X-Axial | Temperature (F)',
           'X-Axial | Peak Acceleration (g)',
           'X-Axial | Peak Velocity (in/sec)',
           'Y-Radial | RMS Velocity (in/s)',
           'Y-Radial | Temperature (F)',
           'X-Axial | Band 1',
           'Battery Voltage (V)'

还有两个因变量:

           'Y-Radial | Damage Accumulation',
           'X-Axial | Damage Accumulation'

我有两个训练集和一个测试集,我们一直在研究线性回归、神经网络回归、KNN 和其他方法,但不确定这些方法是否值得为此研究。

非常感谢帮助,谢谢。

答案很长,但在这里分享我的想法,以帮助为您的特定问题选择最佳方法。

对于您的用例,由于您手头有一个带标签的数据集,我们正在研究 监督 机器学习问题(排除 无监督 强化学习 此处)。

两个目标变量是连续的(不是classes/binary),所以我们需要一个基于回归而不是[=63=的预测模型]化.

学到的不是决策边界,所以不需要 SVM(Support Vector Machines). The model does not learn from probability distributions either, so we can rule out generative learning algorithms 像 GDA 或朴素贝叶斯。

你只有 12 个输入特征向量(输入的维数较低 space),所以指向 dimensionality reduction techniques 像 PCA 或 NMF。

您在问题中提到了 kNN。 classification 版本显然应该被排除,但 kNN 的回归风格可以在这里使用。 但是,这不是我的首选,原因有二:1) 对离群值(原始距离计算)非常敏感,我怀疑这应该是查看给定特征的一个重要问题。 2) kNN 需要同类特征,特征之间具有相似的尺度和权重,这也可能与您的数据集不匹配。

您的模型似乎是线性的,因此无需进入 non-linear regression techniques

在受监督的世界和算法的线性回归 class 中 - 我们现在几乎已经下降到 multiple linear regression and ANN 回归。

冒着过度简化的风险,ANN 方法不是我的选择。主要有两个原因:1) ANN 的黑匣子性质不允许您正确解释两个目标变量的预测,这通常是一个重要问题,不仅对您的客户而且对您自己(如果您是工程团队) - 能够“解释”推论,以及每个输入变量的 importance/weight 进入最终预测是非常好的(并且绝对是传统线性回归技术的强项)。 2) 人工神经网络比传统的线性回归工具更容易过拟合。

结论:我会选择传统的多元回归方法。

我看到你在 Python 中编码。那么这里就不需要 TensorFlow/Keras 了。单独使用 Scikit-Learn 应该可以顺利处理它。

您决定的最后一个要素是在实践中选择哪种确切技术来实施此多元线性回归模型。

最简单的方法是从 Scikit-Learn 实例化一个简单的 LinearRegression 回归器 class。

然而,XGBoost is arguably the most powerful tool for this job. That would be my favorite choice. Good news is, it also comes out-of-the-box in Scikit-Learn and fairly straightforward to implement. I would just follow this Python XGBoost tutorial from Kaggle, here.

为了完整起见 - 决策树、装袋、随机森林、增强技术也是适用的解决方案,但长话短说,XGBoost 优于所有这些类似 classes 的 ML 技术。