我们有一个基于网络的生产产品,允许用户对商品的未来价值(或需求)进行预测,历史数据包含大约 100k 个示例,每个示例大约有 5 个参数;
考虑一类称为预测的数据:
prediction {
id: int
predictor: int
predictionDate: date
predictedProductId: int
predictedDirection: byte (0 for decrease, 1 for increase)
valueAtPrediciton: float
}
以及衡量预测结果的配对结果类:
predictionResult {
id: int
valueTenDaysAfterPrediction: float
valueTwentyDaysAfterPrediction: float
valueThirtyDaysAfterPrediction: float
}
我们可以定义一个成功的测试用例,其中在预测时考虑方向和值时,如果任何两个未来值检查点是有利的。
success(p: prediction, r: predictionResult): bool =
count: int
count = 0
// value is predicted to fall
if p.predictedDirection = 0 then
if p.valueAtPrediciton > r.valueTenDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton > r.valueTwentyDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton > r.valueThirtyDaysAfterPrediction then count = count + 1
// value is predicted to increase
else
if p.valueAtPrediciton < r.valueTenDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton < r.valueTwentyDaysAfterPrediction then count = count + 1
if p.valueAtPrediciton < r.valueThirtyDaysAfterPrediction then count = count + 1
// success if count = 2 or count = 3
return (count > 1)
在用户提交表单的那一刻,预测类中的所有内容都是已知的,而预测结果中的信息直到后来才知道;理想情况下,模型或算法可以从我们将算法应用于新预测的三年历史中推导出来,我们可以获得关于它是否会成功的概率(我会很高兴有一个布尔 Y/N 标志不管这是否有趣)。
我对机器学习知之甚少,我正在尝试通过材料来解决问题。但是,如果我能得到一些指导,那就太好了,这样我就可以研究和实践解决此类问题所需的确切方法。
谢谢