본문 바로가기
코딩💻

[Machine learning] 릿지회귀 (Ridge regression), One-Hot Encoding, 특성선택

by 하암꿈 2022. 11. 16.
728x90

 

Ridge regression, One-Hot Encoding, 특성선택

 

 

Ridge regression

  • 람다값이 커지면 기울기가 0으로 된다. (규제가 쎄면 눕는다)
  • 람다는 하이퍼파라미터.
  • 베타는 회귀계수.
  • 람다 패널티를 높일수록 계수의 값은 줄어든다.
  • 람다 패널티를 주는 이유는 모델의 과적합(overfitting)문제를 줄이기 위함이다.
  • 릿지회귀모델에서 최적 람다값을 찾기 위한 방법으로 RidgeCV 라이브러리를 활용할 수 있다.
  • 릿지회귀모델은 기존의 다중회귀모델을 훈련데이터에 덜 적합되도록 하는 방법이다.

 

 

 

One-Hot Encoding

  • 범주형 데이터를 기계가 알아듣도록 수치형으로 바꿔줌.
  • 범주형데이터는 두개로 나뉘어진다. - 명목형데이터, 순서형데이터.
  • 명목형데이터는 카테고리가 다를뿐이다. ex) 색깔, 도시, 성별, 기수, 브랜드
  • 순서형데이터는 카테고리안에 순서 높낮이가 존재 ex) 등급, 점수, 순위,

 

 

 

특성공학 vs 특성선택

  • 과적합은 모델이 복잡할때 나타난다.
  • 특성공학은 기존에 특성을 이용해서 새로운것을 만드는 방법이다.
  • 특성선택은 기존에 있는 특성들로 학습할때 어떤 특성이 가장 중요한가를 선택하는 과정이다.
  • 특성 선택을 어떻게 하느냐에 따라 머신러닝 모델 성능에 큰 영향을 미칠 수 있으며, 실무에서도 많은 시간이 드는 업무 중 하나이다.

 

 

# SelectKBest

# target(Price)와 가장 correlated 된 features 를 k개 고르는 것이 목표

## f_regresison, SelectKBest
from sklearn.feature_selection import f_regression, SelectKBest

## selctor 정의합니다.
selector = SelectKBest(score_func=f_regression, k=10)

## 학습데이터에 fit_transform 
X_train_selected = selector.fit_transform(X_train, y_train)

## 테스트 데이터는 transform
X_test_selected = selector.transform(X_test)

X_train_selected.shape, X_test_selected.shape

 

## RidgeCV
from sklearn.linear_model import RidgeCV

alphas = np.arange(1, 50, 1)

# RidgeCV모델 작성 람다는 1부터 50까지로 설정
model1 = RidgeCV(alphas = alphas, cv = 2) 
model1.fit(X_train, y_train)
y_pred1 = model1.predict(X_test)
300x250