配置管道
此功能处于 Beta 测试阶段。有关功能分级的更多信息,请参阅 API 分级。
本页介绍了如何创建和配置链路预测流水线。
创建流水线
构建新流水线的第一步是使用 gds.beta.pipeline.linkPrediction.create 创建一个。这会在流水线目录中存储一个类型为 Link prediction training pipeline(链路预测训练流水线)的可训练流水线对象。它代表了一个可配置的流水线,稍后可被调用进行训练,从而创建一个已训练的流水线。后者也是一个存储在目录中的模型,类型为 LinkPrediction。
语法
CALL gds.beta.pipeline.linkPrediction.create(
pipelineName: String
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
所创建流水线的名称。 |
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
示例
CALL gds.beta.pipeline.linkPrediction.create('pipe')
| 名称 (name) | nodePropertySteps | featureSteps | splitConfig | autoTuningConfig | parameterSpace |
|---|---|---|---|---|---|
"pipe" |
[] |
[] |
{negativeSamplingRatio=1.0, testFraction=0.1, trainFraction=0.1, validationFolds=3} |
{maxTrials=10} |
{LogisticRegression=[], MultilayerPerceptron=[], RandomForest=[]} |
这表明新创建的流水线尚不包含任何步骤,并且对拆分和训练参数使用了默认值。
添加节点属性
链路预测流水线可以在 mutate(变异)模式下执行一个或多个 GDS 算法,从而在投影图中创建节点属性。这些产生节点属性的步骤可以一个接一个地链式调用,创建的属性也可用于添加特征。此外,添加到流水线中的节点属性步骤在训练流水线时以及将已训练模型应用于预测时都会执行。
应添加的过程名称可以是完整的 GDS 过程名称,以 .mutate 结尾。末尾的 .mutate 可以省略,也可以使用简写形式,例如使用 node2vec 代替 gds.node2vec.mutate。但请注意,作为名称的一部分,必须提供层级限定。
例如,预处理算法可用作节点属性步骤。
语法
CALL gds.beta.pipeline.linkPrediction.addNodeProperty(
pipelineName: String,
procedureName: String,
procedureConfiguration: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
procedureName |
字符串 |
要添加到流水线中的过程名称。 |
procedureConfiguration |
Map |
用于生成过程配置的映射。它包含除 |
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
contextNodeLabels |
字符串列表 |
|
作为上下文添加的附加节点标签。 |
contextRelationshipTypes |
字符串列表 |
|
作为上下文添加的附加关系类型。 |
在训练期间,上下文配置与训练配置相结合,为每个节点属性步骤生成最终的节点标签和关系类型过滤器。
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
示例
CALL gds.beta.pipeline.linkPrediction.addNodeProperty('pipe', 'fastRP', {
mutateProperty: 'embedding',
embeddingDimension: 256,
randomSeed: 42
})
| 名称 (name) | nodePropertySteps | featureSteps | splitConfig | autoTuningConfig | parameterSpace |
|---|---|---|---|---|---|
"pipe" |
[{config={contextNodeLabels=[], contextRelationshipTypes=[], embeddingDimension=256, mutateProperty="embedding", randomSeed=42}, name="gds.fastRP.mutate"}] |
[] |
{negativeSamplingRatio=1.0, testFraction=0.1, trainFraction=0.1, validationFolds=3} |
{maxTrials=10} |
{LogisticRegression=[], MultilayerPerceptron=[], RandomForest=[]} |
添加链路特征
链路预测流水线执行一系列步骤来计算机器学习模型使用的特征。特征步骤会为给定的节点对计算特征向量。对于每一对节点,结果会连接成一个单一的链路特征向量。链路特征向量中特征的顺序遵循特征步骤的顺序。与节点属性步骤一样,特征步骤在训练和预测时都会执行。获取特征的支持方法描述如下下方。
语法
CALL gds.beta.pipeline.linkPrediction.addFeature(
pipelineName: String,
featureType: String,
configuration: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
featureType |
字符串 |
featureType 决定了计算链路特征所使用的方法。参见支持的类型。 |
配置 |
Map |
添加链路特征的配置。 |
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
nodeProperties |
字符串列表 |
否 |
用作输入的节点属性名称。 |
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
支持的特征类型
特征步骤可以使用输入图中现有的或由流水线添加的节点属性。对于每个潜在链路中的每个节点,nodeProperties 的值按配置的顺序连接成一个向量 f。也就是说,对于每个潜在链路,源节点的特征向量 与目标节点的特征向量
合并为一个单一的特征向量 f。
支持的特征类型描述如下
| 特征类型 | 公式 / 描述 |
|---|---|
L2 |
|
HADAMARD |
|
COSINE |
|
SAME_CATEGORY |
如果源和目标的类别值相同,则特征为 |
示例
CALL gds.beta.pipeline.linkPrediction.addFeature('pipe', 'hadamard', {
nodeProperties: ['embedding', 'age']
}) YIELD featureSteps
| featureSteps |
|---|
[{config={nodeProperties=["embedding", "age"]}, name="HADAMARD"}] |
执行流水线时,nodeProperties 必须存在于输入图中,或由先前的节点属性步骤创建。例如,embedding 属性可以由上一个示例创建,并且我们期望 age 已经存在于训练和预测时使用的内存图中。
配置关系拆分
链路预测训练流水线管理将关系拆分为多个集合,并将采样的负关系添加到其中一些集合中。配置拆分是可选的,如果省略,将使用默认设置进行拆分。
流水线的拆分配置可以通过使用 gds.model.list 查看,并且可以仅输出 splitConfig。
关系的拆分在内部按以下步骤进行
-
图根据训练时配置的指定
sourceNodeLabel、targetNodeLabel和targetRelationshipType进行过滤。 -
过滤后剩余的关系我们称之为正关系,它们被拆分为
test(测试)、train(训练)和feature-input(特征输入)集合。 -
符合
sourceNodeLabel和targetNodeLabel过滤条件的随机负关系被添加到test和train集合中。-
每个集合中负关系的数目是正关系数目乘以
negativeSamplingRatio。 -
负关系与正关系不重合。
-
如果指定了
negativeRelationshipType,则不进行采样,而是将图中该类型的所有关系根据test和train集合的大小比例进行分区,并添加为负关系。negativeRelationshipType的所有关系也必须符合sourceNodeLabel和targetNodeLabel过滤条件。
-
正关系和负关系的权重分别被赋予 1.0 和 0.0,以便进行区分。
train 和 test 关系集用于
-
确定每个训练或测试样本的标签(正或负)
-
识别要计算链路特征的节点对
但是,它们不被节点属性步骤中运行的算法所使用。这样做的原因是,否则模型会将预测目标(关系的存在)作为特征使用。
每个节点属性步骤都使用一个 feature-input 图。feature-input 图包含具有 sourceNodeLabel、targetNodeLabel 和 contextNodeLabels 的节点,以及来自 feature-input 集合加上 contextRelationshipTypes 的关系。此图用于计算节点属性和依赖于节点属性的特征。在 feature-input 图中生成的节点属性用于训练和测试。
语法
CALL gds.beta.pipeline.linkPrediction.configureSplit(
pipelineName: String,
configuration: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
配置 |
Map |
拆分关系的配置。 |
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
validationFolds |
整数 |
3 |
在模型选择期间使用的训练图拆分数量。 |
testFraction |
双精度浮点数 |
0.1 |
保留用于测试的图比例。必须在 (0, 1) 范围内。 |
trainFraction |
双精度浮点数 |
0.1 |
保留用于训练的 test-complement 集合比例。必须在 (0, 1) 范围内。 |
negativeSamplingRatio |
双精度浮点数 |
1.0 |
测试集和训练集中负样本与正样本的期望比例。更多详情见此处。它与 |
negativeRelationshipType |
字符串 |
不适用 |
指定哪些关系应用作负关系,并添加到 |
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
示例
CALL gds.beta.pipeline.linkPrediction.configureSplit('pipe', {
testFraction: 0.25,
trainFraction: 0.6,
validationFolds: 3
})
YIELD splitConfig
| splitConfig |
|---|
{negativeSamplingRatio=1.0, testFraction=0.25, trainFraction=0.6, validationFolds=3} |
我们现在重新配置了流水线的拆分,该配置将在训练期间应用。
作为一个例子,考虑一个包含“Person”和“City”节点以及“KNOWS”、“BORN”和“LIVES”关系的图。请注意,这与训练流水线中的示例相同。
假设我们按 sourceNodeLabel 和 targetNodeLabel 为 Person 以及 targetRelationshipType 为 KNOWS 进行过滤。过滤后的图如下所示
过滤后的图有 12 个关系。如果我们配置拆分为 testFraction 为 0.25 且 negativeSamplingRatio 为 1,它将随机抽取 12 * 0.25 = 3 个正关系加上 1 * 3 = 3 个负关系作为 test 集合。
然后,如果 trainFraction 为 0.6 且 negativeSamplingRatio 为 1,它将随机抽取 9 * 0.6 = 5.4 ≈ 5 个正关系加上 1 * 5 = 5 个负关系作为 train 集合。
剩余的 12 * (1 - 0.25) * (1 - 0.6) = 3.6 ≈ 4 个黄色关系是 feature-input 集合。
test 集合为蓝色,train 集合为红色,feature-input 集合为黄色。虚线表示负关系。假设添加了一个 contextNodeLabel 为 City 且 contextRelationshipType 为 BORN 的节点属性步骤。那么该步骤的 feature-input 图将是
feature-input 集合为黄色。添加模型候选者
流水线包含一个最初为空的模型候选者配置集合。该集合称为参数空间。每个模型候选者配置包含训练参数的固定值或范围。当存在范围时,范围内的值由自动调优算法确定,参见自动调优。必须使用以下过程之一将一个或多个模型配置添加到训练流水线的参数空间中
-
gds.beta.pipeline.linkPrediction.addLogisticRegression -
gds.beta.pipeline.linkPrediction.addRandomForest -
gds.alpha.pipeline.linkPrediction.addMLP
有关 GDS 中可用训练方法(逻辑回归、随机森林和多层感知机)的信息,请参见训练方法。
在训练流水线中,我们进一步解释了如何训练、评估和比较配置的模型候选者。
流水线的参数空间可以使用 gds.model.list 查看,并可选择仅输出 parameterSpace。
|
在训练流水线之前,必须向其添加至少一个模型候选者。 |
语法
CALL gds.beta.pipeline.linkPrediction.addLogisticRegression(
pipelineName: String,
config: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
config |
Map |
模型候选者的逻辑回归配置。该模型的允许参数在下表中定义。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
|
整数或映射 [1] |
|
是 |
每批次的节点数。 |
|
整数或映射 [1] |
|
是 |
最小训练轮数。 |
|
整数或映射 [1] |
|
是 |
最大训练轮数。 |
|
浮点数或映射 [1] |
|
是 |
学习率决定了每一轮在 Adam 优化器指定的方向上移动以最小化损失时的步长。 |
|
整数或映射 [1] |
|
是 |
无提升的最大连续轮数。 |
|
浮点数或映射 [1] |
|
是 |
被视为有效的损失最小改进值。 |
|
浮点数或映射 [1] |
|
是 |
用于逻辑回归的惩罚项。默认情况下,不应用惩罚。 |
|
浮点数或映射 [1] |
|
是 |
焦点损失因子的指数,使模型更关注训练集中困难的、分类错误的样本。默认值 |
|
浮点数列表 |
|
是 |
损失函数中每个类别的权重。列表长度必须为 2。第一个权重用于负样本(缺失关系),第二个用于正样本(实际关系)。 |
1. 映射应为 2. 该参数的范围在对数刻度上自动调优。 |
||||
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
CALL gds.beta.pipeline.linkPrediction.addRandomForest(
pipelineName: String,
config: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
config |
Map |
模型候选者的随机森林配置。该模型的允许参数在下表中定义。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
maxFeaturesRatio |
浮点数或映射 [3] |
|
是 |
寻找最佳拆分时要考虑的特征比例。 |
numberOfSamplesRatio |
浮点数或映射 [3] |
|
是 |
每个决策树考虑的样本比例。我们使用有放回采样。值为 |
numberOfDecisionTrees |
整数或映射 [3] |
|
是 |
决策树的数量。 |
maxDepth |
整数或映射 [3] |
|
是 |
决策树的最大深度。 |
minLeafSize |
整数或映射 [3] |
|
是 |
决策树叶节点所需的最小样本数。必须严格小于 |
minSplitSize |
整数或映射 [3] |
|
是 |
决策树中拆分内部节点所需的最小样本数。必须严格大于 |
criterion |
字符串 |
|
是 |
用于在决策树训练期间评估潜在节点拆分的不纯度准则。有效选项为 |
3. 映射应为 |
||||
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
CALL gds.alpha.pipeline.linkPrediction.addMLP(
pipelineName: String,
config: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
流水线的名称。 |
config |
Map |
模型候选者的多层感知机配置。该模型的允许参数在下表中定义。 |
| 名称 | 类型 | 默认 | 可选 | 描述 |
|---|---|---|---|---|
batchSize |
整数或映射 [4] |
|
是 |
每批次的节点数。 |
minEpochs |
整数或映射 [4] |
|
是 |
最小训练轮数。 |
maxEpochs |
整数或映射 [4] |
|
是 |
最大训练轮数。 |
learningRate [5] |
浮点数或映射 [4] |
|
是 |
学习率决定了每一轮在 Adam 优化器指定的方向上移动以最小化损失时的步长。 |
patience |
整数或映射 [4] |
|
是 |
无提升的最大连续轮数。 |
tolerance [5] |
浮点数或映射 [4] |
|
是 |
被视为有效的损失最小改进值。 |
penalty [5] |
浮点数或映射 [4] |
|
是 |
用于逻辑回归的惩罚项。默认情况下,不应用惩罚。 |
hiddenLayerSizes |
整数列表 |
|
是 |
表示每一层神经元数量的整数列表。默认值指定了一个具有 1 个隐藏层、100 个神经元的 MLP。 |
focusWeight |
浮点数或映射 [4] |
|
是 |
焦点损失因子的指数,使模型更关注训练集中困难的、分类错误的样本。默认值 |
classWeights |
浮点数列表 |
|
是 |
交叉熵损失中每个类别的权重。列表长度必须为 2。第一个权重用于负样本(缺失关系),第二个用于正样本(实际关系)。 |
4. 映射应为 5. 该参数的范围在对数刻度上自动调优。 |
||||
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
示例
我们可以向流水线添加多个模型候选者。
以下代码将添加一个具有默认配置的逻辑回归模型
CALL gds.beta.pipeline.linkPrediction.addLogisticRegression('pipe')
YIELD parameterSpace
以下代码将添加一个随机森林模型
CALL gds.beta.pipeline.linkPrediction.addRandomForest('pipe', {numberOfDecisionTrees: 10})
YIELD parameterSpace
以下代码将添加一个配置了类加权焦点损失和范围参数的多层感知机模型
CALL gds.alpha.pipeline.linkPrediction.addMLP('pipe',
{hiddenLayerSizes: [4, 2], penalty: 0.5, patience: 2, classWeights: [0.55, 0.45], focusWeight: {range: [0.0, 0.1]}})
YIELD parameterSpace
以下代码将添加一个具有范围参数的逻辑回归模型
CALL gds.beta.pipeline.linkPrediction.addLogisticRegression('pipe', {maxEpochs: 500, penalty: {range: [1e-4, 1e2]}})
YIELD parameterSpace
RETURN parameterSpace.RandomForest AS randomForestSpace, parameterSpace.LogisticRegression AS logisticRegressionSpace, parameterSpace.MultilayerPerceptron AS MultilayerPerceptronSpace
表 26. 结果
randomForestSpace
logisticRegressionSpace
MultilayerPerceptronSpace
[{criterion="GINI", maxDepth=2147483647, methodName="RandomForest", minLeafSize=1, minSplitSize=2, numberOfDecisionTrees=10, numberOfSamplesRatio=1.0}]
[{batchSize=100, classWeights=[], focusWeight=0.0, learningRate=0.001, maxEpochs=100, methodName="LogisticRegression", minEpochs=1, patience=1, penalty=0.0, tolerance=0.001}, {batchSize=100, classWeights=[], focusWeight=0.0, learningRate=0.001, maxEpochs=500, methodName="LogisticRegression", minEpochs=1, patience=1, penalty={range=[0.0001, 100.0]}, tolerance=0.001}]
[{batchSize=100, classWeights=[0.55, 0.45], focusWeight={range=[0.0, 0.1]}, hiddenLayerSizes=[4, 2], learningRate=0.001, maxEpochs=100, methodName="MultilayerPerceptron", minEpochs=1, patience=2, penalty=0.5, tolerance=0.001}]
流水线中的 parameterSpace 现在包含了四个不同的模型候选者,并扩展了默认值。在训练期间的模型选择过程中,将尝试每个指定的模型候选者。
这些是关于如何添加和配置模型候选者的简单示例。有关如何调整每种方法的配置参数的更多信息,请参见训练方法。
配置自动调优
为了找到好的模型,流水线支持自动调整训练算法的参数。可选地,可以使用下述过程来配置自动调优行为。否则,将使用默认的自动调优配置。目前,只能配置要评估的最大超参数设置试验次数。
语法
配置自动调优语法
CALL gds.alpha.pipeline.linkPrediction.configureAutoTuning(
pipelineName: String,
configuration: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
表 27. 参数
名称
类型
描述
pipelineName
字符串
所创建流水线的名称。
配置
Map
自动调优的配置。
表 28. 配置
名称
类型
默认
描述
maxTrials
整数
10
maxTrials 的值决定了在训练流水线时应评估和比较的最大允许模型候选者数量。如果参数空间中不存在范围,则 maxTrials 被忽略,并且参数空间中的每个模型候选者都会被评估。
表 29. 结果
名称
类型
描述
名称 (name)
字符串
流水线的名称。
nodePropertySteps
映射列表
节点属性步骤的配置列表。
featureSteps
映射列表
特征步骤的配置列表。
splitConfig
Map
用于定义模型训练前数据拆分的配置。
autoTuningConfig
Map
用于定义自动调优行为的配置。
parameterSpace
映射列表
模型参数配置列表,训练模式使用这些配置进行模型选择。
示例
以下代码将配置自动调优的最大试验次数
CALL gds.alpha.pipeline.linkPrediction.configureAutoTuning('pipe', {
maxTrials: 2
}) YIELD autoTuningConfig
表 30. 结果
autoTuningConfig
{maxTrials=2}
我们现在重新配置了自动调优,以便在训练期间最多尝试 2 个模型候选者。
我们可以向流水线添加多个模型候选者。
CALL gds.beta.pipeline.linkPrediction.addLogisticRegression('pipe')
YIELD parameterSpace
CALL gds.beta.pipeline.linkPrediction.addRandomForest('pipe', {numberOfDecisionTrees: 10})
YIELD parameterSpace
CALL gds.alpha.pipeline.linkPrediction.addMLP('pipe',
{hiddenLayerSizes: [4, 2], penalty: 0.5, patience: 2, classWeights: [0.55, 0.45], focusWeight: {range: [0.0, 0.1]}})
YIELD parameterSpace
CALL gds.beta.pipeline.linkPrediction.addLogisticRegression('pipe', {maxEpochs: 500, penalty: {range: [1e-4, 1e2]}})
YIELD parameterSpace
RETURN parameterSpace.RandomForest AS randomForestSpace, parameterSpace.LogisticRegression AS logisticRegressionSpace, parameterSpace.MultilayerPerceptron AS MultilayerPerceptronSpace
| randomForestSpace | logisticRegressionSpace | MultilayerPerceptronSpace |
|---|---|---|
[{criterion="GINI", maxDepth=2147483647, methodName="RandomForest", minLeafSize=1, minSplitSize=2, numberOfDecisionTrees=10, numberOfSamplesRatio=1.0}] |
[{batchSize=100, classWeights=[], focusWeight=0.0, learningRate=0.001, maxEpochs=100, methodName="LogisticRegression", minEpochs=1, patience=1, penalty=0.0, tolerance=0.001}, {batchSize=100, classWeights=[], focusWeight=0.0, learningRate=0.001, maxEpochs=500, methodName="LogisticRegression", minEpochs=1, patience=1, penalty={range=[0.0001, 100.0]}, tolerance=0.001}] |
[{batchSize=100, classWeights=[0.55, 0.45], focusWeight={range=[0.0, 0.1]}, hiddenLayerSizes=[4, 2], learningRate=0.001, maxEpochs=100, methodName="MultilayerPerceptron", minEpochs=1, patience=2, penalty=0.5, tolerance=0.001}] |
流水线中的 parameterSpace 现在包含了四个不同的模型候选者,并扩展了默认值。在训练期间的模型选择过程中,将尝试每个指定的模型候选者。
|
这些是关于如何添加和配置模型候选者的简单示例。有关如何调整每种方法的配置参数的更多信息,请参见训练方法。 |
配置自动调优
为了找到好的模型,流水线支持自动调整训练算法的参数。可选地,可以使用下述过程来配置自动调优行为。否则,将使用默认的自动调优配置。目前,只能配置要评估的最大超参数设置试验次数。
语法
CALL gds.alpha.pipeline.linkPrediction.configureAutoTuning(
pipelineName: String,
configuration: Map
)
YIELD
name: String,
nodePropertySteps: List of Map,
featureSteps: List of Map,
splitConfig: Map,
autoTuningConfig: Map,
parameterSpace: List of Map
| 名称 | 类型 | 描述 |
|---|---|---|
pipelineName |
字符串 |
所创建流水线的名称。 |
配置 |
Map |
自动调优的配置。 |
| 名称 | 类型 | 默认 | 描述 |
|---|---|---|---|
maxTrials |
整数 |
10 |
|
| 名称 | 类型 | 描述 |
|---|---|---|
名称 (name) |
字符串 |
流水线的名称。 |
nodePropertySteps |
映射列表 |
节点属性步骤的配置列表。 |
featureSteps |
映射列表 |
特征步骤的配置列表。 |
splitConfig |
Map |
用于定义模型训练前数据拆分的配置。 |
autoTuningConfig |
Map |
用于定义自动调优行为的配置。 |
parameterSpace |
映射列表 |
模型参数配置列表,训练模式使用这些配置进行模型选择。 |
示例
CALL gds.alpha.pipeline.linkPrediction.configureAutoTuning('pipe', {
maxTrials: 2
}) YIELD autoTuningConfig
| autoTuningConfig |
|---|
{maxTrials=2} |
我们现在重新配置了自动调优,以便在训练期间最多尝试 2 个模型候选者。