参数说明:
参数elasticNetParam:
取值范围[0,1], 取值1用的是L1正则化,取值0用的是L2正则化,否则取值是elasticNet正则化,源码如下:
// LinearRegression的train方法中
val effectiveL1RegParam = $(elasticNetParam) * effectiveRegParam
val effectiveL2RegParam = (1.0 - $(elasticNetParam)) * effectiveRegParam
参数loss:使用square error还是huber
// default是SquaredError,可以设置为Huber
def setLoss(value: String): this.type = set(loss, value)
setDefault(loss -> SquaredError)
补充:
-
线性回归,是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式:,其优化的目标是最小化损失函数,
-
可以用mean square error 均方误差(MSE):,引入正则项,为防止过拟合,一般需要加入正则项,有三种:
- L1正则项,此时线性回归又叫Lasso回归:
- L2正则项,此时线性回归又叫岭回归:
- elastic Net 弹性网络,是在岭回归和Lasso回归中进行了折中,通过混合比 elasticNetParam :
- 也可以用 Huber,方程是:,其中:
- Fitting with huber loss only supports none and L2 regularization. 只支持L2正则。