Gibbs Sampling은 다차원 확률 분포에서 샘플을 생성하기 위한 마르코프 연쇄 몬테카를로(MCMC) 기법입니다. 각 변수의 조건부 분포를 순차적으로 샘플링하여 전체 분포에서 샘플을 추출합니다. 복잡한 결합 확률 분포에서 샘플링이 어려울 때 유용하게 사용됩니다.
import numpy as np
def gibbs_sampling(iterations, x_init, y_init, sample_cond_x, sample_cond_y):
x_samples = []
y_samples = []
x, y = x_init, y_init
for i in range(iterations):
x = sample_cond_x(y)
x_samples.append(x)
y = sample_cond_y(x)
y_samples.append(y)
return x_samples, y_samples
def sample_cond_x(y):
return np.random.normal(y, 1) # P(x | y)
def sample_cond_y(x):
return np.random.normal(x, 1) # P(y | x)
iterations = 1000
x_samples, y_samples = gibbs_sampling(iterations, 0, 0, sample_cond_x, sample_cond_y)
print(x_samples[:10], y_samples[:10])
Stratified K-Fold는 분류(classification) 문제에서 주로 사용됩니다. 이 방법은 각 폴드에 데이터가 동일한 비율로 분포되도록 하여 클래스 불균형 문제를 해결하는 데 효과적입니다.
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
# 모델과 데이터 준비
model = LogisticRegression()
X = your_features
y = your_labels
# Stratified K-Fold 적용
strat_k_fold = StratifiedKFold(n_splits=5)
# 교차 검증 실행
scores = cross_val_score(model, X, y, cv=strat_k_fold)
print(f"교차 검증 평균 점수: {scores.mean()}")