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 
);