brunch

You can make anything
by writing

C.S.Lewis

by JejuGrapher Nov 10. 2020

달고나 16. 맘대로 알고리즘의 분류

My View on Taxonomy of Algorithms

Remark.  

이 글은 이해를 돕기 위한 지극히 개인적인 관점에 의해 작성한 것이므로 일반적인 체계와 매우 다름

개별 알고리즘의 상세한 설명은 다른 텍스트북이나 리소스를 참조하기 바람   


일반적으로 기계학습 알고리즘은 크게  Unsupervised (비지도) 학습과  Supervised (지도) 학습으로 나뉜다. 최근에는 여기에  Reinforcement (강화) 학습을 추가해서 3개고 분류하는 경향이 있다. 좀 더 깊이 들어가면 정답 데이터 (Y)를 얻기 힘든 현실을 반영해서 Unsupervised와 Supervised의 특성을 결합한 Semi-supervised 학습이 추가될 수 있다. 정답은 아니지만 바람직한 방향으로 가이드하는 Reinforcement도 Supervised의 일종으로 봐야 한다는 게 저 개인의 생각이지만, 일반적으로는 이 둘을 분리한다. 시험을 치르고 정답을 불러주면서 학생들에게 직접 채점하도록 하는 것과 시험지를 회수해서 모두 채점해서 점수를 알려주는 것의 차이가 있지만, 둘 다 선생(지도)이 있다는 점에선 동일하기에 강화 학습도 지도 학습으로 보는 게 맞다는 의견이다.


이렇게 분류해서 PCA나 클러스터링은 unsupervised에 속하고, classification이나 regression은 supervised에 속한다 식으로 결론을 지으면 뭔가 많이 허전하다. 기계학습을 매우 협소한 범위로 축약시킨 느낌이 강하다. 그래서 좀 더 넓은 범위에서 그리고 조금 다른 시각에서 기계학습 알고리즘을 분류한다. 지극히 개인적인 관점이니 그냥 참조만 하고 다른 곳에 -- e.g., 면접이라든가 -- 가서 이 내용을 가지고 자신 있게 말하지는 말기 바란다.


대략 아래 그림과 같다.

     Characteristic

설명하기 다소 어려운데, 데이터에 내재한 특성을 파악하고 활용하는 거다. Supervised 방식도 가능하지만 기본적으로 주어진 데이터만으로 그 속의 규칙과 함의를 찾고 활용한다. 대표적으로 PCA가 이 카테고리에 속하는데, PCA는 데이터의 분포를 활용해서 차원을 축소하고 노이즈 데이터를 줄이는 방법이다. 많은 디멘전 축소 방식이나 이를 통한 시각화도 여기에 포함된다. 새로운 데이터가 주어졌을 때 가장 먼저 하는 EDA도 큰 틀에서 여기에 속한다고 볼 수 있다. 그리고 피쳐들 간의 규칙이나 샘플들 간의 규칙을 찾는 Association도 데이터의 특성을 파악 또는 활용하는 거라 볼 수 있다.


     Grouping   

두 번째도 Unsupervised에 속하는데, 흔히 클러스터링이라 불리는 군집화 단계다. 앞서 말한 Association은 군집화에 살짝 겹쳐있는 느낌^^ 어쨌든 단순히 데이터의 특성을 파악하는 것을 넘어서 유사한 (또는 관련성 높은) 데이터를 하나로 묶어준다.


     Prediction   

예측부터는 정답 데이터 (Y)가 필요한 Supervised에 속한다. 예측 모델을 y = f(x)라 표시한다면 프리딕션은 주어진 x에 대해서 y값을 찾는 거다. 어떤 카테고리 또는 클래스에 속했느냐는 Classification이 되고, 순서가 있는 클래스가 매우 극한으로 세분화되면 어느 순간 실수 값 (클래스)를 예측하는 Regression이 된다. 그리고 앞서 언급했듯이 개인적으론 Reinforcement도 supervied prediction으로 본다 (일반적인 관점이 아니니 무시해도 좋다). 어쨌든 주어진 X에 대해서 결괏값 Y를 찾는 문제다.


     Optimization   

       예측 모델을 학습할 때 loss 함수의 최적/최솟값을 찾는 optimization을 의미하지는 않는다. 프리딕션이 x에 대한 y를 찾는 문제라면, Optimization은 특정 y값을 얻기 위한 X를 찾는 과정이다. 즉, y = f(x) 모델을 이용해서 x = f-1(y)를 찾는 거다. Y = 0이 되는 X값은? 또는  f(x)가 최소가 되는 X값은? 과 같은 문제를 푸는 거다. 예를 들어, 20대 남성의 광고 A에 대한 CTR이 10%라는 것을 계산하는 것은 예측 문제이고, A 광고의 CTR이 15%가 되는 조건 (유저군)을 찾는 것이 최적화 과정이다. 실제 공장의 많은 프로세스들에는 예측을 넘어 최적화가 필요하다. 가장 대표적인 최적화 방식은 LP에서 Simplex method가 있고, 복잡한 문제에서는 Genetic Algorithm (GA)나 Simulated Annealing (SA)와 같은 Evolutionary 방식을 많이 사용한다. 그리고 예측모델을 바탕으로 한 Simulation도 최적 솔루션을 찾는 좋은 방법이다. 앞서 말한 GA나 SA도 결국 simulation을 순차적 (evolutionary)으로 적용한 거다.      


     Control   

       마지막은 다소 기계학습과 거리가 있어 보이지만, 제어 Control가 마지막 최종 보스라 생각한다. Optimization을 통해서 최적 X값을 찾았다면 이걸 실제 문제에 적용해야 하는데, 이제 Control이다. 예측 모델 기반으로 예측하고 실행하고 피드백을 받아서 예측모델을 재학습 해서 다시 예측, 실행, 피드백을 반복하는 Model Predictive Control (MPC)라는 개념도 알아두면 좋다.     


이상의 구분은 지극히 개인적인 생각이다. 일반화하면 다소 위험할 수 있으니 그저 참고용으로만 사용하기 바란다. 하지만 군집화와 예측을 넘어 최적화와 제어를 고려하지 않고 기계학습/인공지능을 학습한다면 속된 표현으로 화장실에서 뒤처리를 제대로 하지 않고 바지를 올린 것과 별반 다르지 않다.





매거진의 이전글 달고나 15. 모델 복잡도 II

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari