The content discusses the challenges of setting configuration parameters for the elastic-net model and introduces a model evaluation and parameter selection function to address this issue. The function allows users to provide a set of candidate values for the parameters and uses a stored procedure to select the best one based on model evaluation. The parameter selection process can be time-consuming, but the function offers two ways to boost runtime performance: preprocessing the training data with LMS sketch and using the successive-halving and hyperband algorithm for early-stop training computation. However, it is noted that the algorithm may fail to find the best candidates as it is a greedy algorithm.
------

SET SCHEMA DM_PAL;

DROP TABLE #PAL_PARAMETER_TBL;
CREATE LOCAL TEMPORARY COLUMN TABLE #PAL_PARAMETER_TBL 
	("PARAM_NAME" VARCHAR(256), "INT_VALUE" INTEGER, "DOUBLE_VALUE" DOUBLE, "STRING_VALUE" VARCHAR(1000));
INSERT INTO #PAL_PARAMETER_TBL VALUES ('ALG', 6, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('HAS_ID', 1, NULL, NULL);
--parameter selection parameters
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RESAMPLING_METHOD', NULL, NULL, 'cv_sha'); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('PARAM_SEARCH_STRATEGY', NULL, NULL, 'grid');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('EVALUATION_METRIC', NULL, NULL, 'RMSE');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('REPEAT_TIMES', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('FOLD_NUM', 2, NULL, NULL);
INSERT INTO #PAL_PARAMETER_TBL VALUES ('ENET_LAMBDA_VALUES', NULL, NULL, '{0.1,0.01,0.05}');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('ENET_ALPHA_VALUES', NULL, NULL, '{0.5,0.2,0.1}');
INSERT INTO #PAL_PARAMETER_TBL VALUES ('RESOURCE', NULL, NULL, 'MAX_ITERATION'); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('MAX_RESOURCE', 100, NULL, NULL); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('MIN_RESOURCE_RATE', NULL, 0.05, NULL); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('REDUCTION_RATE', NULL, 2.0, NULL); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('AGGRESSIVE_ELIMINATION', 0, NULL, NULL); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('PS_VERBOSE', 1, NULL, NULL); 
INSERT INTO #PAL_PARAMETER_TBL VALUES ('SEED', 2022, NULL, NULL);

DROP TABLE PAL_ENET_MLR_DATA_TBL;
CREATE COLUMN TABLE PAL_ENET_MLR_DATA_TBL ( "ID" INT,"Y" DOUBLE,"V1" DOUBLE,"V2" DOUBLE,"V3" DOUBLE);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (0,0.5,0.13,0.13,0.33);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (1,0.15,0.14,2.33,0.34);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (2,0.25,0.15,0.53,0.36);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (3,0.35,0.16,0.33,0.35);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (4,0.45,0.17,3.33,0.37);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (5,0.55,0.18,0.53,0.38);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (6,0.65,0.19,0.33,0.39);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (7,0.75,0.19,0.33,0.31);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (8,0.85,0.11,0.68,0.32);
INSERT INTO PAL_ENET_MLR_DATA_TBL VALUES (9,0.95,0.12,10.33,0.33);

CALL _SYS_AFL.PAL_LINEAR_REGRESSION(PAL_ENET_MLR_DATA_TBL,"#PAL_PARAMETER_TBL", ?, ?, ?,?,? );
