original.columns 중 loan_status, original 컬럼은 제외하고 전처리 대상 선정.select_dtypes(include=['object'])로 자동 필터링범주형 변수 처리
category_mappings[col] = {v: k for k, v in enumerate(df_imputed[col].unique())} 사용결측값 보간
IterativeImputer 사용 (sklearn.experimental 모듈)
estimator=EnsembleRegressor() 로 커스텀 회귀 모델을 보간용 모델로 사용
EnsembleRegressor는 다음 네 가지 모델의 평균 예측값을 활용
-> RandomForestRegressor
-> CatBoostRegressor
-> LGBMRegressor
-> XGBRegressor
max_iter=10으로 반복 보간 수행
보간 후 처리
df_result = pd.DataFrame(imputer_data, columns=columns_to_impute).round().map(reverse_mapping)을 통해 원래 라벨로 복원loan_status, original 컬럼을 다시 병합하여 복원original = df_result.copy() 로 전체 전처리된 데이터를 통합비율 / 조합 기반 변수
income_to_age: 소득 대비 나이loan_to_income: 대출금 대비 소득rate_to_loan: 이자율 대비 대출금loan_to_employment: 대출금 대비 재직 기간age_to_credit_history: 나이 대비 신용이력 길이 등로그/제곱/삼제곱 변환
log_income, age_squared, age_cubed, log_loan_amnt범주화 (Binning)
age_category: 나이 구간별 분류 (pd.cut)income_category: 소득 분위수 기준 분류 (pd.qcut)loan_amount_category: 대출금 구간 분류Flag 변수 (0 or 1)
high_loan_to_income, high_loan_amount, is_new_credit_user, high_interest_rateintent_home_match: 용도와 주거 유형이 일치하는지 여부다중 변수 조합
home_ownership_intent: 소유 형태 + 대출 목적intent_grade_interaction: 대출 목적 + 등급default_rate_interaction: 기본 여부 + 이자율 구간 등정규화 / 그룹 통계 활용
normalized_loan_amount: 대출 목적 내 표준화normalized_income: 연령대 기준 소득 표준화rate_to_grade: 등급별 평균 이자율로 대체고차항(Polynomial Feature)
PolynomialFeatures(degree=2, interaction_only=True) 사용poly_*로 시작하는 2차 상호작용 변수 자동 생성사이클릭 변수 변환
age_sin, age_cos: 주기성을 갖는 나이 변수 변환복합 위험 점수 계산
risk_score, creditworthiness_score, stability_score, high_risk_flagRandomForestRegressor: 결측치 보간용CatBoostRegressor: 결측치 보간용 + 블렌딩 후보 모델LGBMRegressor: 결측치 보간용 + 블렌딩 후보 모델 XGBRegressor: 결측치 보간용 + 블렌딩 후보 모델LGBMClassifier (GBDT): Optuna 기반 하이퍼파라미터 튜닝 모델LGBMClassifier (GOSS): GOSS 부스팅 방식 적용 모델params = {
"max_depth": 2 ~ 10,
"num_leaves": 2 ~ 256,
"learning_rate": 1e-3 ~ 0.3 (log scale),
"n_estimators": 50 ~ 1500,
"subsample": 0.5 ~ 1.0,
"feature_fraction": 0.1 ~ 1.0,
"min_child_samples": 1 ~ 100,
"lambda_l1": 0 ~ 1,
"lambda_l2": 0 ~ 1,
}
샘플러
-> TPESampler (기본)
-> CmaEsSampler (blending weight 최적화에 사용)
조기 종료 설정: early_stopping(250)으로 validation loss 감소 없을 시 학습 중단