线性回归

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

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

权重采用特征大小向量 w 和偏差 b 的形式。然后损失函数定义为

MSE(wx + b)

其中 MSE均方误差

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

调整超参数

为了平衡模型的偏差与方差、训练的速度与内存消耗等问题,GDS 公开了几个可以调整的超参数。下面将对每个参数进行描述。

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

有关训练的统计信息将在 neo4j 调试日志中报告。

最大 Epoch 数

此参数定义训练的最大 Epoch 数。无论模型的质量如何,训练都将在这么多 Epoch 后终止。请注意,如果损失收敛,训练也可以更早停止(请参阅 耐心容差)。

设置此参数对于限制模型的训练时间很有用。限制计算预算可以起到正则化的作用,并减轻过拟合的风险,过拟合在 Epoch 数较多时会成为风险。

最小 Epoch 数

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

设置此参数可以避免过早停止,但也增加了模型的最小训练时间。

耐心

此参数定义无生产力的连续 Epoch 的最大数量。如果一个 Epoch 至少没有改善当前损失的 tolerance 分数,则该 Epoch 为无生产力的。

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

设置此参数可以导致更稳健的训练,并避免类似于 minEpochs 的过早终止。但是,较高的耐心值可能会导致运行比必要的 Epoch 数更多。

根据我们的经验,patience 的合理值在 13 之间。

容差

此参数定义何时将一个 epoch 视为无生产力,并与patience一起定义训练的收敛标准。如果一个 epoch 的训练损失没有至少提高当前损失的tolerance分数,则该 epoch 被视为无生产力。

较低的容差值会导致更敏感的训练,训练时间更长的概率更高。较高的容差值意味着训练不太敏感,因此会导致更多 epoch 被计为无生产力。

学习率

更新权重时,我们根据损失函数的梯度,沿着 Adam 优化器指示的方向移动。每次权重更新移动多少,可以通过learningRate参数配置。

批大小

此参数定义每个批次中包含多少个训练样本。

使用concurrency个线程并发计算批次上的梯度。在每个 epoch 结束时,梯度会先求和再进行缩放,然后再更新权重。batchSize不会影响模型质量,但可以用来调整训练速度。更大的batchSize会增加计算的内存消耗。