线性回归

此功能处于 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 的合理取值范围在 13 之间。

容差 (Tolerance)

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

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

学习率

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

批大小 (Batch size)

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

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