Matlab 분류 학습기로 전통적 머신러닝 알고리즘들을 구현한 방법에 대해서 다뤘었습니다. 그리고 회귀이든 분류이든 트리를 기반으로 앙상블모델로 예시를 들고 추천했었습니다. 이번 글에서는 왜 그렇게 하였고, 알고리즘별로 어떤 장단점이 있는지 간단하게 적어보려합니다. 아래의 내용들은 성균관대학교 소프트웨어학과 이지형 교수님의 비전공교원을 위한 강의, 전기전가공학과 박은병 교수님의 머신러닝코너스톤 강의, 그리고 Matlab 함수 설명들을 포함하여 "매우 주관적"으로 구성하였습니다. 절대적인 내용이 아니므로 참고용으로 봐주시면 감사하겠습니다.
우선 Matlab 분류 학습기에 있는 모델들은 다음과 같습니다. 화면에도 다 안나온게 있을 정도로 종류가 매우 많은데요, 세세한 갈래보다는 전체적인 설명들 위주로 하겠습니다.
전체를 크게 설명 가능성과 정확도로 놓고 보면 다음과 같이 나눠볼 수 있습니다.(매우 주관적입니다)
1. 빨간색
빨간색으로 표시된 방법들은 매우 유서깊은 방법으로, 사실 머신러닝보다는 통계에 가까운 개념들입니다. 로지스틱회귀와 판별분석은 통계 수업에서도 배울 만큼 통계에서는 매우 많이 사용되는 분석방법입니다. 기본적으로 분포에 대해서 정규성 (decision tree는 예외) , 독립성 가정이 들어가기 때문에 데이터의 수가 적고, 분류의 정확도보다는 과정을 해석하는 것이 훨씬 중요할 때 사용하는 것을 권합니다.
- 로지스틱 회귀
- 장점 : 로지스틱 회귀는 특징이 증가할 때, 클래스에 속할 확률이 얼마나 증가하는지를 직관적으로 보여줍니다.
- 단점 : 사용되는 가정이 굉장히 강하기 때문에 실제 복잡한 데이터에서 안 맞는 경우가 많습니다.
- 판별분석
- 장점 : 클래스를 잘 분리할 수 있는 평면을 데이터의 분산으로부터 찾는 알고리즘으로 설명성이 높습니다.
- 단점 : 각 클래스가 정규분포를 띈다는 가정이 들어가는데 이것도 매우 강한 가정이라, 정규분포를 안 띄는 데이터에 대해서 성능이 떨어집니다. (특히 선형판별분석은 두 클래스가 공분산도 같다는 가정이라 굉장히 특수한 케이스여야합니다.)
- 나이브 베이즈
- 장점 : 매우 간단하고, 계산비용이 작습니다. 관측된 데이터에 대해 조건부확률로 접근하기 때문에 해석도 쉽습니다.
- 단점 : 학습한 적 없는 데이터가 들어왔을 때 성능이 떨어질 수 있습니다.
- 결정트리 (의사결정나무가 일반적인 표현이나 Matlab의 표기를 따랐습니다.)
- 장점 : 순서도를 짜는 것과 같이 매우 단순한 구조로 되어있어 해석이 쉽습니다. 계산비용이 작습니다.
- 단점 : overfitting이 쉽게 일어나서 cross validation을 하지 않으면 결과를 신뢰할 수 없습니다. 여러 feature가 조금씩 달라지는 경우 판단이 어렵습니다.
통계나 머신러닝에 익숙지 않은 분들은 분류기를 생각하면 결정트리만 떠올리게 됩니다. 하지만 결정트리는 명확한 한계점이 있기 때문에 데이터의 분포가 사용가능한지 여부를 판단해야합니다.
Case 1데이터를 결정트리와 판별분석의 분류 방식을 개념적으로 비교해보았습니다. 판별분석의 경우 x1, x2의 상호작용을 고려해 경계면을 긋는 반면에, decision tree의 경우 계단처럼 경계면이 그려집니다. 이는 결정트리가 x1 > 0 ?, x2 > 0 ? 과 같은 단순 조건문으로만 구성할 수 있기 때문에 나오는 비효율입니다. Case1같은 상황에서 결정트리로 분류를 시도하는 것이 불가능한 것은 아니지만, 저런 logic을 구현하는 것 자체가 과적합의 위험도 높고 부자연스럽습니다. 여러 feature들이 영향을 서로 주고 받는 경우에, 판별분석의 경우 공분산, 로지스틱 회귀의 경우 상호작용항으로 모델링이 가능한 반면, 결정트리는 이를 모델링하기 위해서 데이터를 전체적으로 회전시켜야하는데, 이는 굉장한 비효율입니다. 산점도를 먼저 그려보시고, 이와 같은 분포를 띈다면 판별분석을 시도해보는 것이 낫습니다.
2. 초록색/파란색
초록색과 파란색 방법은 조금 더 복잡한 형태의 데이터를 다루기에 좋은 방법입니다. 일반적으로 분류 성능이 이전에 소개한 알고리즘보다 높은 것으로 알려져 있습니다.
- k-NN
- 장점 : 데이터와 가장 가까운 k개의 점들이 어떤 클래스에 속하는지를 보고 다수결로 결정하기 때문에 복잡한 분포에도 사용할 수 있고 설명성도 높은 편입니다.
- 단점 : 변수의 스케일이 매우 중요합니다. 차원이 높아지면 성능이 급격히 떨어집니다. 데이터가 많을 수록 많은 연산이 들어갑니다.
- SVM
- 장점 : 데이터를 나누는 경계면을 학습하는 방법으로, 적은 데이터로도 구성할 수 있고, 비선형 커널들로 복잡한 분포에도 적용 가능합니다.
- 단점 : 하이퍼파라미터 튜닝이 상대적으로 어려울 수 있습니다.
- Ensemble model
- 부연설명 : 일반적으로 앙상블이라함은 여러 모델들을 합쳐서 더 나은 모델을 만드는 방식을 총칭하는데, Matlab 에서 지칭하는 ensemble model들은 대부분 decision tree를 ensemble해서 만든 배깅트리나 부스팅 트리를 의미합니다.
- 장점 : 여러 결정트리를 합쳐서 만드는 방식으로 이상치에도 강건하며 튜닝이 쉽습니다.
- 단점 : 학습 시간이 상대적으로 길고, 데이터를 많이 필요로합니다. 다른 알고리즘들에 비해 해석이 덜 직관적입니다.
맺음말
정확도만 목적이라면 머신러닝 알고리즘을 학습시킬 때 사실 이 모든 특징을 다 알 필요는 없습니다. 아래와 같이 '모든 빠른 훈련' 또는 '모든 훈련' 이라는 옵션을 눌러서 가능한 모든 모델을 다 시험해보면 되기 때문입니다.
하지만 논문에 다 해보고 제일 잘되는거 골랐다고 당당하게 쓰기는 좀.. 그렇죠. 더욱이 머신러닝 불신론자들이 많은 필드라면 최소한의 합리적인 설명은 있어야합니다. 그리고 시간을 아끼기 위해서도, 여러 기법들을 조합해서 최선의 분류기를 만들기 위해서도 위의 내용들을 알아두면 도움이 되지 않을까 싶습니다.
'공학자를 위한 머신러닝 > Matlab을 사용한 머신러닝' 카테고리의 다른 글
MML-08 머신러닝 모델들을 고르는 방법 2 - 회귀 (0) | 2024.11.18 |
---|---|
MML-06 Classification Learner (분류 학습기) - 2 (0) | 2024.11.12 |
MML-05 Classification Learner (분류학습기) (4) | 2024.11.11 |
MML-04 Regression Learner (회귀학습기) -2 (0) | 2024.11.10 |
MML-03 Regression Learner (회귀학습기) (1) | 2024.11.09 |