stochasticLinearRegression
stochasticLinearRegression
引入版本:v20.1.0
该函数实现了随机线性回归。 它支持以下自定义参数:
- 学习率
- L2 正则化系数
- 小批量大小
它还提供了一些用于更新权重的方法:
- Adam (默认使用)
- 普通 SGD
- Momentum
- Nesterov
用法
该函数的使用分为两个步骤:拟合模型以及在新数据上进行预测。
- 模型拟合
用于拟合时,可以使用如下形式的查询:
在这里,我们还需要向 train_data 表中插入数据。
参数的数量不是固定的,只取决于传递给 linearRegressionState 的参数个数。
它们都必须是数值类型的值。
请注意,目标值所在的列 (也就是我们希望模型学会预测的值) 需要作为第一个参数传入。
- 预测
将状态保存到表中之后,我们可以多次使用它进行预测,或者将其与其他状态合并,以创建新的、效果更好的模型。
该查询将返回一列预测值。
注意 evalMLMethod 的第一个参数是 AggregateFunctionState 对象,后续参数是特征列。
test_data 是一张类似于 train_data 的表,但可能不包含目标值。
注意
- 要合并两个模型,可以编写如下查询:
其中 your_models 表同时包含这两个模型。
此查询将返回一个新的 AggregateFunctionState 对象。
- 如果未使用
-State组合器,则可以在不保存模型的情况下获取已创建模型的权重,以供自行使用。
像这样的查询会对模型进行拟合并返回其权重——前几个值是与模型参数对应的权重,最后一个是偏置项。 因此在上面的示例中,该查询将返回一个包含 3 个值的列。
语法
参数
learning_rate— 在执行梯度下降步骤时用于步长的系数。学习率过大会导致模型权重发散趋于无穷大。默认值为0.00001。Float64l2_regularization_coef— L2 正则化系数,有助于防止过拟合。默认值为0.1。Float64mini_batch_size— 在一次梯度下降步骤中要计算梯度并求和的元素数量。纯随机梯度下降仅使用一个元素,而使用较小的小批量 (约 10 个元素) 可以使梯度更新更加稳定。默认值为15。UInt64method— 更新权重的方法:Adam(默认) 、SGD、Momentum、Nesterov。Momentum和Nesterov需要稍多的计算和内存,但在随机梯度方法的收敛速度和稳定性方面通常更有优势。const Stringtarget— 需要学习并预测的目标值 (因变量) 。必须为数值类型。Float*x1, x2, ...— 特征值 (自变量) 。必须全部为数值类型。Float*
返回值
返回训练好的线性回归模型权重。前面的值对应模型参数,最后一个值为偏置 (bias) 。使用 evalMLMethod 进行预测。Array(Float64)
示例
训练模型
进行预测
获取模型权重
另请参阅