특징 공학(Fatures Engineering)은 주어진 데이터에서 특징을 다루는 기술을 의미한다. 그렇다면 과연 어떻게 특징을 다루는 것일까? 🧐
이전에 머신러닝 모델을 이해하고 어떻게 예측 성능을 향상 시킬 수 있는지 알아야 한다. 특징은 모델 성능에 가장 큰 영향력을 미치는 요소 중에 하나이다.
모델 성능을 높이기 위해서 모델의 파라미터를 조정하는 방법도 있고, 가중치를 조절하는 방법도 있다.
그러나 무엇보다 중요한 것은 데이터 그 잡채(?) 라는 것이다.
그러므로, 데이터를 뚝딱뚝딱~ 해서 새로운 데이터 특징을 만드는 과정도 필요하다.
그러나, 이 부분은 기술만으로 설명할 수 없는 한계가 있다.
왜냐하면, 대상이 되는 영억에 대한 도메인 지식이 필요한 경우가 많기 때문이다.
다양한 산업에는 다양한 비즈니스 문제가 있기 때문에, 데이터를 둘러싼 배경지식의 이해가 필수적이다. 그래도 가이드 라인을 소개하자면
위와 같이 제시할 수 있을 것 같다 🙂
독립 Feature 변수 ~ Target 변수 관의 관계를 알아보는 선형 회귀를 앞서 배워보았다. 그러나 Target 변수에 영향을 미치는 요인이 하나라고? 과연 이게 맞는거야?
결론부터 말하자면 응~ 아니야 😝
분명, Target 변수에 영향을 주는 요인들은 다양하다. 여러 개의 feature를 사용하여 관계를 알아볼 수 다중 회귀 가 있다.
그렇다면, 어떤 특징들을 새롭게 만들어서 다중 회귀 모델에 대입해볼 수 있을까?
똑똑하게도(?) 사이킷런에서는 변환기Transformer 라고 불리는 특성공학과 전처리하는 클래스가 존재한다.
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures()
poly.fit([[2,3]])
print(poly.transform([[2,3]])
OUTPUT : [[1. 2. 3. 4. 6. 9]]
특징 값을 주게 되면, 특징값들을 제곱한 값, 특징값 간 곱하기 연산한 값을 새롭게 추가해준다. 1은 선형 회귀에서 절편(bias)와 곱해지는 계수 임을 의미한다.
규제는 머신러닝 모델이 Train 세트에 과도하게 학습하지 못하도록 방해하는 기술이라고 할 수 있다.
규제 기법을 사용하면 훈련 세트에 대한 점수는 낮아질 수 있지만 테스트 세트에 점수를 높일 수 있다.
규제 기법을 사용하기 앞서, 데이터 특징 값의 분포를 확인하고 스케일이 특징마다 차이가 크다면 정규화를 해주는 것이 주용하다. 계수 값이 크기가 서로 많이 다르면, 공정하게 제어 되지 않기 때문이다.
규제 기법에는 릿지(Ridge) 와 라쏘(Lasso) 방법이 있다.
Ridge : 계수를 제곱한 값을 기준으로 규제 적용
Lasso : 계수를 절댓값을 기준으로 규제 적용
사이킷런에서는 linear_model 패키지안에서 Ridge와 Lasso를 제공하고 있다.
from sklearn.linear_model import Ridge
ridge = Ridge()
ridge.fit(train_scaled, train_target)
print(ridge.score(train_scaled, train_target))
from sklearn.linear_model import Lasso
lasso = Lasso()
lasso.fit(train_scaled, train_target)
print(lasso.score(train_scaled, train_traget)
지금은 Ridge( )와 Lasso( ) 호출에, 어떠한 파라미터도 입력해주지 않았다.
Default로 적용되는 파라미터 외에 어떠한 파라미터도 쓰지 않았다는 의미이다.
그러나, 규제의 양을 임의로 조절할 수 있는데, alpha 라는 매개변수로 규제의 강도를 조절할 수 있다.
alpha 값이 크면 규제 강도가 세지므로 계수 값이 더 줄이고, 조금 더 과소적합을 유도할 수 있다.
alpha 값이 작으면 규제 강도가 약해지므로 계수 값을 조금만 줄이게 되고, 과대적합할 가능성이 높아진다.
하이퍼 파라미터 (Hyper-Parameter) 는 머신러닝 알고리즘에서 학습되지 않는 파라미터를 의미한다.
위에서 회귀모델에서 규제를 적용하는 기법 Ridge와 Lasso를 살펴보았다.
물론 어떠한 파라미터도 전달해주지 않으면, 기본 알고리즘으로 해당 모델을 사용해 볼 수 있다.
그러나, alpha 라는 값을 사용하여, 기본 모델에서 변형을 가할 수 있다.
그렇기 때문에, alpha 파라미터는 Ridge, Lasso 에서 규제 강도를 제어하는 하이퍼 파라미터이다.