Section2 - 213

mochi·2022년 12월 8일
0

부트캠프

목록 보기
4/9

Ridge Regression


범주형 자료

  • 문자열 데이터

명목형(nominal)

  • 순서가 없는 범주
    ex) red, green, yellow

순서형(ordinal)

  • 순서가 있는 범주
    ex) high, middle, low

Encoding

  • 범주형(문자형) 변수를 숫자로 변환

One Hot Encoding

  • 각 unique한 값을 하나의 차원으로 변환
  • 순서가 중요하지 않으므로 명목형 변수에 적합
  • high cardinality한 경우 부적절
#use_cat_names=True : 변수를 특성이름에 사용
encoder = OneHotEncoder(use_cat_names=True)

#train : fit_transform
X_train = encoder.fit_transform(X_train)
#test : transform
X_test = encoder.transform(X_test)

X_train.head()


Select KBest

  • 중요한 특성을 선택하는 방법
#k : 선택할 특성 개수
selector = SelectKBest(score_func=f_regression, k=10)

X_train_selected = selector.fit_transform(X_train, y_train)
X_test_selected = selector.transform(X_test)

#get_support : 각 특성 선택 여부 boolean
selected_mask = selector.get_support()
#선택된 특성
selected_names = X_train.columns[selected_mask]

Ridge Regression

  • 규제항을 두어(복잡도를 줄여) 과적합을 줄이는 회귀 모델

규제항
λj=1pβj2\lambda\sum_{j=1}^p\beta_j^2

튜닝 파라미터(alpha, lambda)
        0 ← λ\lambda → ∞
βOLS\beta_{OLS}βridge\beta_{ridge} → 0


Ridge CV

  • 최적의 λ\lambda값을 찾기위한 교차 검증
alphas = [0.01, 0.05, 0.1, 0.2, 1.0, 10.0, 100.0]

ridge = RidgeCV(alphas=alphas, normalize=True, cv=3)
ridge.fit(ans[['x']], ans['y'])

print('alpha :', ridge.alpha_)
print('best score :', ridge.best_score_)

alpha: 0.2
best score: 0.4389766255562206

profile
모치

0개의 댓글