머신러닝이 대세다! 라고 들었을때 공부했어야 했는데, 라고 생각했을때 공부했어야 했는데... 라는 생각이 많이 드는 요즘이다. 마냥 외국어 같던 머신러닝도 어느덧 석사 중반에 접어들며 '익숙한' 개념이 되었지만, '정확히 알고 있는' 개념은 아닌지라 짬을 내어 정리해 두고자 한다.
MIT Press 에서 발간한 '머신러닝 기초'를 보조 서적으로 읽고 있다. 나름 머신러닝 주류 개념에 대한 정리가 잘 되어있는 자료라고 들어 보고 있는데, 무엇보다도 평소 혼용해서 사용하고 있던 여러 용어에 대한 스스로의 부족함을 뼈저리게 느낄 수 있었다. '어중간하게 아는게 가장 무섭다'는 말이 있듯이 돈만 쓴 바보 석사생이 되면 안되겠다는 결심으로 한두장씩 거북이처럼 읽어가고 있다.
머신러닝이란?
머신러닝이란, 경험에 기초하여 성능을 개선하고, 정확한 예측을 하기 위한 컴퓨터의 연산 방법론을 종합적으로 의미한다. 여기서 경험이란 학습자에게 제공되는 과거의 정보로, 대개 디지털 정보의 형태로 수집 및 제공된다. 학습자가 성공적인 예측을 하기 위해서는 이 경험의 양과 질이 중요하다.
머신러닝은 효율적이고 효과적인 알고리즘을 설계하는 작업을 포함한다. 컴퓨터 과학에서 알고리즘을 평가하는 수단인 time 및 complexity 외에, 머신러닝은 정확한 학습을 위해 요구되는 표본의 크기를 정의하는 sample complexity 라는 평가 기준을 추가로 요한다.
머신러닝 적용 분야 및 예시
머신러닝이 적용되는 여러 분야 중 몇가지 예시를 들자면 아래와 같다.
- 텍스트 및 문서 분류: 스팸 감지
- 자연어 처리: 스피치 태깅, 발화자 인식 등
- 필기체 인식 (OCR)
- 거짓 정보 탐지: 거짓 신용카드 및 전화 정보 인식
- 컴퓨터 비젼: 이미지 및 얼굴 인식
- 추천 시스템, 검색엔진, 정보 추출 시스템 등
이처럼 머신러닝 방법론은 수없이 많은 영역에서 활용 범위를 넓혀가고 있다. 이번엔 관점을 바꾸어, '학습하는 문제' 또는 '해결하고자 하는 문제'의 관점에서 분류를 해보자.
- 분류: 각 항목을 여러개의 카테고리 중 하나에 배정한다. 기사 내용을 담은 문서를 분석하여 '정치', '스포츠', '경영/경제' 등 부합하는 주제의 카테고리를 부여하는 경우.
- 회귀: 각 항목에 부합하는 하나의 실수값을 예측한다. 주어진 정보를 바탕으로 기업의 주가를 예측하는 경우가 이에 해당한다. 예측된 값이 실제 값에 얼만큼 근접한가?를 바탕으로 모델 성능을 평가한다.
- 랭킹: 특정 기준에 따라 항목의 순서를 정한다. 특정 검색 키워드 (쿼리)에 가장 적합한 페이지 순서를 판단하는 경우를 예시로 들 수 있다.
- 군집화 (Clustering): 동일한 성격을 지닌 항목 끼리 묶이도록 영역을 나누는 작업을 의미한다. SNS상의 활동을 기반으로 동일한 커뮤니티로 묶는 작업과 같이, 주로 방대한 데이터를 분석할때 활용한다.
- 차원축소 및 다양체 (Manifold) 학습: 특정 항목에 대한 다차원 표현에서, 중요한 정보를 최대한 유지하며 보다 적은 차원으로 표현하는 경우이다. 그림과 같이 복잡한 형태의 자료에서 유의미한 관계를 도출하는 컴퓨터 비전의 분야에서 폭넓게 활용된다.
결국 실제 활용의 관점에서 머신러닝의 목표는, '새로운 데이터 값'에 대한 결과를 정확히, 그리고 효율적으로 예측해 내는데 있다고 정리할 수 있겠다.
기본적인 용어의 정의
우리나라 말로 공부하는 사람도 있고 영어로 개념을 공부하는 사람도 있다. 필자는 해외 대학원 석사 과정을 진행중이므로, 필요에 따라 영어로 개념을 정리하고자 했다. 'MIT Press'에서 발간한 'Foundations of Machine Learning'에 의거한 용어 기준이다.
- Examples: 학습 및 평가를 위한 각각의 데이터 항목. 스팸 메일 분류 문제의 경우, 각 이메일 메세지가 example이 된다.
- Features: example 가 지닌 속성의 집합. 대개 벡터 형태로 표현되며 이메일의 길이, 발신자, 제목명, 특정 키워드 포함 여부등이 feature에 포함 될 수 있다.
- Labels (레이블) : example 에 부여되는 값 또는 카테고리. 스팸 메일 분류 문제의 경우 '스팸 맞음', '스팸 아님'의 카테고리를 부여할 수 있다.
- Training (학습) sample: 알고리즘을 학습시키기 위한 목적의 데이터로서, 활용되는 example과 feature의 집합으로 구성된다
- Validation sample: 알고리즘의 파라미터를 조율하기 위한 목적의 데이터로서, 여러 알고리즘 중 가장 좋은 성능의 모델을 선정하는데 사용한다
- Test sample: 최종 선정한 학습 알고리즘의 성능을 평가하기 위해 활용하는 데이터. 스팸 메일 예시의 경우, 알고리즘을 활용하여 예측한 레이블 ('스팸 맞음' or '스팸 아님')을 실제 레이블 값과 비교하여 얼마나 효과적으로 분류하는 지 판별한다.
- Loss Function: 예측된 레이블과 실제 레이블 간의 차이를 측정하는 함수. 분류 문제의 경우 결과에 따라 0 또는 1을 부여하며, 회귀의 경우 참 값으로 부터 벗어난 정도를 활용한다.
스팸 메일 분류 문제를 통해 본 '학습과정' 예시
스팸 메일을 분류하기 위한 학습 과정을 정리해 보자. 먼저, 주어진 데이터를 무작위로 Train / Validation / Test 샘플로 나눈다. 나누는 기준에 대한 답은 없지만, 조율이 필요한 파라미터 값의 개수에 비례하여 Validation 샘플을 배정하고, 한정된 양의 데이터를 가지고 있다면 효과적인 모델 학습을 위해 Train 데이터를 Test 보다 많이 배정한다.
다음으로, 주어진 example 의 특성을 설명하는데 적합한 feature를 선별한다. 유의미한 feature 는 효과적인 알고리즘을 학습하는 자양분이 되지만, 반대로 의미없는 feature 는 잘못된 방향으로 이끄는 모델을 낳을 수 있다. 매우 중요한 과정이지만 선택은 결국 분석하는 유저의 몫이다. 결국, '학습하는 문제를 유저가 얼만큼 잘 이해하고 있는가?'에 따라 feature 선정은 물론 전체 모델의 성능에도 지대한 영향을 미칠 수 있는 것이다.
선택된 feature 를 활용하여 모델을 만들고, Validation 샘플로 여러 모델을 비교하며 최적의 파라미터 값을 갖는 모델을 찾는다. 이 중 가장 좋은 성능을 보여주는 파라미터 값의 모델을 최종 선택한다.
마지막으로, 선정된 모델 및 Test 샘플을 사용하여 모델의 최종 성능을 도출한다. 다시 말해, '주어진 문제를 얼만큼 정확히 수행해 내는가?' 를 설명해 주는 정량적인 수치 (loss function)를 얻는 과정이다.
알고리즘은 주어진 Train 데이터의 속성을 기준으로 학습하기에 필연적으로 '지속성'을 띄고, 따라서 새로운 Test 데이터에 대해 틀린 예측을 할 수 있다. 아래 그림을 통해 한번 살펴보자.
어느 알고리즘이 더 좋은 알고리즘일까?
좌측의 그림은 '주어진 데이터 내에서' 색상을 구분해 내기에는 적합하나, 경계선 부근의 새로운 데이터 값에 대한 '일반화'된 예측을 하기 어렵다는 문제를 지닌다. 오른쪽 모델은 몇개의 오류를 범하는 반면, 새로운 데이터 값에 대해 일반화 된 기준을 적용하여 분류할 수 있다는 장점을 지닌다. 이와 같이, 최적의 모델을 찾는 작업은 분류/예측의 정확도 및 새로운 데이터에 대한 일반화 가능성을 복합적으로 고려해야 하는 작업이다.
'🧑💻 IT 범생이 Finn > 🤖 데이터 석사 생존기' 카테고리의 다른 글
꼭 알아야 하는 머신러닝 필수 개념 (3): 학습방법 편 (2) | 2021.06.28 |
---|---|
꼭 알아야 하는 머신러닝 필수 개념 (2): K-fold CV 교차검증 (0) | 2021.06.26 |
빅데이터 분석기사 정보 및 필기 시험 후기 분석 (기출 문제 정리) (0) | 2021.06.21 |
딥러닝 필수개념: 텐서 TENSOR 이해하기 (0) | 2021.06.19 |
SQL보다 먼저 배워야 하는 데이터 전처리 3단계 (빅데이터 분석기사 자격증 준비) (1) | 2021.06.17 |