线性回归

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

线性回归是一种基础的监督机器学习回归方法。它通过最小化取决于权重矩阵和训练数据的损失函数来训练模型。损失函数可以通过例如梯度下降法来最小化。Neo4j 图数据科学使用 Adam 优化器,这是一种梯度下降类算法。

权重以特征大小的向量 w 和偏差 b 的形式存在。损失函数定义为

MSE(wx + b)

其中 MSE 是均方误差。

为了避免过拟合,可以在损失函数中添加正则化项。Neo4j 图数据科学支持 l2 正则化选项,该选项可以使用 penalty 参数进行配置。

调整超参数

为了平衡模型的偏差与方差、训练速度与内存消耗等事项,GDS 提供了若干可调整的超参数。每一项的说明如下。

在基于梯度下降的训练中,我们尝试为模型找到最佳权重。在每个 epoch 中,我们处理所有训练样本以计算损失和权重的梯度。这些梯度随后被用于更新权重。正如 https://arxiv.org/pdf/1412.6980.pdf 中所述,我们在更新时使用 Adam 优化器。

有关训练的统计信息记录在 neo4j 调试日志中。

最大迭代次数 (Max Epochs)

此参数定义训练的最大迭代次数(epoch)。无论模型质量如何,训练都会在达到此次数后终止。请注意,如果损失函数收敛,训练也可能提前停止(参见耐心值 (Patience) 和 容差 (Tolerance))。

设置此参数有助于限制模型的训练时间。限制计算预算可以起到正则化作用并减轻过拟合,当轮次过多时,过拟合会成为一个风险。

最小迭代次数 (Min Epochs)

此参数定义训练的最小迭代次数。无论模型质量如何,训练至少会运行这么多轮。

设置此参数有助于避免提前停止,但也会增加模型的最小训练时间。

耐心值 (Patience)

此参数定义了非生产性连续 epoch 的最大次数。如果一个 epoch 未能将训练损失改进至少 tolerance(容差)比例,则该 epoch 被视为非生产性的。

假设训练运行了 minEpochs 次,此参数定义了训练何时收敛。

设置此参数可以使训练更加稳健,并类似于 minEpochs 避免过早终止。然而,过高的耐心值可能导致运行多于必要的 epoch。

根据我们的经验,patience 的合理取值范围在 1 到 3 之间。

容差 (Tolerance)

此参数定义了何时认为一个 epoch 是非生产性的,它与 patience 一起定义了训练的收敛准则。如果一个 epoch 未能将训练损失改进至少 tolerance(容差)比例,则该 epoch 被视为非生产性的。

较低的容差会带来更敏感的训练,更有可能延长训练时间。较高的容差意味着训练不那么敏感,从而导致更多的 epoch 被计为非生产性。

学习率

在更新权重时,我们根据损失函数的梯度,沿着 Adam 优化器指定的方向移动。你可以通过 learningRate(学习率)参数配置每次权重更新的步长。

批大小 (Batch size)

此参数定义了单个批次(batch)中包含多少个训练样本。

梯度是在批次上使用 concurrency 个线程并发计算的。在 epoch 结束时,梯度会被累加并缩放,然后用于更新权重。batchSize 不会影响模型质量,但可用于调整训练速度。较大的 batchSize 会增加计算的内存消耗。

© . This site is unofficial and not affiliated with Neo4j, Inc.