stochasticLinearRegression
该函数实现了随机线性回归。它支持通过参数自定义学习率、L2 正则化系数和小批量大小,并提供多种用于更新权重的算法(默认使用 Adam,以及 simple SGD、Momentum 和 Nesterov)。
参数
共有 4 个可配置参数。它们按顺序传递给函数,但不需要传入全部四个参数——未指定的将使用默认值,不过要得到效果较好的模型通常需要对部分参数进行调优。
learning rate是在执行梯度下降步骤时用于缩放步长的系数。过大的 learning rate 可能导致模型权重发散为无穷大。默认值为0.00001。l2 regularization coefficient可以帮助防止过拟合。默认值为0.1。mini-batch size用于设置每次梯度下降步骤中参与梯度计算和累加的元素数量。纯随机梯度下降使用单个元素,但使用较小的 batch(大约 10 个元素)可以让梯度更新更加稳定。默认值为15。method for updating weights的可选值为:Adam(默认)、SGD、Momentum和Nesterov。Momentum和Nesterov需要稍多的计算和内存,但在随机梯度方法的收敛速度和稳定性方面通常更有帮助。
用法
stochasticLinearRegression 的使用分为两个步骤:拟合模型和对新数据进行预测。为了拟合模型并保存其状态以供后续使用,我们使用 -State 组合器,它会保存状态(例如模型权重)。
要进行预测,我们使用函数 evalMLMethod,该函数以状态和要预测的特征作为参数。
1. 拟合
可以使用如下查询示例。
在这里,我们还需要向 train_data 表中插入数据。参数的数量不是固定的,只取决于传入 linearRegressionState 的参数个数。所有参数都必须是数值类型。
请注意,作为目标值(即我们希望学习预测的值)的那一列需要作为第一个参数传入。
2. 预测
在将状态保存到表中之后,我们可以多次使用它进行预测,甚至可以将其与其他状态合并,从而创建新的、更优的模型。
该查询将返回一列预测值。注意,evalMLMethod 的第一个参数是 AggregateFunctionState 类型的对象,后续参数是特征列。
test_data 是一个与 train_data 类似的表,但可能不包含目标值。
注意事项
-
要合并两个模型,用户可以创建如下查询:
sql SELECT state1 + state2 FROM your_models其中your_models表包含这两个模型。该查询将返回新的AggregateFunctionState对象。 -
如果未使用
-State组合器,用户可以在不保存模型的情况下获取已创建模型的权重,用于自己的用途。sql SELECT stochasticLinearRegression(0.01)(target, param1, param2) FROM train_data此类查询将对模型进行拟合并返回其权重——前面的值是与模型参数对应的权重,最后一个值是偏置项。因此,在上面的示例中,该查询将返回一个包含 3 个值的列。
另请参阅