Model compression is a technique that focuses on reducing the size of a model while maintaining its accuracy. The goal is to minimize the loss of accuracy when compressing the model.
------

SET SCHEMA DM_PAL; 

DROP TABLE PAL_SVM_DATA_TBL;
CREATE COLUMN TABLE PAL_SVM_DATA_TBL ( 
    ID INTEGER,
    ATTRIBUTE1 DOUBLE,
    ATTRIBUTE2 DOUBLE,
    ATTRIBUTE3 DOUBLE,
    ATTRIBUTE4 VARCHAR(10),
    LABEL INTEGER
);
INSERT INTO PAL_SVM_DATA_TBL VALUES (0,1,10,100,'A',1);
INSERT INTO PAL_SVM_DATA_TBL VALUES (1,1.1,10.1,100,'A',1);
INSERT INTO PAL_SVM_DATA_TBL VALUES (2,1.2,10.2,100,'A',1);
INSERT INTO PAL_SVM_DATA_TBL VALUES (3,1.3,10.4,100,'A',1);
INSERT INTO PAL_SVM_DATA_TBL VALUES (4,1.2,10.3,100,'AB',1);
INSERT INTO PAL_SVM_DATA_TBL VALUES (5,4,40,400,'AB',2);
INSERT INTO PAL_SVM_DATA_TBL VALUES (6,4.1,40.1,400,'AB',2);
INSERT INTO PAL_SVM_DATA_TBL VALUES (7,4.2,40.2,400,'AB',2);
INSERT INTO PAL_SVM_DATA_TBL VALUES (8,4.3,40.4,400,'AB',2);
INSERT INTO PAL_SVM_DATA_TBL VALUES (9,4.2,40.3,400,'AB',2);
INSERT INTO PAL_SVM_DATA_TBL VALUES (10,9,90,900,'B',3);
INSERT INTO PAL_SVM_DATA_TBL VALUES (11,9.1,90.1,900,'A',3);
INSERT INTO PAL_SVM_DATA_TBL VALUES (12,9.2,90.2,900,'B',3);
INSERT INTO PAL_SVM_DATA_TBL VALUES (13,9.3,90.4,900,'A',3);
INSERT INTO PAL_SVM_DATA_TBL VALUES (14,9.2,90.3,900,'A',3);

DROP TABLE PAL_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_PARAMETER_TBL (
    "PARAM_NAME" NVARCHAR(256),
    "INT_VALUE" INTEGER, 
    "DOUBLE_VALUE" DOUBLE, 
    "STRING_VALUE" NVARCHAR (1000)
);
INSERT INTO PAL_PARAMETER_TBL VALUES ('KERNEL_TYPE',2,NULL,NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('TYPE',1,NULL,NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('RBF_GAMMA',NULL,0.005,NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('HAS_ID',1,NULL,NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('HANDLE_MISSING', 0, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PROBABILITY', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('COMPRESSION', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('MAX_BITS', 10, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('MAX_QUANTIZATION_ITER', 500, NULL, NULL);


DROP TABLE PAL_SVM_MODEL_TBL_EX1;
CREATE COLUMN TABLE PAL_SVM_MODEL_TBL_EX1 (ROW_INDEX INTEGER, MODEL_CONTENT NVARCHAR(5000));

DROP TABLE PAL_SVM_STAT_TBL;
CREATE COLUMN TABLE PAL_SVM_STAT_TBL (STAT_NAME NVARCHAR(256), STAT_VALUE NCLOB);

DO BEGIN
	lt_data = SELECT * FROM PAL_SVM_DATA_TBL;
	lt_param = SELECT * FROM PAL_PARAMETER_TBL;
	CALL _SYS_AFL.PAL_SVM(:lt_data,:lt_param,lt_model,lt_stat,lt_opt);
	INSERT INTO PAL_SVM_MODEL_TBL_EX1 SELECT * FROM :lt_model;
	INSERT INTO PAL_SVM_STAT_TBL SELECT * FROM :lt_stat;
END;

SELECT * FROM PAL_SVM_MODEL_TBL_EX1;
