By 앙상블 모델
1. 대회 소개
2. 데이터 분석 및 전처리
3. 앙상블 모델 소개
4. 모델 적용
5. 모델 성능 평가
6. 우승자 코드 분석
데이콘(DACON)은 지속적이고 투명하게 다양한 경진 대회를 통해 데이터 분석/시각화, 머신러닝(딥러닝) 분야에서 세계적 경쟁력을 확보하기 위한 한국 버전의 Kaggle이다. 기업은 보유한 데이터와 상금 제공을 통해 다양한 기술과 인재를 확보 할 수 있고, 참가자는 개인의 실력을 향상 시키고 자신의 커리어를 입증할 수 있는 기회의 장이다. 특히, 월간 데이콘은 매달 데이콘에서 매달 하나씩 개체 하는 대회로써, Kaggle이나 유명한 대회 또는 연구소 등에서 사용하는 데이터를 이용하는 대회이다. 본 글에서는 월간 데이콘 2와 5에서 진행했던 천체(우주) 유형 분류와 생체 광학 데이터 분석 경진대회의 내용을 다루고자 한다. 천체 우주와 생체 광학의 영역은 다르지만 빛의 투과량을 이용하는 것과 앙상블 모델 사용시 좋은 성능을 보여주었다는 공통점 때문에 같이 소개하고자 한다.
천체 데이터인 슬론 디지털 천체 관측(Sloan Digital Sky Surve: SDSS) 데이터를 활용 하여 새로운 천체 유형을 분류 하기 위한 예측 분류 모델을 생성한다. 천체(우주) 유형 분류 데이터셋은 천체를 관측하여 측정된 21개의 데이터를 이용하여 이미 정의된 19개의 천체 유형을 분류 하는 대회 이다. [그림1] 과 같이 5개 종류의 천체 관측 데이터가 있고 그중 규모(Mag) 데이터는 5개의 세부 데이터를 가진다. 천체의 유형은 문자열 데이터로 Index 변화를 통해 수치화 시키는 전처리 작업이 필요 하다.
스펙트럼(빛)을 이용한 뇌 내 성분 검사 수치 예측 모델을 생성 한다. 생체 광학 분석 데이터셋은 35개의 광원 스펙트럼(Input)과 35개의 측정된 스펙트럼(Output) 그리고 측정 거리를 이용하여 뇌 내의 4가지 성분의 수치를 예측 대회 이다. 스펙트럼의 범위는 650 ~ 990nm으로 10nm씩 측정하여 총 35개의 범위를 가진다. 분석 결과 데이터는 총 4가지로 디옥시헤모글로빈 농도(hhb: 산소가 포화 되지 않은 헤모글로빈), 옥시 헤모글로빈 농도(hbo2:산소가 포화 된 헤모글로빈), 칼슘 농도(ca), 나트륨 농도(na) 이다.
[그림3]는 천체 유형 분류 데이터셋에서 Class(라벨)의 분포도를 나타낸 그래프 이다. 위의 그래를 보게 되면 QSO가 가장 많고, STAR_PN이 가장 적으며 차이가 많음을 보여 준다. 이상태로 모델 학습을 수행 할 경우 QSO로 예측했을때 가장 좋은 정답률을 보이기 때문에 모델이 한쪽으로 치우쳐져 정확한 모델을 구현하기 어렵다. 이러한 데이터 불균형의 문제를 해결하기 위한 방법으로 데이터 재분배(Data Sampling)와 Class Weight가 있다. 데이터 재분배는 데이터셋의 조합을 균형있게 맞추어 여러개의 데이터 셋을 만들어 모델 학습에 사용되는 데이터가 균등하게 적용 될 수 있도록 하는 방법이다. Class Weight는 해당 Class의 비율의 역수 값의 가중치를 적용하여 QSO처럼 빈도수가 높은 Class가 모델에 미치는 영향은 줄이고, STAR_PN처럼 빈도수가 낮은 Class가 모델에 미치는 영향을 높여 균등하게 만드는 방법 이다.
천체 유형 분류 데이터와 생체 광학 예측 데이터 모두 빛을 관측하여 측정된 결과 값을 가지고 성분을 예측/분류 하는 문제 이다. 각자 정해진 데이터를 그대로 사용할 때보다 기본적인 사측 연산을 통해 데이터를 늘려 예측 모델을 생성했을 때 더 좋은 성능을 보여 주었다. 뿐만 아니라 정규 분포, 최대/최소 값, 평균 값 등의 연산도 좋은 성능을 보여 주었다. 추가적으로 각 분야에서 사용되는 고유의 공식(SDSS Stellar Targeting-Lagacy 공식, 분광 광도계 공식)을 추가 적용 했을때 역시 좋은 성능을 보여 주었다.
[그림5]은 생체 광학 기본 데이터(71개)와 추가 데이터(2,285개)의 Input 데이터에 대해 4가지의 Output 데이터(hhb, hbo2, ca, na)의 상관 분석 결과를 보여준다. 수치값은 절대 값으로 처리하여 0에 가까울수록 관련이 없고 0 이상의 값은 음 또는 양의 관계가 있음을 보여 준다. src보다 dst가 결과에 영향을 더 끼침을 확인 할 수 있다.
앙상블모델의 개념은 여러 모델을 결합하여 강력한 모델을 생성 하는 것이다. 즉, 약하게 설계된 여러 모델을 학습 시키고 각 모델의 결과를 종합하여 최적의 결과를 얻는 방식을 의미 한다. 여러 개의 모델을 학습 할 때 기존의 데이터를 균등하게 분배하여 여러 데이터 셋으로 나누어 학습을 수행 하기 때문에 데이터가 불균형한 문제에 있어도 좋은 성능을 보여 준다.
앙상블 모델에는 크게 배깅과 부스팅 2가지 기법이 있다. 배깅은 샘플링된 데이터로 여러개의 모델을 학습 시켜 결과를 집계 하는 방식이다. 대상 데이터로부터 복원 랜덤 샘플링을 수행 하고 이렇게 추출한 데이터가 일종의 표본 집단이 된다. 이러한 데이터를 이용하여 각 모델을 학습 시키고 그 결과를 집계하여 최종 결과를 얻는 방식으로 알고리즘의 안정성과 정확성을 향상 시기키 위한 방법이다. 부스팅은 맞추기 어려운 문제를 맞추는데 초점을 둔 기법이다. 배깅과 전체적인 방법은 똑같지만 이전 모델이 다음 모델 생성에 영향을 끼치는 점에서 차이가 있다. 이런식으로 처리하면 오답에 대해 높은 가중치를 부여하고, 정답에 대해 낮은 가중치를 부여하여 오답처리에 집중하여 성능을 향상하는 방법이다.
배깅 모델의 대표적인 모델인 Random Forest모델이다. 이 모델은 Scikit-learn에서 기본으로 제공하는 모델 중 하나 이다. 보편적으로 적용이 가능하기 때문에 어떠한 모델을 적용하기 전에 가능성 여부를 확인 하기 위해 사용되기도 한다. 가장 기본적이고 널리 쓰이는 머신러닝 분류 모델중 하나인 Decision Tree의 가장큰 단점은 over-fitting(과적합)이 될 가능성이 높다는 것이다. 이는 가지치를 통해 트리의 최대 높이를 설정할 수 있지만 이로 인해 over-fitting을 해결할 수는 없다. 이런 문제를 해결한 모델이 Random Forest 모델이다. 부스팅 모델에서 자주 사용되는 모델에는 XGBoost와 LightGBM 모델이 있다. 부스팅 모델의 가장 큰 단점은 현재 모델의 가중치 값이 다음 모델에 영향을 주기 때문에 연산량이 많아 속도가 느리다는 단점일 가지고 있다. 위의 두 모델을 이러한 속도를 개선한 모델이다. 최근 많은 대회에서 상위 랭커들이 사용하여 인기가 높은 모델들이다.
천체(우주) 유형 분류와 생체 광학 데이터 분석 모델 학습 및 예측을 수행 함에 있어 크게 4단계로 처리 하였다. Pandas를 이용 하여 CSV형태의 데이터를 불러와서 Feature와 Label을 분류 하였다. 그 후, 사칙 연산과 관련 공식을 이용해 Feature 데이터를 추가 생성 한 후 여러 앙상블 모델(Random Forest, XGBoost, LightGBM 등)에 적용하여 모델을 학습 한 후 결과를 예측하여 가장 좋은 성능을 보여주는 모델을 선택 하였다. 천체(우주) 유형 분류는 Class에 맞게 분류 하는 문제 이고, 생체 광학 데이터 분석은 해당 수치를 예측 하는 문제 이기 때문에 Output의 형태가 다를 뿐 모델의 생성 및 적용 방법은 동일 하다.
가장 좋은 성능의 모델을 얻기 위해 가장 기본적이고 인기가 있는 3가지 앙상블 모델을 모두 적용 하였다. 각각의 모델은 파라미터(Parameter)설정을 통해 모델을 튜닝 하여 좋은 성능의 모델을 학습할 수 있다. 각 모델의 파라미터 튜닝에 대한 설명은 다음 링크(Random Forest, XGBoost, LightGBM)에서 자세히 확인 할 수 있있으며, [그림10]에서 설명한 내용은 자주 사용되고 가장 중요한 파라미터를 요약하여 설명한 것이다. 본 경연 대회에서는 3가지 모델을 모두 적용 하였고, 가장 좋은 성능을 보여준 모델은 LightGBM이다.
머신러닝 모델은 각각 다양한 종류의 파라미터가 있고 데이터에 따라 최적의 파라미터는 달라진다. 이 때문에 Scikit-learn에서는 최적의 파라미터를 찾는 GridSearchCV라는 함수를 제공한다. GridSearchCV를 이용하면 정해진 범위 안에서 최적의 파라미터와 성능 값을 얻을 수 있다. GridSearchCV의 input값은 dict 형태로 조절하고자 하는 파라미터명을 Key값으로 설정하고 확인하고자 하는 수치를 List형태로 Value값으로 지정하면 모든 조합을 확인하여 최적의 파라미터를 얻을 수 있다.
Log-loss는 천체(우주) 유형 분류 성능 평가에 사용되는 평가식으로 분류 모델 평가시에 사용된다. 예측 문제에서 최종적으로 맞춘 결과만 가지고 성능을 평가 할 경우, 어느정도의 신뢰도가 있는지 정확한 평가가 어렵다. 예를 들어 O와 X를 맞추는 문제에서 10번 시도 했을 때 정답이 O인경우가 5번, X인 경우가 5번 이라고 하자. 단순하게 최종 결과를 모두다 맞췄다고 하면 정확도는 100%가 될것이다. 하지만 정답 O일 때, O일확률이 51%, X일 확률이 49%라고 예측하여 최종적으로 O를 선택했다면 그 정답의 신뢰도는 떨어지게 된다. Log-loss는 이처럼 모든 카테고리에 대한 확률 값을 기본츠로 점수를 측정하기 때문에 신뢰도가 향상 된다. 또한 log값을 사용했기 때문에 오차의 범위가 클수록 더 큰 패널티를 부과해 더 정확하고 신뢰할 수 있는 평가를 할 수 있다.
MAE(평균 절대 오차)는 생체 광학 데이터 분석에서 성능 평가로 사용된 예측 모델 평가식이다. 예측 값과 정답 값의 차이에 절대값을 취하여, 그 값을 전부 더한 후 개수로 나나누어 평균을 낸 값 입니다. 예측 결과와 정답 결과가 떨어진 정도의 절대값을 평균을 낸 값이기 때문에 전체 데이터의 학습된 정도를 쉽게 파악할 수 있는 장점이 있다. 하지만 절대값을 취하기 때문에 해당 예측값이 어떤 식으로 오차가 발생 했는지, 음수인지 양수인지 판단할수 없다는 단점이 있다.
천체 유형 분류 모델과 생체 광학 예측 모델에서는 LightGBM모델을 사용 했을 때 가장 좋은 성능을 보여 주었다.
천체(우주) 유형 분류 우승자의 코드에서 주목해야할 것은 데이터 전처리(추가 데이터 생성)와 모델 파라미터 설정값이다. 우승자 코드 역시 LightGBM모델을 사용 하였다. 그리고, LightGBM에서 사용 가능한 파라미터를 많이 설정 하였다. GridSearchCV을 통해 모델의 최적의 파라미터를 설정 하였습니다. 사칙연산과 천체 영역 관련 공식을 통해 Feature를 추가하였고, Permutation_importance를 통해 불필요한 Feature를 제거하여 최종적으로 131개의 Feature를 이용하여 모델을 학습 하였다. 최종 모델의 성능은 0.3254 이다.
생체 광학 데이터 분석 우승자의 코드역시 천체(우주) 유형 분류 우승자 코드와 매우 유사한 형태를 보여주고 있다. 모델은 LightGBM을 사용하였고, GridSearchCV를 이용하여 최적의 파라미터를 설정하였다. 데이터를 사칙연산과 생체 광학 관련 공식을 기반 이용하여 데이터를 추가 하였고, 불필요한 Feature를 제거하여 최종적으로 6,104개의 Feature를 이용하여 모델을 생성 하였다. 최종 모델의 성능은 0.7207 이다