基于是否在订购后完成超级乘坐的完成以及具有什么准确性/概率的实践问题具有以下特征:
Available Drivers int64
Placed Time float64
Response Distance float64
Car Type int32
Day Of Week int64
Response Delay float64
Order Completion int32 [target]
我的方法是使用tf.Keras Sequential预测目标。看起来是这样的:
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(16, activation='relu', input_shape=input_shape),
tf.keras.layers.Dense(16, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(1, activation='sigmoid')
])
adam_optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE)
binary_crossentropy_loss = tf.keras.losses.BinaryCrossentropy()
model.compile(optimizer=adam_optimizer,
loss=binary_crossentropy_loss,
metrics=['accuracy'])
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=ES_PATIENCE)
history = model.fit(train_dataset, validation_data=validation_dataset, epochs=EPOCHS, verbose=2,
callbacks=[early_stop])
我像这样标准化数据(请注意train_data是一个数据框):
train_data = tf.keras.utils.normalize(train_data)
然后进行预测,
predictions = model.predict_proba(prediction_dataset, batch_size=None)
培训结果:
loss: 0.3506 - accuracy: 0.8817 - val_loss: 0.3493 - val_accuracy: 0.8773
但这仍然使我出现相应质量的质量概率很低。这是错误的方法吗?
对于这种问题,您会建议采用哪种方法,而我做错了吗?对于这种解决方案,神经网络难道不是个好主意吗?非常感谢!
答案 0 :(得分:1)
在您解决问题时,这是一个经典机器学习分类问题。
考虑到N个特征(独立变量),您必须预测1个(一个)因变量。
构造神经网络的方式很好。
由于您有二进制分类问题,因此S型激活是正确的。
关于模型的复杂性(层数,每层神经元数),很大程度上取决于您的数据集。
如果您有一个包含许多功能和大量示例的综合数据集(示例是数据框中具有X1,X2,X3 ... Y的行),其中X是要素,Y是因变量,您的模型的复杂度可能会有所不同。
如果您的小型数据集具有一些功能,则建议使用小型模型。始终从小模型开始。
如果遇到拟合不足(训练集以及验证和测试集的准确性较差)的问题,则可以逐渐增加模型的复杂性 >(添加更多层,每层添加更多神经元)。
如果遇到过度拟合的问题,实施正则化技术可能会有所帮助(降落,L1 / L2正则化,加噪,数据增强)。
您需要考虑的是,如果您的数据集很小,那么经典的机器学习算法可能会胜过深度学习模型。发生这种情况是因为神经网络与机器学习模型相比非常“饥饿” --->,它们需要更多的数据才能正常工作。您可以选择SVM /内核SVM / Random Forest / XGBoost以及其他类似算法。
编辑!
无论是否以何种准确性/概率自动将问题分为两部分,而不仅仅是简单的分类。
我个人要做的事情如下:由于概率发生在0%到100%之间,因此,如果您在X列中将概率作为要素(而您没有),则根据数据数您可以执行以下操作:我将为每个概率部分分配一个标签:1到(0%,25%),2到(25%,50%),3至(50%,75%),4至(75%,100%)。但这完全取决于先验概率信息(如果您具有概率作为特征)。 然后,如果您推断出并获得了标签3,便会知道旅程完成的可能性。
否则,您不能将当前问题归为分类和概率分类。
希望我能给您介绍性的见解。编码愉快。
答案 1 :(得分:1)
如果您要进行分类,则可能需要研究整体方法(森林,林木等)
如果您正在计算概率,则可能需要研究概率图形模型(贝叶斯网络等)