티스토리 뷰
차원 축소중 Feature Selection에 대해 정리보겠습니다.
1. 차원 축소를 하는 이유
차원 축소를 하는 이유는 3가지가 존재 합니다.
1. 더 나은 성능의 모델을 만들기 위해
2. 이해하기 쉬운 모델을 만들기 위해
3. 더 빠르게 실행되는 모델을 만들기 위해
차원 축소를 하는 방법은 두가지가 있는데 피처 추출(Feature Extraction)과 피처 선택(Feature Selection)이 있습니다. 이 포스팅에서는 둘 중 Feature Selection에 대해 알아보겠습니다.
Feature Selection 방법에는 Filtering, Wrapper, Embedded 3가지가 있습니다.
2. Filtering Method
Filtering은 사전적 의미 처럼 도움이 되지 않는 피처들을 걸러내는 작업을 말합니다. 통계적인 측정 방법을 이용하여 피처들의 상관관계를 알아내고 적합한 피처들만 선택하여 알고리즘에 적용하는 방식입니다.
대표적인 방법은 아래와 같습니다.
- t-test
- chi-square test
- Information Gain
2. Wrapper Method
wrapper는 예측 모델을 사용하여 피처들의 부분 집합을 만들어 계속 테스트 하여 최적화된 피처들의 집합 만드는 방법 입니다. 최적화된 모델을 만들기 위해 여러번 모델을 생성하고 성능을 테스트 해야 하기 때문에 많은 시간이 필요합니다. 충분한 시간이 있다고 하면 wrapper 방법을 사용해도 좋지만 시간이 없다면 다른 방법을 사용하는 것을 추천합니다.
대표적인 방법에는 다음과 같습니다.
- Forward Greedy
- Backward Greedy
- Genetic Search
- Local Search
3. Embedded Method
Embedded는 Filtering과 Wrapper의 장점을 결함한 방법으로 학습 알고리즘 자체에 feature selection을 넣는 방식입니다.
대표적인 방법은 다음과 같습니다.
- LASSO = L1 regularisation
- RIDGE = L2 regularisation
4. Filter와 Wrapper의 차이점
1. Filter는 종속변수와의 상관 관계에 의해 피처의 관련성을 측정하지만 Wrapper는 실제 모델을 학습하여 피처의 부분집합의 유용성을 측정합니다.
2. Filter는 모델을 학습하지 않기 때문에 Wrapper보다 속도가 빠르며 Wrapper는 계산적이기에 비용이 많이 들고 속도가 느립니다.
3. Filter는 통계 방법을 사용하여 피처의 부부 집합을 만들지만 Wrapper는 교차 검증을 활용하여 피처의 부분 집합을 만듭니다.
4. Filter는 항상 최적의 피처 부분 집합를 선택할 수는 없지만 Wrapper는 항상 최적의 피처 부분 집합을 선택할 수 있다.
5. Wrapper 방법은 Filter 방법 보다 overfitting 되기 쉽다.
'머신러닝' 카테고리의 다른 글
Wrapper Selection의 종류 - Forward & Backward Greedy, Genetic & Local Search (0) | 2020.02.22 |
---|---|
차원축소 - PCA (Principal Component Analysis) (0) | 2020.02.19 |
[머신러닝] Dimensionality Reduction - 차원 축소 하는 이유? (0) | 2020.02.17 |
차원의 저주 - Curse of Dimensionality (0) | 2020.02.16 |
SVM 서포트 백터 머신(Support Vector Machine) (0) | 2020.02.12 |
- Total
- Today
- Yesterday
- Component
- GPT서비스
- vscode
- numpy
- k8s metrics-server running
- 넘파이
- Java
- React 프로젝트 생성
- 지도학습
- k8s metrics-server
- 퍼셉트론
- CHATGOT
- 리엑트
- LeetCode 알고리즘 공부
- 머신러닝
- git
- 버츄얼스튜디오코드
- 에라토스테네스
- 파이썬
- GPTGOT
- LeetCode 풀이
- react
- 파이썬 numpy
- Node
- LeetCode 5월 챌린지
- Java leetcode
- 30 Day LeetCode Challenge
- 노드
- LeetCode 30일 챌린지
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |