API оценки аналитики фреймов данных
Оценивает аналитику фреймов данных для аннотированного индекса.
Запрос
POST _ml/data_frame/_evaluate
Предварительные условия
Требуются следующие привилегии:
- cluster:
monitor_ml(рольmachine_learning_userпредоставляет эту привилегию) - индекс назначения:
read
Описание
API объединяет часто используемые метрики оценки для различных типов функций машинного обучения. Он предназначен для использования с индексами, созданными с помощью аналитики фреймов данных. Оценка требует наличия поля «истинные значения» и поля «результаты анализа».
Тело запроса
-
evaluation -
(Обязательно, объект) Определяет тип оценки, которую вы хотите выполнить. См. Ресурсы оценки аналитики фреймов данных.
Доступные типы оценки:
-
outlier_detection -
regression -
classification
-
-
index - (Обязательно, объект) Определяет
index, в котором будет выполняться оценка. -
query - (Необязательно, объект) Запрос, который извлекает подмножество данных из исходного индекса. См. Query DSL.
Ресурсы оценки аналитики фреймов данных
Объекты оценки выявления аномалий
Оценка выявления аномалий оценивает результаты анализа выявления аномалий, который выводит вероятность того, что каждый документ является аномалией.
-
actual_field - (Обязательно, строка) Поле
index, содержащееground truth. Тип данных этого поля может быть boolean или integer. Если тип данных — integer, значение должно быть либо0(false), либо1(true). -
predicted_probability_field - (Обязательно, строка) Поле
index, определяющее вероятность того, что элемент принадлежит к интересующему классу или нет. Это поле, содержащее результаты анализа. -
metrics -
(Необязательно, объект) Указывает метрики, используемые для оценки. Если метрики не указаны, по умолчанию возвращаются следующие:
-
auc_roc(include_curve: false), -
precision(at: [0.25, 0.5, 0.75]), -
recall(at: [0.25, 0.5, 0.75]), -
confusion_matrix(at: [0.25, 0.5, 0.75]).-
auc_roc - (Необязательно, объект) Значение AUC ROC (площадь под кривой ROC) и, по желанию, кривая. Значение по умолчанию — {"include_curve": false}.
-
confusion_matrix - (Необязательно, объект) Устанавливает различные пороговые значения для оценки аномальности, по которым рассчитываются метрики (
tp— истинноположительные,fp— ложноположительные,tn— истинноотрицательные,fn— ложноотрицательные). Значение по умолчанию — {"at": [0.25, 0.50, 0.75]}. -
precision - (Необязательно, объект) Устанавливает различные пороговые значения для оценки аномальности, по которым рассчитывается метрика. Значение по умолчанию — {"at": [0.25, 0.50, 0.75]}.
-
recall - (Необязательно, объект) Устанавливает различные пороговые значения для оценки аномальности, по которым рассчитывается метрика. Значение по умолчанию — {"at": [0.25, 0.50, 0.75]}.
-
-
Объекты оценки регрессии
Оценка регрессии оценивает результаты регрессионного анализа, который выводит прогноз значений.
-
actual_field - (Обязательно, строка) Поле
index, содержащееground truth. Тип данных этого поля должен быть числовым. -
predicted_field - (Обязательно, строка) Поле в
index, содержащее прогнозируемое значение, то есть результаты регрессионного анализа. -
metrics -
(Необязательно, объект) Указывает метрики, используемые для оценки. Для получения дополнительной информации о
mse,msleиhuber, обратитесь к Jupyter Notebook по функциям потерь регрессии. Если метрики не указаны, по умолчанию возвращаются следующие:-
mse, -
r_squared, -
huber(delta: 1.0).-
mse - (Необязательно, объект) Среднее квадратичное отклонение между предсказанными значениями и фактическим (
ground truth) значением. Для получения дополнительной информации прочитайте эту статью вики. -
msle -
(Необязательно, объект) Среднее квадратичное отклонение между логарифмом предсказанных значений и логарифмом фактического (
ground truth) значения.-
offset - (Необязательно, double) Определяет точку перехода, в которой вы переключаетесь с минимизации квадратичной ошибки на минимизацию квадратичной ошибки логарифма. По умолчанию
1.
-
-
huber -
(Необязательно, объект) Функция потерь Pseudo Huber. Для получения дополнительной информации прочитайте эту статью вики.
-
delta - (Необязательно, double) Приближает 1/2 (предсказание - фактическое)2 для значений, намного меньших, чем дельта, и приближает прямую линию с наклоном дельта для значений, намного больших, чем дельта. По умолчанию
1. Дельта должна быть больше0.
-
-
r_squared - (Необязательно, объект) Доля дисперсии зависимой переменной, предсказуемой по независимым переменным. Для получения дополнительной информации прочитайте эту статью вики.
-
-
Объекты оценки классификации
Оценка классификации оценивает результаты анализа классификации, который выдает прогноз, определяющий, к какой из классов относится каждый документ.
-
actual_field - (Обязательно, строка) Поле в
index, содержащееground truth. Тип данных этого поля должен быть категориальным. -
predicted_field - (Необязательно, строка) Поле в
index, содержащее предсказанное значение, то есть результат анализа классификации. -
top_classes_field - (Необязательно, строка) Поле в
index, которое представляет собой массив документов в формате{ "class_name": XXX, "class_probability": YYY }. Это поле должно быть определено какnestedв отображениях. -
metrics -
(Необязательно, объект) Указывает метрики, используемые для оценки. Если метрики не указаны, по умолчанию возвращаются следующие:
-
accuracy, -
multiclass_confusion_matrix, -
precision, -
recall.-
accuracy - (Необязательно, объект) Точность прогнозов (по классам и в целом).
-
auc_roc -
(Необязательно, объект) Значение AUC ROC (площадь под кривой ROC) и, необязательно, сама кривая. Вычисляется для конкретного класса (указанного как "class_name"), рассматриваемого как положительный.
-
class_name - (Обязательно, строка) Название единственного класса, рассматриваемого как положительный при расчете AUC ROC. Другие классы рассматриваются как отрицательные ("один-против-всех" стратегия). Все оцениваемые документы должны иметь
class_nameв списке их самых вероятных классов. -
include_curve - (Необязательно, логическое значение) Нужно ли возвращать кривую вместе со значением. Значение по умолчанию — false.
-
-
multiclass_confusion_matrix -
(Необязательно, объект) Многоклассовая матрица ошибок.
-
size - (Необязательно, двойное) Указывает размер многоклассовой матрицы ошибок. По умолчанию
10, что соответствует матрице 10x10.
-
-
precision - (Необязательно, объект) Точность прогнозов (по классам и средняя).
-
recall - (Необязательно, объект) Полнота прогнозов (по классам и средняя).
-
-
Примеры
Обнаружение выбросов
POST _ml/data_frame/_evaluate
{
"index": "my_analytics_dest_index",
"evaluation": {
"outlier_detection": {
"actual_field": "is_outlier",
"predicted_probability_field": "ml.outlier_score"
}
}
} API возвращает следующие результаты:
{
"outlier_detection": {
"auc_roc": {
"value": 0.92584757746414444
},
"confusion_matrix": {
"0.25": {
"tp": 5,
"fp": 9,
"tn": 204,
"fn": 5
},
"0.5": {
"tp": 1,
"fp": 5,
"tn": 208,
"fn": 9
},
"0.75": {
"tp": 0,
"fp": 4,
"tn": 209,
"fn": 10
}
},
"precision": {
"0.25": 0.35714285714285715,
"0.5": 0.16666666666666666,
"0.75": 0
},
"recall": {
"0.25": 0.5,
"0.5": 0.1,
"0.75": 0
}
}
} Регрессия
POST _ml/data_frame/_evaluate
{
"index": "house_price_predictions",
"query": {
"bool": {
"filter": [
{ "term": { "ml.is_training": false } }
]
}
},
"evaluation": {
"regression": {
"actual_field": "price",
"predicted_field": "ml.price_prediction",
"metrics": {
"r_squared": {},
"mse": {},
"msle": {"offset": 10},
"huber": {"delta": 1.5}
}
}
}
} | Индекс пункта назначения из анализа регрессии для анализа данных. | |
| В этом примере для анализа регрессии был определён раздел «тест/обучение» ( | |
| Фактическое значение цены дома. Это необходимо для оценки результатов. | |
| Предсказанное значение цены дома, рассчитанное с помощью анализа регрессии. |
Следующий пример вычисляет ошибку обучения:
POST _ml/data_frame/_evaluate
{
"index": "student_performance_mathematics_reg",
"query": {
"term": {
"ml.is_training": {
"value": true
}
}
},
"evaluation": {
"regression": {
"actual_field": "G3",
"predicted_field": "ml.G3_prediction",
"metrics": {
"r_squared": {},
"mse": {},
"msle": {},
"huber": {}
}
}
}
} | В этом примере для анализа регрессии был определён раздел «тест/обучение» ( | |
| Поле, содержащее фактическое значение успеваемости студента. Это необходимо для оценки результатов. | |
| Поле, содержащее предсказанное значение успеваемости студента, рассчитанное с помощью анализа регрессии. |
Следующий пример вычисляет ошибку тестирования. Единственное отличие от предыдущего примера заключается в том, что ml.is_training установлено в false в этот раз, поэтому запрос исключает раздел «обучение» из оценки.
POST _ml/data_frame/_evaluate
{
"index": "student_performance_mathematics_reg",
"query": {
"term": {
"ml.is_training": {
"value": false
}
}
},
"evaluation": {
"regression": {
"actual_field": "G3",
"predicted_field": "ml.G3_prediction",
"metrics": {
"r_squared": {},
"mse": {},
"msle": {},
"huber": {}
}
}
}
} | В этом примере для анализа регрессии был определён раздел «тест/обучение» ( | |
| Поле, содержащее фактическое значение успеваемости студента. Это необходимо для оценки результатов. | |
| Поле, содержащее предсказанное значение успеваемости студента, рассчитанное с помощью анализа регрессии. |
Классификация
POST _ml/data_frame/_evaluate
{
"index": "animal_classification",
"evaluation": {
"classification": {
"actual_field": "animal_class",
"predicted_field": "ml.animal_class_prediction",
"metrics": {
"multiclass_confusion_matrix" : {}
}
}
}
} | Тип оценки. | |
| Поле, содержащее фактическое значение классификации животного. Это необходимо для оценки результатов. | |
| Поле, содержащее предсказанное значение классификации животного с помощью анализа классификации. | |
| Указывает метрику для оценки. |
API возвращает следующий результат:
{
"classification" : {
"multiclass_confusion_matrix" : {
"confusion_matrix" : [
{
"actual_class" : "cat",
"actual_class_doc_count" : 12,
"predicted_classes" : [
{
"predicted_class" : "cat",
"count" : 12
},
{
"predicted_class" : "dog",
"count" : 0
}
],
"other_predicted_class_doc_count" : 0
},
{
"actual_class" : "dog",
"actual_class_doc_count" : 11,
"predicted_classes" : [
{
"predicted_class" : "dog",
"count" : 7
},
{
"predicted_class" : "cat",
"count" : 4
}
],
"other_predicted_class_doc_count" : 0
}
],
"other_actual_class_count" : 0
}
}
} | Имя фактического класса, который анализ пытался предсказать. | |
| Количество документов в индексе, относящихся к | |
| Этот объект содержит список предсказанных классов и количества предсказаний, связанных с классом. | |
| Количество кошек в наборе данных, которые правильно идентифицированы как кошки. | |
| Количество кошек в наборе данных, которые неправильно классифицированы как собаки. | |
| Количество документов, которые классифицированы как класс, не указанный как |
POST _ml/data_frame/_evaluate
{
"index": "animal_classification",
"evaluation": {
"classification": {
"actual_field": "animal_class",
"metrics": {
"auc_roc" : {
"class_name": "dog"
}
}
}
}
} | Тип оценки. | |
| Поле, содержащее фактическое значение классификации животного. Это необходимо для оценки результатов. | |
| Указывает метрику для оценки. | |
| Указывает имя класса, рассматриваемого как положительный при оценке, все остальные классы рассматриваются как отрицательные. |
API возвращает следующий результат:
{
"classification" : {
"auc_roc" : {
"value" : 0.8941788639536681
}
}
}
© 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/evaluate-dfanalytics.html