我可以让 Amazon SageMaker 根据历史数据而不是概率分数提供推荐吗?

Can I make Amazon SageMaker deliver a recommendation based on historic data instead of a probability score?

我们有大量 CSV 格式的数据,其中包含一些数字元素,如下所示:

Year,BinaryDigit,NumberToPredict,JustANumber, ...other stuff
1954,1,762,16, ...other stuff
1965,0,142,16, ...other stuff
1977,1,172,16, ...other stuff

这里的问题是第三列与之前的列之间存在很强的相关性。所以我对数据进行了预处理,现在可以使用我认为完美的格式:

1954,1,762
1965,0,142
1977,1,172

我想要的是对第三列中的值进行预测,使用前两列作为输入。所以在上面的例子中,我想要输入 1965,0 到 return 142。在现实生活中这个文件有数千行,但由于有一个模式,我想检索最可能的值。

到目前为止,我已经使用 Linear Learner 算法在 CSV 文件上设置了训练作业,设置如下:

label_size = 1
feature_dim = 2
predictor_type = regression

我还从中创建了一个模型,并设置了一个端点。当我调用它时,我得到了 return.

的分数
    response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
                                   ContentType='text/csv',
                                   Body=payload)

我的目标是获得第三列预测。我怎样才能做到这一点?我已经阅读了很多关于这方面的文档,但是由于我对 AWS 不是很熟悉,所以我还不如使用错误的算法来做我想做的事情。

(请随时编辑此问题以更好地适应 AWS 术语)

predictor_type = regression 无法 return 预测标签,根据

the linear-learner documentation:

For inference, the linear learner algorithm supports the application/json, application/x-recordio-protobuf, and text/csv formats. For binary classification models, it returns both the score and the predicted label. For regression, it returns only the score.

For more information on input and output file formats, see Linear Learner Response Formats for inference, and the Linear Learner Sample Notebooks.

对于csv输入,标签应该在第一列,如前所述here:所以你应该预处理你的数据,把标签(你想要预测的列)放在左边。

接下来,您需要判断这是回归问题还是分类问题。

如果你想预测一个尽可能接近真实数字的数字,那就是回归。例如,事实可能是 4,模型可能预测 4.15。如果您需要整数预测,您可以四舍五入模型的输出。

如果您希望预测是几个类别之一,那么您就遇到了分类问题。例如,我们可能会编码 'North America' = 0、'Europe' = 1、'Africa' = 2 等。在这种情况下,分数预测没有意义。

对于回归,使用 'predictor_type' = 'regressor',对于超过 2 个 类 的分类,使用 'predictor_type' = 'multiclass_classifier' 作为记录 here

回归的输出将只包含一个 'score' 字段,这是模型的预测。多类分类的输出将包含一个 'predicted_label' 字段,它是模型的预测,以及一个 'score' 字段,它是表示模型置信度的概率向量。概率最高的索引将是预测为 'predicted_label' 的索引。输出格式记录在案 here.