API оценки аналитики DataFrame
Оценивает аналитику DataFrame для аннотированного индекса.
Запрос
POST _ml/data_frame/_evaluate
Предварительные требования
Требуются следующие привилегии:
- cluster:
monitor_ml(рольmachine_learning_userпредоставляет эту привилегию) - индекс назначения:
read
Описание
API объединяет часто используемые метрики оценки для различных типов машинных обучающих функций. Он предназначен для использования с индексами, созданными с помощью аналитики DataFrame. Для оценки необходимо наличие как поля «истинных значений», так и поля результатов аналитики.
Тело запроса
-
evaluation -
(Обязательно, объект) Определяет тип оценки, который требуется выполнить. См. Ресурсы оценки аналитики DataFrame.
Доступные типы оценки:
-
outlier_detection -
regression -
classification
-
-
index - (Обязательно, объект) Определяет
index, в котором будет выполняться оценка. -
query - (Необязательно, объект) Предложение запроса, которое извлекает подмножество данных из исходного индекса. См. Язык запросов.
Ресурсы оценки аналитики DataFrame
Объекты оценки выявления аномалий
Оценка выявления аномалий оценивает результаты анализа выявления аномалий, который выводит вероятность того, что каждый документ является аномалией.
-
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 - (Необязательно, double) Указывает размер многоклассовой матрицы ошибок. По умолчанию
10, что приводит к матрице размером 10x10.
-
-
precision - (Необязательно, объект) Точность прогнозов (по классам и средняя).
-
recall - (Необязательно, объект) Полнота прогнозов (по классам и средняя).
-
-
Примеры
Обнаружение выбросов
resp = client.ml.evaluate_data_frame(
index="my_analytics_dest_index",
evaluation={
"outlier_detection": {
"actual_field": "is_outlier",
"predicted_probability_field": "ml.outlier_score"
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
index: 'my_analytics_dest_index',
evaluation: {
outlier_detection: {
actual_field: 'is_outlier',
predicted_probability_field: 'ml.outlier_score'
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
index: "my_analytics_dest_index",
evaluation: {
outlier_detection: {
actual_field: "is_outlier",
predicted_probability_field: "ml.outlier_score",
},
},
});
console.log(response); 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
}
}
} Регрессия
resp = client.ml.evaluate_data_frame(
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
}
}
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
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
}
}
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
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,
},
},
},
},
});
console.log(response); 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}
}
}
}
} | Индекс назначения результата анализа регрессии для фрейма данных. | |
| В этом примере для анализа регрессии был определён разбиение на обучающую и тестовую выборки ( | |
| Истинное значение фактической цены дома. Это необходимо для оценки результатов. | |
| Прогнозируемое значение цены дома, рассчитанное с помощью анализа регрессии. |
Следующий пример вычисляет ошибку обучения:
resp = client.ml.evaluate_data_frame(
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": {}
}
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
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: {}
}
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
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: {},
},
},
},
});
console.log(response); 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 в этот раз, поэтому запрос исключает обучающую выборку из оценки.
resp = client.ml.evaluate_data_frame(
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": {}
}
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
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: {}
}
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
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: {},
},
},
},
});
console.log(response); 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": {}
}
}
}
} | В этом примере для анализа регрессии было определено разбиение на обучающую и тестовую выборки ( | |
| Поле, содержащее истинное значение фактической успеваемости студента. Это необходимо для оценки результатов. | |
| Поле, содержащее прогнозируемое значение успеваемости студента, рассчитанное с помощью анализа регрессии. |
Классификация
resp = client.ml.evaluate_data_frame(
index="animal_classification",
evaluation={
"classification": {
"actual_field": "animal_class",
"predicted_field": "ml.animal_class_prediction",
"metrics": {
"multiclass_confusion_matrix": {}
}
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
index: 'animal_classification',
evaluation: {
classification: {
actual_field: 'animal_class',
predicted_field: 'ml.animal_class_prediction',
metrics: {
multiclass_confusion_matrix: {}
}
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
index: "animal_classification",
evaluation: {
classification: {
actual_field: "animal_class",
predicted_field: "ml.animal_class_prediction",
metrics: {
multiclass_confusion_matrix: {},
},
},
},
});
console.log(response); 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
}
}
} | Имя фактического класса, который анализ пытался предсказать. | |
| Количество документов в индексе, относящихся к классу | |
| Этот объект содержит список предсказанных классов и количество предсказаний, связанных с классом. | |
| Количество кошек в наборе данных, которые правильно идентифицированы как кошки. | |
| Количество кошек в наборе данных, которые неправильно классифицированы как собаки. | |
| Количество документов, которые классифицированы как класс, который не указан как |
resp = client.ml.evaluate_data_frame(
index="animal_classification",
evaluation={
"classification": {
"actual_field": "animal_class",
"metrics": {
"auc_roc": {
"class_name": "dog"
}
}
}
},
)
print(resp) response = client.ml.evaluate_data_frame(
body: {
index: 'animal_classification',
evaluation: {
classification: {
actual_field: 'animal_class',
metrics: {
auc_roc: {
class_name: 'dog'
}
}
}
}
}
)
puts response const response = await client.ml.evaluateDataFrame({
index: "animal_classification",
evaluation: {
classification: {
actual_field: "animal_class",
metrics: {
auc_roc: {
class_name: "dog",
},
},
},
},
});
console.log(response); 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/8.17/evaluate-dfanalytics.html