create table tit_train2
as
select *
from tit
where caseno < 802; -- 훈련 데이터 802
select count(*) from tit_train2;
create table tit_test2
as
select *
from tit
where caseno >= 802; -- 테스트 데이터 89
select count(*) from tit_test2;
-- 2. 머신러닝 모델을 구성하기 위한 환경 설정 테이블을 생성합니다.
DROP TABLE SETTINGS_GLM;
CREATE TABLE SETTINGS_GLM
AS
SELECT *
FROM TABLE (DBMS_DATA_MINING.GET_DEFAULT_SETTINGS)
WHERE SETTING_NAME LIKE '%GLM%';
BEGIN
INSERT INTO SETTINGS_GLM
VALUES (DBMS_DATA_MINING.ALGO_NAME, 'ALGO_RANDOM_FOREST');
INSERT INTO SETTINGS_GLM
VALUES (DBMS_DATA_MINING.PREP_AUTO, 'ON'); -- 알아서 parameter 튜닝해라
INSERT INTO SETTINGS_GLM
VALUES (
DBMS_DATA_MINING.GLMS_REFERENCE_CLASS_NAME,
'GLMS_RIDGE_REG_DISABLE');
-- 목적이 분류이기 때문에 수치 예측인 회귀를 disable 시킨 것
COMMIT;
END;
/
select * from settings_glm;
-- 3. 머신러닝 모델을 삭제합니다.
BEGIN
DBMS_DATA_MINING.DROP_MODEL( 'MD_CLASSIFICATION_MODEL');
END;
/
-- 4. 머신러닝 모델을 생성합니다.
BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'MD_CLASSIFICATION_MODEL',
mining_function => DBMS_DATA_MINING.CLASSIFICATION,
data_table_name => 'TIT_TRAIN2',
case_id_column_name => 'CASENO',
target_column_name => 'ALIVE',
settings_table_name => 'SETTINGS_GLM');
END;
/
-- 5. 머신러닝 모델을 확인합니다.
SELECT MODEL_NAME,
ALGORITHM,
MINING_FUNCTION
FROM ALL_MINING_MODELS
WHERE MODEL_NAME = 'MD_CLASSIFICATION_MODEL';
-- 6. 머신러닝 모델 설정 정보를 확인합니다.
SELECT SETTING_NAME, SETTING_VALUE
FROM ALL_MINING_MODEL_SETTINGS
WHERE MODEL_NAME = 'MD_CLASSIFICATION_MODEL';
-- 7. 모델이 예측한 결과를 확인합니다.
SELECT caseno, alive as 실제값,
PREDICTION (MD_CLASSIFICATION_MODEL USING *) 예측값
FROM tit_test2
order by caseno;
-- 8. 모델의 정확도를 출력합니다.
select sum(decode(실제값, 예측값, 1, 0))/count(*)*100 정확도
from(
SELECT caseno, alive as 실제값,
PREDICTION (MD_CLASSIFICATION_MODEL USING *) 예측값
FROM tit_test2
order by caseno
);