数据帧分析限制

编辑

以下限制和已知问题适用于 Elastic 数据帧分析功能的 8.16.0 版本。这些限制被分为以下几类:

  • 平台限制 与托管 Elastic Stack 机器学习功能的平台相关。
  • 配置限制 适用于数据帧分析作业的配置过程。
  • 操作限制 会影响正在运行的数据帧分析作业的行为。

平台限制

编辑
CPU 调度改进仅适用于 Linux 和 MacOS
编辑

当同时运行许多机器学习作业且 CPU 资源不足时,必须优先考虑 JVM 性能,以确保搜索和索引延迟保持在可接受的范围内。为此,在 Linux 和 MacOS 环境中 CPU 受限时,本机分析进程的 CPU 调度优先级将降低,以优先处理 Elasticsearch JVM。此改进不适用于 Windows 环境。

配置限制

编辑
不支持跨集群搜索
编辑

数据帧分析不支持跨集群搜索。

不支持嵌套字段
编辑

数据帧分析作业不支持嵌套字段。在分析过程中会忽略这些字段。如果选择嵌套字段作为分类或回归分析的自变量,则会发生错误。

无法更新数据帧分析作业
编辑

您无法更新数据帧分析配置。请删除数据帧分析作业并创建一个新的作业。

数据帧分析内存限制
编辑

数据帧分析只能执行适合机器学习可用内存的分析。目前不支持溢出到磁盘。有关常规机器学习设置,请参阅 Elasticsearch 中的机器学习设置

当您创建数据帧分析作业并且由于模型太大而无法放入 JVM 中导致推理步骤失败时,请按照 此 GitHub 问题 中的步骤进行变通处理。

数据帧分析作业的训练文档数不能超过 232
编辑

使用超过 232 个文档进行训练的数据帧分析作业无法启动。此限制仅适用于参与模型训练的文档。如果您的源索引包含超过 232 个文档,请将 training_percent 设置为表示少于 232 个文档的值。

7.8 版本中创建的训练模型不向后兼容
编辑

在 7.8.0 版本中创建的训练模型与较旧的节点版本不向后兼容。在混合集群环境中,所有节点都必须至少为 7.8.0 才能使用在 7.8.0 节点上创建的模型。

操作限制

编辑
删除数据帧分析作业不会删除目标索引
编辑

删除数据帧分析作业 API 不会删除包含数据帧分析标注数据的目标索引。必须单独删除该索引。

数据帧分析作业运行时间可能会有所不同
编辑

数据帧分析作业的运行时间取决于许多因素,例如数据集中的数据点数、分析类型、分析中包含的字段数、提供的 超参数、分析字段的类型等等。因此,不存在适用于所有或大多数情况的通用运行时间值。数据帧分析作业的运行时间可能从几分钟到极端情况下的几小时不等。

运行时间会随着分析字段数量的增加而近乎线性地增加。对于超过 100,000 个数据点的数据集,请从较低的训练百分比开始。运行一些数据帧分析作业以查看运行时间如何随着数据点数量的增加而缩放,以及结果质量如何随着训练百分比的增加而缩放。

数据帧分析作业在 Elasticsearch 升级后可能会重新启动
编辑

在以下情况下,数据帧分析作业可能会从头开始重新启动:

  • 在 Elasticsearch 更新期间作业正在进行中;
  • 作业在具有更高版本的节点上恢复;
  • 结果格式已更改,需要目标索引中不同的映射。

如果满足上述任何条件,则数据帧分析作业的目标索引将被删除,并且作业将从头开始重新启动——无论作业处于哪个阶段。

分析字段中具有多元素数组值的文档将被跳过
编辑

如果文档中分析字段(受数据帧分析影响的字段)的值是包含多个元素的数组,则在分析过程中将跳过包含此字段的文档。

异常检测字段类型
编辑

异常检测需要数值或布尔数据进行分析。算法不支持缺失值,因此将忽略数据类型不是数值或布尔值的字段。包含字段包含缺失值、空值或数组的文档也将被忽略。因此,目标索引可能包含没有异常值的文档。这些文档仍然会从源索引重新索引到目标索引,但它们不包含在异常检测分析中,因此不会计算异常值。

回归字段类型
编辑

回归支持数值、布尔值、文本、关键字和 IP 字段。它也容忍缺失值。支持的字段包含在分析中,其他字段将被忽略。包含字段包含数组的文档也将被忽略。目标索引中不包含结果字段的文档不包含在回归分析中。

分类字段类型
编辑

分类支持具有数值、布尔值、文本、关键字或 IP 数据类型的字段。它也容忍缺失值。支持的字段包含在分析中,其他字段将被忽略。包含字段包含数组的文档也将被忽略。目标索引中不包含结果字段的文档不包含在分类分析中。

类别大小不平衡会影响分类性能
编辑

如果您的训练数据非常不平衡,则分类分析可能无法提供良好的预测结果。尽量避免高度不平衡的情况。我们建议至少有每个类别的 50 个示例,并且训练数据中多数类与少数类标签的比率不超过 10:1。如果您的训练数据集非常不平衡,请考虑对多数类进行下采样,对少数类进行上采样或收集更多数据。

深度嵌套的对象会影响推理性能
编辑

如果您运行推理的数据包含具有点分隔和嵌套字段的一系列组合的文档(例如:{"a.b": "c", "a": {"b": "c"},...}),则操作的性能可能会稍微慢一些。为了获得最佳性能,请考虑使用尽可能简单的映射。

计算特征重要性可能会显著降低分析运行时性能
编辑

对于复杂的模型(例如具有许多深度树的模型),计算特征重要性需要更多时间。如果您需要减少运行时间,请尝试以下策略:禁用特征重要性、减少训练数据量(例如,通过降低训练百分比)、设置 超参数 值或仅选择与分析相关的字段。