Могу ли я заставить Amazon SageMaker выдавать рекомендации, основанные на исторических данных вместо оценки вероятности? - PullRequest
1 голос
/ 14 марта 2019

У нас есть огромный набор данных в формате 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 возвращал 142. В реальной жизни этот файл состоит из тысяч строк, но, поскольку существует шаблон, я бы хотел получить максимально возможное значение.

До сих пор я настраивал задание поезда для файла CSV с использованием алгоритма L inear Learner со следующими настройками:

label_size = 1
feature_dim = 2
predictor_type = regression

Я также создал модель из нее и настроил конечную точку. Когда я призываю его, я получаю счет в ответ.

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

Моя цель здесь - получить прогноз для третьего столбца. Как я могу этого достичь? Я прочитал много документации по этому вопросу, но так как я не очень хорошо знаком с AWS, я мог бы использовать неправильные алгоритмы для того, что я пытаюсь сделать.

(Пожалуйста, не стесняйтесь редактировать этот вопрос, чтобы лучше соответствовать терминологии AWS)

Ответы [ 2 ]

2 голосов
/ 29 марта 2019

Для ввода csv метка должна быть в первом столбце, как упоминалось здесь : поэтому вам следует предварительно обработать данные, чтобы поместить метку (столбец, который вы хотите предсказать) слева.

Далее вам нужно решить, является ли это проблемой регрессии или проблемой классификации.

Если вы хотите предсказать число, максимально приближенное к истинному, это регрессия. Например, истина может быть 4, а модель может предсказывать 4,15. Если вам нужен целочисленный прогноз, вы можете округлить вывод модели.

Если вы хотите, чтобы прогноз был одной из нескольких категорий, то у вас есть проблема классификации. Например, мы можем кодировать «Северная Америка» = 0, «Европа» = 1, «Африка» = 2 и т. Д. В этом случае дробный прогноз не будет иметь смысла.

Для регрессии используйте 'predictor_type' = 'regressor', а для классификации с более чем 2 классами используйте 'predictor_type' = 'multiclass_classifier', как описано здесь .

Вывод регрессии будет содержать только поле 'score', которое является прогнозом модели. Выходные данные мультиклассовой классификации будут содержать поле 'predicted_label', которое является предсказанием модели, а также поле 'score', которое представляет собой вектор вероятностей, представляющих достоверность модели. Индекс с наибольшей вероятностью будет таким, который прогнозируется как 'predicted_label'. Форматы вывода задокументированы здесь .

0 голосов
/ 18 марта 2019

predictor_type = regression не может вернуть предсказанный ярлык, согласно

документации линейного ученика :

Для вывода, линейный ученикАлгоритм поддерживает форматы application / json, application / x-recordio-protobuf и text / csv.Для бинарных классификационных моделей возвращается как оценка, так и прогнозируемая метка.Для регрессии он возвращает только счет.

Для получения дополнительной информации о форматах входных и выходных файлов см. Форматы ответов линейного обучающегося для вывода и Образцы блокнотов для линейного обучающегося .

...