Top 7 Feature Selection Techniques in Machine Learning
최고의 특성을 찾기 위한 유명한 전략들
Image by Mohamed Hassan from Pixabay, Edited using Pixlr
머신러닝에서 표준 이론은 더 많은 훈련데이터가 더 좋은 머신러닝 모델로 이어진다는 것이다. 이는 인스턴스의 수에에 대해서는 맞지만 특성의 수에 대해서는 아니다. 실제 데이터셋은 많은 불필요한 특성을 포함한다. 이러한 불필요한 특성들은 모델의 성능에 영향을 미칠 수 있다.
데이터 과학자는 모델링을 위해 선택하는 특성의 조건에서 선택해야만 한다. 데이터셋은 많은 특성을 포함하며 그중 몇몇은 유용하지만 다른 것은 아니다. 모든 가능한 특성 조합을 선택하고 특성의 최고 조합을 선택하기 위해 진행하는 것은 다항식 시간 복잡도가 필요한 다항식 해법(polynominal solution)이다. 이 글에서는 견고한 머신러닝 모델 훈련을 위한 최고 특성을 선택하는 7가지 방법을 다룬다.
1. Domain Knowledge:
데이터 과학자 또는 분석가는 문제 상태에 대한 도메인 지식과 어떠한 데이터 과학 사례 연구를 위한 특성셋을 알고 있다고 여겨진다. 특성에 대한 도메인 지식 또는 직관을 갖는 것은 데이터 과학자가 특성공학(feature engineering)을 수행하고 최고의 특성을 선택하는데 도움을 준다.
예를 들면, 자동차 가격 예측 문제에서 제작년도, 좋은 차량 번호같은 몇몇 특성은 차량 가격을 결정하는데 핵심 요소이다.
2. Missing Values:
(Image by Author), 손실값의 시각화 : 흰선은 손실값의 존재를 나타낸다.
실제 데이터셋은 때때로 데이터 오염 또는 기록 실패때문에 발생한 손실값을 포함한다. 손실값을 덮어씌우기 위한 여러가지 기술이 있지만 손실값을 덮어씌우는 것은 실제 데이터와 일치하지 않을 수 있다. 따라서 다수의 손실값을 갖는 특성에서 훈련된 모델은 크게 중요하지 않을 수 있다.
아이디어는 설정된 임계치보다 더 큰 손실값을 갖는 컬럼 또는 특성을 빼는 것이다. 타이타닉 데이터셋로 만들어진 위 이미지에서 'cabin' 특성은 많은 손실값이 있어 제거될 수 있다.
Correlation with the target class label:
관계 매트릭스(correlation matrix)의 heatmap
목표 클래스 레이블(target class label)과 특성간 관계성은 목표 클레스 레이블에 대해 특성의 각각이 얼마나 많이 관련되는지를 결정한다. Pearson, Spearman, Kendall 등과 같이 두 특성간 관계성을 찾기 위한 다양한 관계성 기술이 있다.
df.corr()은 특성간 피어슨 상관계수(person correlation coefficient)를 반환한다. 타이타닉 데이터셋에 대한 위 관계성 히트맵에서 'sex', 'Pclass', 'fare'같은 특성은 목표 클레스 레이블인 'survived'와 높게 관련되었으므로 중요한 특성으로써 제공한다. 반면 'PassengerID', 'SibSp'같은 특성은 목표 클래스 레이블과 관련없으므로 모델에 중요 특성으로 제공되지 않을 것이다. 따라서 이 특성들은 제거될 수 있다.
4. Correlation between the features:
특성간 관계성은 동일 선상에 있음(collinearity)이 된다. 이는 모델의 성능에 영향을 미칠 것이다. 특성이 관계성에 대해 높은 계수(coefficient)를 갖는다면 그 특성은 다른 특성과 관계되었다고 한다. 따라서 한가지 특성 변경은 관련된 특성 역시 바뀐다.
타이타닉 데이터셋에 대한 관계성 히트맵에서 'Pclass'와 'Fare'간 피어슨 상관계수(Pearson correlation coefficient)는 한 변수의 변화가 또다른 변수에 부정적으로 영향을 미칠 것이다.
Principal Component Analysis (PCA):
PCA는 차원 감소 기술이다. 이것은 데이터셋에서 특성을 추출하기 위해 사용된다. PCA는 데이터셋의 차원을 행렬분해(matrix factorization)를 사용하여 더 낮은 차원으로 줄인다. PCA는 완전하게 데이터셋을 분산(variance)을 보존하는 더 낮은 차원으로 투영한다.
PCA는 데이터셋의 차원이 매우 높을 때 특정을 줄이기 위해 사용될 수 있다. 불필요한 특성 젝러를 분석하는 것은 지루한 작업이다. PCA는 많은 특성을 갖는 데이터셋을 원하는 특성 수를 갖는 물론 일부 분산(variance)의 손실을 갖는 데이터셋으로 중일 수 있다.
(Image by Author), Plot for % of variance explained vs the number of dimensions
위 PCA 그래프는 Ionosphere Dataset from the UCI machine learning repository의 데이터셋으로 훈련되었다.
Total number of dimensions: 34
Observation from the above plot,
90% of variance is preserved for 15 dimensions.
80% of variance is preserved for 9 dimensions.
차원을 15로 줄이고 분산의 90%를 보존한다. 그리고 최고의 특성을 선택한다.
6. Forward Feature Selection:
전방(forward)와 후방(backward) 특성 선택(feature selection) 기술은 머신러닝 모델을 위한 최고 성능 특성에 대한 부분집합을 찾기 위해 사용된다. n개의 특성이 있는 데이터셋이 있다면 그 특성들은 이전 결과의 추정(inference)를 기반으로 선택된다. 전방 특성 선택 기술은 다음과 같다.
- n개의 특성 각각을 사용하여 모델을 훈련하고 성능을 평가한다.
- 최고 성능을 가진 특성 또는 특성 집합이 완료된다.
- 원하는 특성수를 얻을 때까지 1과 2를 반복한다.
전방 특성 선택은 특성의 최고 부분집합을 선택하기 위한 랩퍼 기술(wrapper technique)이다. 후방 특성 기술은 단지 전방 특성 선택의 반대이다. 여기서는 초기에 모든 특성이 선택되고 가장 불필요한 특성이 매 단계에서 제거된다.
7. Feature Importance:
특성 중요도(Feature Importance)는 모델이 중요하다고 생각하는 특성의 목록이다. 이는 각 특성에 대한 중요도 점수를 제공하고 예측에 대해 그 특성의 중요도를 나타낸다. 특성 중요도는 많은 머신러닝 모델의 Scikit-Learn 구현에 내장함수이다.
특성 중요도 점수는 특성의 가장 좋은 부분집합을 확인하기 위해 사용될 수도 있다. 그리고 그 특성의 부분집합으로 견고한 모델을 훈련을 진행한다.