API создания обученных моделей
Создаёт обученную модель.
Модели, созданные в версии 7.8.0, несовместимы со старыми версиями узлов. Если в среде смешанного кластера присутствуют узлы разных версий, все узлы должны быть не ниже версии 7.8.0, чтобы использовать модель, сохранённую узлом версии 7.8.0.
Запрос
PUT _ml/trained_models/<model_id>
Предварительные условия
Требуется привилегия кластера manage_ml. Эта привилегия включена в встроенную роль machine_learning_admin.
Описание
API create trained model позволяет предоставить обученную модель, которая не была создана с помощью анализа данных в рамках фреймов данных.
Параметры пути
-
<model_id> - (Обязательно, строка) Уникальный идентификатор обученной модели.
Параметры запроса
-
defer_definition_decompression - (Необязательно, логическое значение) Если установлено в значение
trueи предоставленcompressed_definition, запрос откладывает декомпрессию определения и пропускает соответствующие валидации. Это отсрочка полезна для систем или пользователей, которые знают хороший оценочный размер байтов для своей модели и знают, что их модель валидна и, вероятно, не потерпит сбои во время вывода.
Тело запроса
-
compressed_definition - (Обязательно, строка) Сжатое (сжатое с помощью GZip и закодированное в Base64) определение вывода модели. Если
compressed_definitionуказано, тоdefinitionне может быть указано.
-
definition -
(Обязательно, объект) Определение вывода для модели. Если
definitionуказано, тоcompressed_definitionне может быть указано.Свойства
definition```-
preprocessors -
(Необязательно, объект) Коллекция препроцессоров. См. Примеры препроцессоров.
Свойства
preprocessors-
frequency_encoding -
(Обязательно, объект) Определяет кодирование частоты для поля.
Свойства
frequency_encoding-
feature_name - (Обязательно, строка) Название результирующего признака.
-
field - (Обязательно, строка) Имя поля для кодирования.
-
frequency_map - (Обязательно, карта объектов типа строка:число с плавающей запятой) Объект, отображающий значение поля на закодированное значение частоты.
-
custom - (Необязательно, булево значение) Булево значение, указывающее, создал ли аналитический процесс препроцессор или пользователь предоставил его. Это корректирует вычисление важности признаков. При значении
true, вычисление важности признака возвращает важность для обработанного признака. При значенииfalseвозвращается общая важность исходного поля. Значение по умолчанию -false.
-
-
-
-
trained_model -
(Обязательный, объект) Определение обученной модели.
Свойства
trained_model-
tree -
(Обязательный, объект) Определение бинарного дерева решений.
Свойства
tree-
classification_labels - (Необязательный, строка) Массив меток классификации (используется для
classification). -
feature_names - (Обязательный, строка) Ожидаемые признаки дерева в ожидаемом порядке.
-
target_type - (Обязательный, строка) Строка, указывающая тип целевого параметра модели;
regressionилиclassification. -
tree_structure - (Обязательный, объект) Массив объектов
tree_node. Узлы должны быть упорядочены по порядку значенийtree_node.node_index.
-
-
tree_node -
(Обязательный, объект) Определение узла в дереве.
Существуют два основных типа узлов: листья и нелистья.
- Листья требуют только определения
node_indexиleaf_value. - Все остальные узлы требуют определения
split_feature,left_child,right_child,threshold,decision_typeиdefault_left.
Свойства
tree_node-
decision_type - (Необязательный, строка) Указывает тип решения (т.е. когда выбрать левый узел). Поддерживаются
lt,lte,gt,gte. По умолчаниюlte. -
default_left - (Необязательный, логическое значение) Указывает, следует ли по умолчанию выбирать левый узел при отсутствии признака. По умолчанию
true. -
leaf_value - (Необязательный, double) Значение листа узла, если узел является листом (т.е. без дочерних узлов).
-
left_child - (Необязательный, целое число) Индекс левого дочернего узла.
-
node_index - (Целое число) Индекс текущего узла.
-
right_child - (Необязательный, целое число) Индекс правого дочернего узла.
-
split_feature - (Необязательный, целое число) Индекс значения признака в массиве признаков.
-
split_gain - (Необязательный, double) Прирост информации от разделения.
-
threshold - (Необязательный, double) Пороговое значение для сравнения со значением признака.
- Листья требуют только определения
-
ensemble -
(Необязательный, объект) Определение ансамблевой модели. См. Примеры моделей.
Свойства
ensemble-
aggregate_output -
(Обязательный, объект) Агрегированный объект вывода, определяющий, как агрегировать результаты
trained_models. Поддерживаемые объекты —weighted_mode,weighted_sumиlogistic_regression. См. Пример агрегированного вывода.Свойства
aggregate_output-
logistic_regression -
(Необязательный, объект) Этот тип
aggregated_outputработает с бинарной классификацией (классификация для значений [0, 1]). Он умножает выходные данные (в случае моделиensemble, значения модели вывода) на предоставленноеweights. Результирующий вектор суммируется и передаётся в функциюsigmoid. Результат функцииsigmoidрассматривается как вероятность класса 1 (P_1), следовательно, вероятность класса 0 равна1 - P_1. Затем возвращается класс с наибольшей вероятностью (либо 0, либо 1). Дополнительную информацию о логистической регрессии см. в этой статье вики.Свойства
logistic_regression-
weights - (Обязательный, double) Веса для умножения на входные значения (значения вывода обученных моделей).
-
-
weighted_sum -
(Необязательный, объект) Этот тип
aggregated_outputработает с регрессией. Сумма взвешенных входных значений.Свойства
weighted_sum-
weights - (Обязательный, double) Веса для умножения на входные значения (значения вывода обученных моделей).
-
-
weighted_mode -
(Необязательный, объект) Этот тип
aggregated_outputработает с регрессией или классификацией. Он принимает взвешенное голосование входных значений. Возвращается наиболее часто встречающееся входное значение (с учётом весов).Свойства
weighted_mode-
weights - (Обязательный, double) Веса для умножения на входные значения (значения вывода обученных моделей).
-
-
exponent -
(Необязательный, объект) Этот тип
aggregated_outputработает с регрессией. Он берёт взвешенную сумму входных значений и передает результат в функцию возведения в степень (e^x, гдеx— сумма взвешенных значений).Свойства
exponent-
weights - (Обязательный, double) Веса для умножения на входные значения (значения вывода обученных моделей).
-
-
-
classification_labels - (Необязательный, строка) Массив меток классификации.
-
feature_names - (Необязательный, строка) Ожидаемые признаки ансамблем в ожидаемом порядке.
-
target_type - (Обязательный, строка) Строка, указывающая тип целевого параметра модели;
regressionилиclassification. -
trained_models - (Обязательный, объект) Массив объектов
trained_model. Поддерживаемые обученные модели —treeиensemble.
-
-
description - (Необязательный, строка) Читабельное описание обученной модели вывода.
-
estimated_heap_memory_usage_bytes - (Необязательный, целое число) [7.16.0] Устарело в 7.16.0. Заменено на
model_size_bytes -
estimated_operations - (Необязательный, целое число) Ожидаемое количество операций для использования обученной модели во время вывода. Этот параметр поддерживается только если
defer_definition_decompression—trueили определение модели не предоставлено.
-
-
-
inference_config -
(Обязательный, объект) Настройка по умолчанию для вывода. Может быть как настройкой
regression, так и настройкойclassification. Она должна соответствоватьdefinition.trained_model'starget_type.Свойства
inference_config-
regression -
(Необязательный, объект) Настройка регрессии для вывода.
Свойства вывода регрессии
-
num_top_feature_importance_values - (Необязательный, целое число) Указывает максимальное количество значений важности признаков на документ. По умолчанию равно нулю, и вычисление важности признаков не происходит.
-
results_field - (Необязательный, строка) Поле, которое добавляется в входящие документы для хранения прогноза вывода. По умолчанию, это
predicted_value.
-
-
classification -
(Необязательный, объект) Настройка классификации для вывода.
Свойства вывода классификации
-
num_top_classes - (Необязательный, целое число) Указывает количество лучших прогнозов класса для возврата. По умолчанию равно 0.
-
num_top_feature_importance_values - (Необязательный, целое число) Указывает максимальное количество значений важности признаков на документ. По умолчанию равно нулю, и вычисление важности признаков не происходит.
-
prediction_field_type - (Необязательный, строка) Указывает тип предсказанного поля для записи. Допустимые значения:
string,number,boolean. Если указаноboolean,1.0преобразуется вtrue, а0.0вfalse. -
results_field - (Необязательный, строка) Поле, которое добавляется в входящие документы для хранения прогноза вывода. По умолчанию, это
predicted_value. -
top_classes_results_field - (Необязательный, строка) Указывает поле, в которое записываются лучшие классы. По умолчанию, это
top_classes.
-
-
-
input -
(Обязательный, объект) Имена входных полей для определения модели.
Свойства
input-
field_names - (Обязательный, строка) Массив имён входных полей для модели.
-
-
metadata - (Необязательный, объект) Карта объекта, содержащая метаданные о модели.
-
model_size_bytes - (Необязательный, целое число) Оценённое использование памяти в байтах для хранения обученной модели в памяти. Это свойство поддерживается только если
defer_definition_decompressionравноtrueили определение модели не предоставлено. -
tags - (Необязательный, строка) Массив тегов для организации модели.
Примеры
Примеры препроцессоров
В примере ниже показан объект препроцессора frequency_encoding:
{
"frequency_encoding":{
"field":"FlightDelayType",
"feature_name":"FlightDelayType_frequency",
"frequency_map":{
"Carrier Delay":0.6007414737092798,
"NAS Delay":0.6007414737092798,
"Weather Delay":0.024573576178086153,
"Security Delay":0.02476631010889467,
"No Delay":0.6007414737092798,
"Late Aircraft Delay":0.6007414737092798
}
}
} Следующий пример показывает объект препроцессора one_hot_encoding:
{
"one_hot_encoding":{
"field":"FlightDelayType",
"hot_map":{
"Carrier Delay":"FlightDelayType_Carrier Delay",
"NAS Delay":"FlightDelayType_NAS Delay",
"No Delay":"FlightDelayType_No Delay",
"Late Aircraft Delay":"FlightDelayType_Late Aircraft Delay"
}
}
} В этом примере показан объект препроцессора target_mean_encoding:
{
"target_mean_encoding":{
"field":"FlightDelayType",
"feature_name":"FlightDelayType_targetmean",
"target_map":{
"Carrier Delay":39.97465788139886,
"NAS Delay":39.97465788139886,
"Security Delay":203.171206225681,
"Weather Delay":187.64705882352948,
"No Delay":39.97465788139886,
"Late Aircraft Delay":39.97465788139886
},
"default_value":158.17995752420433
}
} Примеры моделей
Первый пример показывает объект trained_model:
{
"tree":{
"feature_names":[
"DistanceKilometers",
"FlightTimeMin",
"FlightDelayType_NAS Delay",
"Origin_targetmean",
"DestRegion_targetmean",
"DestCityName_targetmean",
"OriginAirportID_targetmean",
"OriginCityName_frequency",
"DistanceMiles",
"FlightDelayType_Late Aircraft Delay"
],
"tree_structure":[
{
"decision_type":"lt",
"threshold":9069.33437193022,
"split_feature":0,
"split_gain":4112.094574306927,
"node_index":0,
"default_left":true,
"left_child":1,
"right_child":2
},
...
{
"node_index":9,
"leaf_value":-27.68987349695448
},
...
],
"target_type":"regression"
}
} Следующий пример показывает объект модели ensemble:
"ensemble":{
"feature_names":[
...
],
"trained_models":[
{
"tree":{
"feature_names":[],
"tree_structure":[
{
"decision_type":"lte",
"node_index":0,
"leaf_value":47.64069875778043,
"default_left":false
}
],
"target_type":"regression"
}
},
...
],
"aggregate_output":{
"weighted_sum":{
"weights":[
...
]
}
},
"target_type":"regression"
} Пример агрегированного вывода
Пример объекта logistic_regression:
"aggregate_output" : {
"logistic_regression" : {
"weights" : [2.0, 1.0, .5, -1.0, 5.0, 1.0, 1.0]
}
} Пример объекта weighted_sum:
"aggregate_output" : {
"weighted_sum" : {
"weights" : [1.0, -1.0, .5, 1.0, 5.0]
}
} Пример объекта weighted_mode:
"aggregate_output" : {
"weighted_mode" : {
"weights" : [1.0, 1.0, 1.0, 1.0, 1.0]
}
} Пример объекта exponent:
"aggregate_output" : {
"exponent" : {
"weights" : [1.0, 1.0, 1.0, 1.0, 1.0]
}
} Схема JSON обученных моделей
Для полной схемы JSON обученных моделей, нажмите здесь.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/put-trained-models.html