The content discusses the ROCKET algorithm, which is an efficient method for time series classification. It transforms input time series using random convolutional kernels, allowing for accurate classification with less computational expense. The algorithm can be implemented with a simple classifier, such as multi-class logistic regression. There are also two variants of the algorithm, MiniRocket and MultiRocket, which offer faster processing and improved accuracy, respectively. The algorithm supports both univariate and multivariate time series.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_ROCKET_DATA_TBL;
CREATE COLUMN TABLE PAL_ROCKET_DATA_TBL (
    "RECORD_ID" INTEGER,
    "VAL_01"     DOUBLE,
    "VAL_02"     DOUBLE,
    "VAL_03"     DOUBLE,
    "VAL_04"     DOUBLE,
    "VAL_05"     DOUBLE,
    "VAL_06"     DOUBLE,
    "VAL_07"     DOUBLE,
    "VAL_08"     DOUBLE,
    "VAL_09"     DOUBLE,
    "VAL_10"     DOUBLE,
    "VAL_11"     DOUBLE,
    "VAL_12"     DOUBLE,
    "VAL_13"     DOUBLE,
    "VAL_14"     DOUBLE,
    "VAL_15"     DOUBLE,
    "VAL_16"     DOUBLE
);

INSERT INTO PAL_ROCKET_DATA_TBL VALUES (0,1.598,1.599,1.571,1.550,1.507,1.434,1.369,1.305,1.210,1.117,1.024,0.926,0.828,0.739,0.643,0.556);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (1,1.701,1.671,1.619,1.547,1.475,1.391,1.306,1.237,1.153,1.070,0.985,0.899,0.816,0.733,0.658,0.581);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (2,1.722,1.695,1.657,1.606,1.512,1.414,1.314,1.213,1.113,1.015,0.920,0.828,0.740,0.658,0.586,0.501);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (3,1.726,1.660,1.573,1.496,1.409,1.332,1.246,1.159,1.073,0.987,0.901,0.815,0.730,0.644,0.558,0.484);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (4,1.779,1.761,1.703,1.611,1.492,1.369,1.245,1.121,1.011,0.900,0.786,0.679,0.580,0.502,0.415,0.333);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (5,1.800,1.743,1.686,1.633,1.532,1.423,1.311,1.201,1.090,0.979,0.872,0.767,0.664,0.561,0.453,0.355);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (6,1.749,1.727,1.659,1.560,1.457,1.355,1.252,1.162,1.062,0.961,0.864,0.771,0.682,0.595,0.513,0.427);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (7,1.348,1.237,1.129,1.022,0.939,0.847,0.750,0.659,0.566,0.474,0.388,0.306,0.218,0.133,0.061,0.009);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (8,1.696,1.634,1.596,1.507,1.414,1.323,1.242,1.186,1.122,1.048,0.966,0.890,0.805,0.719,0.632,0.553);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (9,1.723,1.713,1.665,1.587,1.495,1.404,1.312,1.220,1.130,1.041,0.955,0.870,0.787,0.706,0.622,0.547);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (10,1.614,1.574,1.557,1.521,1.460,1.406,1.316,1.227,1.137,1.045,0.957,0.862,0.771,0.681,0.587,0.497);
INSERT INTO PAL_ROCKET_DATA_TBL VALUES (11,1.652,1.665,1.656,1.623,1.571,1.499,1.412,1.339,1.253,1.155,1.058,0.973,0.877,0.797,0.704,0.609);

DROP TABLE PAL_ROCKET_LABEL_TBL;
CREATE COLUMN TABLE PAL_ROCKET_LABEL_TBL (
    "DATA_ID"  INTEGER,
    "LABEL"    NVARCHAR(5000)
);

INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (0,  'A');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (1,  'B');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (2,  'C');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (3,  'A');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (4,  'B');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (5,  'C');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (6,  'A');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (7,  'B');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (8,  'C');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (9,  'B');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (10, 'C');
INSERT INTO PAL_ROCKET_LABEL_TBL VALUES (11, 'A');

DROP TABLE PAL_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_PARAMETER_TBL (
	PARAM_NAME VARCHAR(100),
	INT_VALUE INTEGER,
	DOUBLE_VALUE DOUBLE,
	STRING_VALUE VARCHAR(100)
);

INSERT INTO PAL_PARAMETER_TBL VALUES ('METHOD', 0, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('RANDOM_SEED', 1, NULL, NULL);

DROP TABLE PAL_ROCKET_MODEL_TBL; -- for predict followed
CREATE COLUMN TABLE PAL_ROCKET_MODEL_TBL ( 
	ROW_INDEX     INTEGER,
	MODEL_CONTENT NVARCHAR(5000)
);

DROP TABLE PAL_ROCKET_STAT_TBL;
CREATE COLUMN TABLE PAL_ROCKET_STAT_TBL ( 
	STAT_NAME  NVARCHAR(5000),
	STAT_VALUE NVARCHAR(5000)
);

DO BEGIN
	lt_data  = SELECT * FROM PAL_ROCKET_DATA_TBL;
	lt_label = SELECT * FROM PAL_ROCKET_LABEL_TBL;
	lt_param = SELECT * FROM PAL_PARAMETER_TBL;
	CALL _SYS_AFL.PAL_ROCKET_TRAIN (:lt_data, :lt_label, :lt_param, lt_model, lt_stat);
	INSERT INTO PAL_ROCKET_MODEL_TBL SELECT * FROM :lt_model;
	INSERT INTO PAL_ROCKET_STAT_TBL  SELECT * FROM :lt_stat;
END;

SELECT * FROM PAL_ROCKET_MODEL_TBL;
SELECT * FROM PAL_ROCKET_STAT_TBL;
