lassoCV

语法

lassoCV(ds, yColName, xColNames, [alpha=[0.01,0.1,1.0]], [intercept=true], [normalize=false], [maxIter=1000], [tolerance=0.0001], [positive=false], [swColName], [checkInput=true])

详情

使用五折交叉验证方法进行 lasso 回归估计,输出最优参数对应的模型。结果为一个字典,包含以下 key:

  • modelName:模型名称。LassoCV 方法对应的模型名为 "LassoCV"。
  • coefficients:模型的回归系数。
  • intercept:截距。
  • dual_gap:优化结束时的对偶间隙。
  • tolerance:迭代中止的边界差值。
  • iterations:迭代次数。
  • xColNames:数据源中自变量的列名。
  • predict:用于预测的函数。
  • alpha:交叉验证选择的惩罚量。

参数

alphas 是浮点型标量或向量,表示乘以 L1 范数惩罚项的系数。默认值是 [0.01, 0.1, 1.0]。

注:alphas 参数外,其它参数都和 lasso 的参数相同,参数描述可参考 lasso。这里仅说明 alphas 参数。

例子

y = [225.720746,-76.195841,63.089878,139.44561,-65.548346,2.037451,22.403987,-0.678415,37.884102,37.308288]
x0 = [2.240893,-0.854096,0.400157,1.454274,-0.977278,-0.205158,0.121675,-0.151357,0.333674,0.410599]
x1 = [0.978738,0.313068,1.764052,0.144044,1.867558,1.494079,0.761038,0.950088,0.443863,-0.103219]
t = table(y, x0, x1);

lassoCV(t, `y, `x0`x1);

返回如下:

dual_gap->0.0009
modelName->lassoCV
intercept->0.0313
alpha->0.0100
coefficients->[94.4493,14.3045]
predict->coordinateDescentPredict
xColNames->[x0,x1]
tolerance->0.0001
iterations->5

语法

lasso(ds, yColName, xColNames, [alpha=1.0], [intercept=true], [normalize=false], [maxIter=1000], [tolerance=0.0001], [positive=false], [swColName], [checkInput=true])

参数

ds 是内存表或通常用 sqlDS 函数生成的数据源。

yColName 是字符串,表示数据源中因变量的列名。

xColNames 是字符串标量或向量,表示数据源中自变量的列名。

alpha 是浮点数,表示乘以 L1 范数惩罚项的系数。默认值是1.0。

intercept 是布尔值,表示是否回归模型包含截距。默认值为 true。

normalize 是布尔值。默认值为 false。若设为 true,则所有自变量均会进行如下标准化:减去平均值,然后除以 L2 范数。若 intercept 为 false,该参数会被忽略。

maxIter 是正整数,表示最大迭代次数。默认值是1000。

tolerance 是浮点数,表示迭代中止的边界差值。默认值是0.0001。

positive 是布尔值,表示是否强制系数为正数。默认值是 false。

swColName 字符串,表示列名,必须为 ds 中存在的列名。如果未指定该参数,则所有样本的权重都默认为1;如果指定该参数,则将指定的列作为样本的权重。

checkInput 布尔值,表示是否检查输入参数(yColName, xColNamesswColName)的合法性。
  • checkInput=true(默认值),则会检查这些参数中是否存在无效值(NULL, nan 或 Inf),若存在,则会报错;

  • checkInput=false,则不检查无效值,则将 NULL 当作 DOUBLE 类型的正数最小值处理。

注: 强烈建议开启 checkInput,以检查输入参数的有效性。如果不开启 checkInput,则必须确保输入参数中不存在无效值,并且中间计算过程中不会产生无效值,否则可能得到一个无用的模型。

详情

进行 lasso 回归估计。

最小化以下目标函数:


lasso

例子

y = [225.720746,-76.195841,63.089878,139.44561,-65.548346,2.037451,22.403987,-0.678415,37.884102,37.308288];
x0 = [2.240893,-0.854096,0.400157,1.454274,-0.977278,-0.205158,0.121675,-0.151357,0.333674,0.410599];
x1 = [0.978738,0.313068,1.764052,0.144044,1.867558,1.494079,0.761038,0.950088,0.443863,-0.103219];
t = table(y, x0, x1);

lasso(t, `y, `x0`x1);

如果 t 是一个 DFS 表,则应使用数据源作为输入:

lasso(sqlDS(<select * from t>), `y, `x0`x1);