应用训练好的模型进行预测

此功能处于 Alpha 阶段。有关功能分级的更多信息,请参阅API 分级

在之前的章节中,我们已经了解了如何构建节点回归训练管道并对其进行训练以生成回归模型。在训练之后,生成的、可运行的模型类型为 NodeRegression,并位于模型目录中。该回归模型可以应用于图目录中的图,以预测以前未见过节点的属性值。

由于模型是根据使用特征管道创建的特征进行训练的,因此相同的特征管道会存储在模型中并在预测时执行。与训练期间一样,特征管道中节点属性步骤创建的中间节点属性是瞬态的,执行后不可见。

预测图必须包含管道所需的属性,并且使用的数组属性必须与训练图具有相同的维度。如果预测图和训练图不同,那么它们具有相似的来源和语义也是有益的,这样模型才能很好地泛化。

语法

每种模式下的节点回归预测语法
在流模式下运行节点回归
CALL gds.alpha.pipeline.nodeRegression.predict.stream(
  graphName: String,
  configuration: Map
) YIELD
  nodeId: Integer,
  predictedValue: Float
表 1. 参数
名称 类型 默认值 可选 描述

graphName

字符串

不适用

存储在目录中的图的名称。

configuration

Map

{}

算法特定配置和/或图过滤配置。

表 2. 配置
名称 类型 默认值 可选 描述

modelName

字符串

不适用

模型目录中 NodeRegression 模型的名称。

targetNodeLabels

字符串列表

来自 trainConfig

使用给定的 targetNodeLabels 过滤指定的图。

relationshipTypes

字符串列表

来自 trainConfig

使用给定的关系类型过滤指定的图。

concurrency

整数

4 [1]

运行算法所用的并发线程数。

jobId

字符串

内部生成

可以提供一个 ID,以便更轻松地跟踪算法的进度。

logProgress

布尔值

true

如果禁用,进度百分比将不会被记录。

1. 在GDS 会话中,默认值为可用处理器数量

表 3. 结果
名称 类型 描述

nodeId

整数

节点 ID。

predictedValue

浮点数

此节点的预测属性值。

在变异模式下运行节点回归
CALL gds.alpha.pipeline.nodeRegression.predict.mutate(
  graphName: String,
  configuration: Map
) YIELD
  preProcessingMillis: Integer,
  computeMillis: Integer,
  postProcessingMillis: Integer,
  mutateMillis: Integer,
  nodePropertiesWritten: Integer,
  configuration: Map
表 4. 参数
名称 类型 默认值 可选 描述

graphName

字符串

不适用

存储在目录中的图的名称。

configuration

Map

{}

算法特定配置和/或图过滤配置。

表 5. 配置
名称 类型 默认值 可选 描述

modelName

字符串

不适用

模型目录中 NodeRegression 模型的名称。

mutateProperty

字符串

不适用

GDS 图中用于写入预测属性的节点属性。

targetNodeLabels

字符串列表

来自 trainConfig

使用给定的 targetNodeLabels 过滤指定的图。

relationshipTypes

字符串列表

来自 trainConfig

使用给定的关系类型过滤指定的图。

concurrency

整数

4 [2]

运行算法所用的并发线程数。

jobId

字符串

内部生成

可以提供一个 ID,以便更轻松地跟踪算法的进度。

logProgress

布尔值

true

如果禁用,进度百分比将不会被记录。

2. 在GDS 会话中,默认值为可用处理器数量

表 6. 结果
名称 类型 描述

preProcessingMillis

整数

图预处理的毫秒数。

computeMillis

整数

运行算法的毫秒数。

postProcessingMillis

整数

计算全局指标的毫秒数。

mutateMillis

整数

向内存图添加属性的毫秒数。

nodePropertiesWritten

整数

写入的节点属性数量。

configuration

Map

用于运行算法的配置。

示例

在以下示例中,我们将展示如何使用回归模型来预测内存图中节点的属性值。为此,我们必须首先在模型目录中注册一个已训练好的模型。我们将使用在训练示例中训练的模型,该模型名为'nr-pipeline-model'

CALL gds.alpha.pipeline.nodeRegression.predict.stream('myGraph', {
  modelName: 'nr-pipeline-model',
  targetNodeLabels: ['UnknownHouse']
}) YIELD nodeId, predictedValue
WITH gds.util.asNode(nodeId) AS houseNode, predictedValue AS predictedPrice
RETURN
  houseNode.color AS houseColor, predictedPrice
  ORDER BY predictedPrice
表 7. 结果
houseColor predictedPrice

"米色"

87.26599999999999

"黄色"

107.572

"粉色"

124.43800000000002

正如我们所看到的,模型预测“米色”房子比“黄色”房子便宜。考虑到“黄色”房子只有一层,这可能看起来不准确。为了获得更符合我们预期的预测,我们可能需要调整模型候选参数。

变异

mutate 执行模式会用一个包含每个节点预测值的新节点属性来更新指定的图。新属性的名称通过强制配置参数 mutateProperty 指定。结果是一个单一的摘要行,包括时间信息以及写入了多少属性。当多个算法结合使用时,mutate 模式特别有用。

有关 mutate 模式的更多详细信息,请参阅变异

CALL gds.alpha.pipeline.nodeRegression.predict.mutate('myGraph', {
  targetNodeLabels: ['UnknownHouse'],
  modelName: 'nr-pipeline-model',
  mutateProperty: 'predictedPrice'
}) YIELD nodePropertiesWritten
表 8. 结果
nodePropertiesWritten

3

输出告诉我们,我们为每个 UnknownHouse 节点添加了一个属性。要使用此属性,我们可以使用 predictedPrice 属性运行另一个算法,或者使用 gds.graph.nodeProperty.stream 检查它。

© . All rights reserved.