학습 알고리즘에 데이터를 넣기 전에, 데이터의 변수가 너무 많으면 안 된다.
데이터의 변수가 많으면 생기는 일로는 모델의 해석력이 떨어진다. 변수가 너무 많으면 어떤 게 영향을 주는지에 대한 해석이 힘들다는 뜻이다. 두 번째로는 모델 훈련시간이 매우 상승한다는 것이며 세 번째로는 차원의 저주가 있다.
https://oi.readthedocs.io/en/latest/ml/curse_of_dimensionality.html
위 링크에 따르면 차원이 커짐에 따라 공간이 커지고, 그 공간 내에 모든 경우를 다 채우려면 더 많은 데이터가 필요하다. 이처럼 차원이 커짐에 따라 모든 경우를 다 파악하는데 필요한 데이터가 기하급수적으로 늘어나는 현상을 차원의 저주 라고 한다.
이를 위해서 특성 선택 방법론을 정하는 것은 중요하다.
이 포스팅에서는 세 개의 특성 선택 방법론을 이야기 할 것이다.
특성 선택(feature selection)
특성 선택은 주어진 특성 변수들 중에서 효율적인 특성 변수의 조합을 선택한다. 즉, 불필요한 변수를 제거한다는 것이다. 특성 선택의 방법으로는 Filtering, Wrapper, Embedded 방식이 있다.
- Filtering 방식 : 특성 변수들을 함수로 평가한다. 모든 각각의 특성변수와 목표변수(결과)와의 연관성을 측정하여 그 중에서 목표변수를 제일 잘 설명할 수있는 특성 변수를 선택하는 것이다. 이 때, 연관성을 알기 위해서는 t검정, chi-square test, inforamtion gain등의 지표가 활용 된다.
- Wrapper 방식 : 학습 알고리즘을 이용해 결과를 비교하여 적절한 특성 변수들을 찾는 방법. 특성 변수들의 종류가 바뀔 때마다모델이 학습하며, 중복된 정보가 많은 경우 효과적으로 특성변수를 제거한다. 대표적인 방법으로 forward selection(중요한 변수를 하나씩 선택), backward selection(전부 넣고 하나씩 제거), stepwise selection(forward selection과 backward selection처럼 매 step마다 선택과 제거를 반복한다.)
보통은 Filtering 방식보다 Wrapper 방식을 사용한다. 왜냐하면 Filtering 방식은 한 특성변수와 목표 변수의 관계만을 확인하기 때문에 특성 변수 간의 작용을 고려하지 않게 되기 때문이다.
- Embedded 방식 : 학습 알고리즘 자체에서 특성 선택을 포함하는 경우이다. Embedded 방식은 학습 과정에서 최적화된 변수를 선택하며 이로 대표적인 방법은 Ridge, Lasso, Elastic net 등이 있다.
이렇게 세 가지의 방식이 있다는 것을 염두에 두자.
'조열심 카테고리 > Python 이것저것' 카테고리의 다른 글
| [Python] 자신만의 Error 만들기 (0) | 2022.05.11 |
|---|---|
| [Python] 제너레이터 내포 표기 (0) | 2022.05.11 |
| [Python] Iterator, Generator(이터레이터, 제너레이터) (0) | 2022.01.05 |
| [Python] 일급 함수(일급 객체) (0) | 2022.01.04 |
| [Python] 웹크롤링으로 멜론 차트 100 가져오기 (0) | 2021.12.31 |