Early stop is a technique used in hybrid gradient boosting tree (HGBT) to prevent overfitting. It involves monitoring the model's performance on a separate validation dataset. The generalization performance is evaluated using a loss function by default, but other evaluation metrics can be specified.
------

set schema DM_PAL;

drop table PAL_HGBT_DATA_TAB;
create column table PAL_HGBT_DATA_TAB (
	"ATT1" double,
	"ATT2" double,
	"ATT3" double,
	"ATT4" double,
	"LABEL" nvarchar(50)
);
insert into PAL_HGBT_DATA_TAB values (1.0, 10.0, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.1, 10.1, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.2, 10.2, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.3, 10.4, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.2, 10.3, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (4.0, 40.0, 400, 4.0, 'B');
insert into PAL_HGBT_DATA_TAB values (4.1, 40.1, 400, 4.0, 'B');
insert into PAL_HGBT_DATA_TAB values (4.2, 40.2, 400, 4.0, 'B');
insert into PAL_HGBT_DATA_TAB values (4.3, 40.4, 400, 4.0, 'B');
insert into PAL_HGBT_DATA_TAB values (4.2, 40.3, 400, 4.0, 'A');
insert into PAL_HGBT_DATA_TAB values (9.0, 90.0, 900, 2.0, 'A');
insert into PAL_HGBT_DATA_TAB values (9.1, 90.1, 900, 1.0, 'B');
insert into PAL_HGBT_DATA_TAB values (9.2, 90.2, 900, 2.0, 'B');
insert into PAL_HGBT_DATA_TAB values (9.3, 90.4, 900, 1.0, 'B');
insert into PAL_HGBT_DATA_TAB values (9.2, 90.3, 900, 1.0, 'B');
insert into PAL_HGBT_DATA_TAB values (1.0, 10.0, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.1, 10.1, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.2, 10.2, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.3, 10.4, 100, 1.0, 'A');
insert into PAL_HGBT_DATA_TAB values (1.2, 10.3, 100, 1.0, 'A');

drop table PAL_PARAMETER_TAB;
create column table PAL_PARAMETER_TAB (
	"PARAM_NAME" nvarchar(100),
	"INT_VALUE" integer,
	"DOUBLE_VALUE" double,
	"STRING_VALUE" nvarchar(100)
);
insert into PAL_PARAMETER_TAB values ('VALIDATION_SET_RATE', null, 0.3, null);
insert into PAL_PARAMETER_TAB values ('STRATIFIED_VALIDATION_SET', 1, null, null);
insert into PAL_PARAMETER_TAB values ('TOLERANT_ITER_NUM', 3, null, null);

do begin
	LT_DATA_TAB = select * from PAL_HGBT_DATA_TAB;
	LT_PARAM_TAB = select * from PAL_PARAMETER_TAB;
	call _SYS_AFL.PAL_HGBT(:LT_DATA_TAB, :LT_PARAM_TAB, LT_MODEL_TAB, LT_IMP_TAB, LT_CONFUSE_TAB, LT_STAT_TAB, LT_CV_TAB);
	select * from :LT_MODEL_TAB;
	select * from :LT_IMP_TAB;
	select * from :LT_CONFUSE_TAB;
	select * from :LT_STAT_TAB;
	select * from :LT_CV_TAB;
	insert into PAL_HGBT_MODEL_TAB select * from :LT_MODEL_TAB;
end;
