ML/DL 对整个输入而不是逐行进行预测

我有一组来自传感器的表格数据,测量了各种特征。当传感器“关闭”时,它会报告值为零。我正在训练一些机器学习模型,如kNN、XGBoost和神经网络,用于分类。这是我面临的问题:我可以逐行训练和预测;然而,最好是将一个范围作为整体进行分类,而不是逐行。另一个问题是,这个范围的大小可能变化。作为一个非常基本的例子,请看这个图表,展示了这个范围。enter image description here

我有一个基本的Keras模型:

model = Sequential()model.add(Dense(100, activation='relu'))model.add(Dense(100, activation='relu'))model.add(Dense(100, activation='relu'))model.add(Dense(num_classes, activation='softmax'))print(model.summary())model.compile(loss='categorical_crossentropy',                optimizer='adam', metrics=['accuracy'])

训练数据的形状为20个特征和4个类别。我该如何:1.) 格式化我的训练数据2.) 调整输入数据以作为一个“整体”进行分类,而不是逐行3.) 虽然这里讨论的是使用Keras。相同的输入形状/训练是否可以应用于XGBoost或kNN?


回答:

我假设图表中的蓝色线条代表你的目标。我认为预测范围整体而不是样本一个一个预测存在一个根本问题。

假设有一些合理的逻辑可以将样本范围压缩成一个(比如每个特征取平均值,或连接,或其他什么…),显然你首先需要识别这个范围本身。然而,这个范围识别步骤依赖于对目标的了解(至少从所展示的图表来看是这样的)。

如果预处理步骤依赖于对目标的了解,你也需要在预处理数据和进行预测之前知道测试集的目标。换句话说,你需要在进行预测之前知道结果,这将毫无意义。

你已经说明你正在尝试进行分类,但你的目标似乎是连续的。我不知道你的类别是什么,或者它们与什么模式相关,但你需要在开始解决这个问题作为分类问题之前对目标进行分箱。这样做你可能会丢失很多信息。

因此,我建议从解决回归问题开始。尝试预测每个样本的连续目标。一旦你做到了,你可以应用一些模式匹配逻辑来识别给定样本/范围的类别(例如,你可以切片前一步的目标/预测序列,将每个切片与所需的类别相关联,并使用这些数据作为一些分类算法的新数据集)。

至于可变长度的输入。一些深度学习架构允许你处理可变长度的输入,比如RNN或自适应池化。你可以尝试在知道如何预测之前提到的连续目标后再做这个。非深度学习算法通常期望所有样本具有相同的形状,因此没有通用/自动的方式在它们和处理可变长度输入的深度学习算法之间重用相同的输入。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注