Machine Learning Classification involves creating models to predict or classify data into groups, typically through supervised learning.
KNN : Uses neighbor information to classify data; simple and intuitive algorithm.
SVM: Commonly used for binary classification by representing data in vector space.
Decision Tree: Based on inductive reasoning, splits data iteratively, optimizing tree structure using entropy and information gain. Pruning methods address overfitting by adjusting tree size.
머신러닝 분류
머신러닝에는 데이터세트의 특징과 목적에 따라 몇 가지 접근법이 있는데, 지도학 습은 그중 하나다. 지도학습은 레이블이 있는 데이터세트를 가지고 갖가지 알고리 즘을 통해 데이터를 구별해내는 판별식을 만든 후 새로운 데이터가 어떤 결과값을 갖는지를 알아내는 학습 모델이다.
지도학습은 크게 예측과 분류로 나뉘는데 예측은 앞장에서 설명했던 회귀분석이 대표적이다. 분류라는 것은 말 그대로 어떤 입력된 데이터가 어떤 그룹에 속하는 지 알아내는 것이다. 이때 입력 데이터가 속할 그룹은 각 학습 데이터가 가지는 레이블의 세트를 말한다. 예를 들면, 붓꽃을 구분하는 경우 세토사, 버시컬러, 버지니카 레이블이 분류 그룹이 된다. 머신러닝의 분류 모델은 우편물의 자동 분류를 위해 필기체를 인식한다거나 도난 된 신용카드가 사용되는 것을 추적한다거나 악성 이메일이나 해킹을 감지하는 분 야 등에 사용된다.
KNN 모델
분류에 사용되는 KNNk-Nearest Neighbor 모델은 머신러닝 모델 가운데 가장 직관적 이고 간단한 지도학습 모델 중 하나다. KNN은 인스턴스 기반의 러닝instance-based learning 또는 메모리 기반의 러닝memory-based learning이라고도 한다. 그 이유는 학습을 사전에 하지 않고 미뤄두고 있다가 새로운 데이터의 태스크 요청이 오면 그때 일반화 분류를 수행하기 때문이다. 즉, 학습에 필요한 데이터를 메모리에 기억만 하고 있다가 인스턴스가 발생될 때 비로소 일반화하는 일을 시작한다. 이러한 이유로 레이지 러닝 lazy learning 이라고도 한다.
KNN의 기본적인 개념은 새로운 데이터가 어느 그룹에 속하는지 분류하기 위해 그 데이터에 가장 가까이에 있는 학습 데이터가 속한 그룹을 알아보는 것이다. 이를 위해 먼저 레이블된 학습 데이터들의 특성을 정량화한 후 좌표공간에 표현하는 작 업이 필요하다. 만약 특성이 2개이면 2차원 평면에 각 학습 데이터가 표현된다. 알 고자 하는 새로운 데이터를 중심으로 가상의 원(2차원인 경우)을 확장해 가다가 첫 번째 데이터가 발견되면 그 데이터가 속해있는 그룹(레이블)이 바로 새로운 데 이터의 그룹이 되는 것이다(k = 1인 경우). 같은 방법으로 3개의 데이터가 발견될 때까지 가상의 원을 확장하고, 이때 발견된 3개의 데이터 가운데 가장 많은 그룹을 새로운 데이터의 그룹으로 결정한다(k=3인 경우). 이를 일반화하면 가상의 원을 1개의 데이터가 발견될 때까지 확장하고 개의 데이터 중 가장 많은 그룹을 새로 운 데이터의 그룹으로 정하는 방법이다(k=n인 경우). 즉, KNN에서의 K는 새로운 데이터가 속한 그룹을 알아내기 위해 인접 데이터를 k개만큼 찾겠다는 뜻이다.
서포트 벡터 머신
SVMsupport vector machine은 최근까지 가장 보편적으로 사용됐던 분류를 위한 머신러 닝 모델이다. 지도학습 모델로서 주로 다루고자 하는 데이터가 2개의 그룹으로 분 류될 때 사용한다. 예를 들면, 어느 마을에 신문 A를 구독하는 가구와 그렇지 않은 가구가 있을 때 새로 이사온 사람이 신문 A를 구독할 경우를 예측하는 모델이다. SVM은 이름에서 말하는 바와 같이 학습 데이터가 벡터 공간에 위치한다고 생각한 다. 즉, 벡터 공간은 직각 좌표계에 학습 데이터가 위치한 공간이다.
의사결정 트리
귀납적 추론을 기반으로 하는 의사결정 트리는 실무적으로 가장 많이 사용되고 있 는 머신러닝 모델 중 하나로 지도학습 모델이다. 의사결정 트리는 주로 불연속 데 이터를 다루며 노이즈가 발생해도 중단되거나 엉뚱한 결과를 보여주지 않는 매우 강건한robust 모델이다. 의사결정 트리의 대표적인 적용 사례는 환자의 진료기록을 토대로 증상을 유추하 는 경우, 대출을 받고자 하는 사람의 신용을 평가하는 경우, 그리고 대출자의 상환 불이행 가능성을 예측하는 경우 등이 있다. 그림 5.7은 의사결정 트리 모델이 아라 비아 숫자의 필기체 인식에 사용된 예를 보여준다. 아라비아 숫자의 특성을 왼쪽 으로 트인 것(), 오른쪽으로 트인 것(C), 그리고 폐곡선(ᄋ)의 조합으로 정하고 필기체를 인식하는 과정을 보여준다. 물론 필기체 숫자 이미지에 3가지 특성을 부 여하기 위해서는 디지털 이미지 인식을 위한 전처리 과정이 필요하다.
의사결정 트리의 알고리즘은 나무를 거꾸로 세운 것과 같이 맨 위쪽에 위치한 루 트root부터 시작해 줄기branch, 이파리leaf 순서로 하향식 의사결정 구조를 띤다. 상황instance을 분류하는 부분을 의사결정 노드decision node라고 하고 또 다른 줄 기를 만드는 분기점이 된다. 맨 상위에 있는 의사결정 노드를 루트 노드 root node라 고 한다. 만약 의사결정 노드 다음에도 상황을 판단하는 또 다른 의사결정 노드가 있으면 ㅁ으로 표시하고 맨 마지막인 이파리 노드가 나오면 o 표시한다. 각 노 드를 속성attribute이라고 하고 각 속성들은 분기를 결정하는 속성값attribute value을 가 진다. 이파리 노드의 속성값이 바로 그룹을 대표하는 레이블이다. 상황instance은 이러한 일련의 속성값에 따라 결정된다. 예를 들면, 1 → 2 → 4 → No가 하나의 상황이다.
의사결정 트리는 전형적인 분류 모델로, 다른 지도학습 머신러닝 모델과 마찬가지로 알고자 하는 데이터가 소속된 그룹을 알아내는 것을 목적으로 한다. 기본 개념 은 마치 스무고개 게임처럼 질문의 답을 반복적으로 이등분하는10 방식으로 찾아 내는 것이다. 스무고개 게임의 법칙은 상대방이 생각하고 있는 것을 가장 적은 질 문으로 알아맞히는 것이다. 그러기 위해서는 질문의 전략이 필요하다. 예를 들면, 첫 번째 질문이 물건이냐? 사람이냐? 만약 사람이라고 하면 여자냐? 남자냐? 하는 식이다. 처음부터 '홍길동이냐?"라고 이파리 노드에 있는 것을 물으면 맞출 때까지 거의 무한대의 질문을 해야 한다. 즉, 스무고개의 효과적인 전략은 반복적인 이등 분을 할 때 이등분의 효과가 큰 속성을 먼저 묻는 순으로 진행하는 것이다. 이러한 기준은 정확히 의사결정 트리에도 적용된다.
의사결정 트리는 여러 가지 알고리즘이 있는데, 1986년 로스 퀸란Ross Quinlan이 제 안한 ID3lterative Dichotomiser 3가 가장 표준적이다. 퀸란은 이후 1993년 ID3를 기반으 로 의사결정 노드에 있는 줄기를 효율적으로 제거하고 합치는 프루닝pruning 기법을 도입해 C4.5 알고리즘을 발표한다. 대부분의 의사결정 트리 모델은 다음과 같은 핵심적인 개념을 공통적으로 가지고 있다.
.하향식 의사결정 흐름
.그리디 탐색greedy search 기반의 트리 구조
의사결정 트리가 커가는 과정은 위 개념을 따르며, 이번 장에서는 가장 표준적인 의사결정 트리 모델인 ID3 알고리즘을 중심으로 의사결정 트리의 개념을 살펴보기로 하자.
그럼 최적의 의사결정 트리는 어떤 것이며 어떻게 만들 수 있을까? 스무고개 게임 에서와 같이 의사결정 트리의 구조를 가장 잘 만들려면 의사결정 노드 수를 가능 한 한 최소화해야 한다. 즉, 의사결정 트리에서는 키가 작고 가지가 별로 없는 빈 약한 나무가 좋은 나무인 셈이다. 왜냐하면 뿌리에서 이파리로 가는 경로가 그만 큼 짧아서 신속히 의사결정을 할 수 있기 때문이다. 이를 위해 ID3에서는 엔트로 피entropy와 정보 획득information gain이라는 개념을 이해해야 한다.
엔트로피를 설명하기 전에 정보 함수information function를 이해할 필요가 있다. 정보 함수란 어떤 사건이 나한테 얼마만큼의 정보의 가치를 주는지를 확률적으로 결정 하는 것이다. 즉, 발생할 확률이 작은 사건일수록 정보값이 크고 반대로 발생할 확 률이 높은 사건은 일반적인 내용일 가능성이 높으므로 그 정보값은 작다. 예를 들면 '지구는 돈다'라는 정보값은 0이다. 그 이유는 지구는 당연히 돌기 때문에 그 확 률은 1이고 따라서 이것은 전혀 새로울 게 없는 정보라는 뜻이다. 반대로 '지구에 혜성이 충돌한다'라는 사건의 정보값은 매우 클 것이다. 왜냐하면 그러한 사건이 일어날 가능성이 매우 낮기 때문에 그러한 '정보의 가치는 매우 높다'라고 말할 수 있다. 즉, 사건 x가 일어날 확률 P(x)가 1에 가까우면 정보의 가치는 0에 수렴하고 x가 일 어날 확률이 0에 가까우면 정보의 가치가 무한대로 커진다. 이러한 정보 함수를 이용해 엔트로피를 설명할 수 있다. 머신러닝에서는 학습 데이터의 집합에 해당된다. ID3에서 사용하고 있는 엔트로피 개념은 정보이론information theory의 개 념을 기반으로 하며, 그 의미는 여러 가지 임의의 사건이 모여있는 집합의 순수성 Purity 또는 단일성homogeneity 관점의 특성을 정량화해서 표현한 것이다. 정보이론 에서는 엔트로피의 결괏값 단위를 비트로 표현하는데, 비트를 스무고개의 예로 해석하면 그 상황을 이해하는 데 얼마만큼의 질문이 필요한가로 이해하면 될 듯 하다.
의사결정 트리는 정보이론에 근거한 통계학적인 접근법으로 개념이 직관적이고 노이즈에 대한 처리가 매우 우수하다. 하지만 실무적인 관점에서 연속적인 속성의 처리, 트리 크기의 결정, 효율적인 컴퓨팅 방법, 오버피팅 문제 등에서 개선의 여 지는 계속 남아 있다. 특히 오버피팅 문제는 모든 머신러닝에서 필수적으로 해결 해야 하는 것으로 좀더 주의깊게 들여다 볼 필요가 있다.
과도한 학습 데이터를 고려하다 보면 실제 문제에서 정확도가 떨 어진다. 의사결정 트리에서는 오버피팅 문제를 해결하기 위해 다음과 같이 두 가 지방법으로 접근한다. 첫 번째는 의사결정 트리가 충분히 학습 데이터를 분류했 다고 판단할 때 더는 노드를 생성하지 않는 방법이고, 두 번째는 의사결정 트리가 오버피팅을 감수하고 트리를 완성한 후 나중에 정확도를 떨어뜨리는 의사결정 노 드를 없애는 가지치기pruning 방법을 이용해 트리를 조정하는 방법이다.
첫 번째 방법은 매우 효율적으로 보이나 실제로 언제 정확히 노드 생성을 멈추는 가를 계산하는 데 어려움이 있다. 하지만 두 번째 방법은 여러 실험을 통해 성공적으로 구현된다는 것을 보여준다. 두 번째 방법을 포스트 프루닝post-pruning이라고 한다.
여기서 중요한 문제는 트리의 알맞은 크기를 결정하기 위해서는 어떤 기준이 필요 한가다. 포스트 프루닝 방법에서는 트리의 크기를 결정하는 방법으로 에러감소 프 루닝reduced error pruning과 룰 포스트 프루닝nule post pruning이 대표적이다. 다음은 두가지 프루닝 방법에 대한 간단한 개념을 설명한 것이다.
에러감소 프루닝 방법은 퀸란이 제안한 방법1987으로 기본 개념은 모든 노드를 프루닝 대상으로 고려한다. 모든 노드에 대해 노드 아래 부분sub-tree을 1 제거하거 나, 2 이파리로 만들거나, 3 노드가 속해있는 상위의 유사한 의사결정 노드에 결 합시킨다. 노드를 제거한 후에는 항상 검증을 통해 제거 전·후 정확도 비교를 수 행하고 이 과정을 제거 전보다 정확도가 낮아지기 전까지 반복한다. 에러감소 프루닝을 적용한 후의 오버피팅 결과를 보여준다.
룰 포스트 프루닝 방법은 1993년 퀸란이 C4.5 의사결정 트리 알고리즘을 발표하면서 제안한 방법이다. C4.5는 ID3 알고리즘을 룰 포스트 프루닝 방법으로 개선한 것으로 다음과 같은 방법으로 오버피팅 문제를 해결했다.
• 모든 학습 데이터를 가지고 ID3 알고리즘을 기반으로 의사결정 트리를 완성한다(이때
오버피팅 발생 가능)
.학습된 의사결정트리를 룰 세트rule set로 변환한다(룰은 루트부터 이파리까지 경로를
의미한다)
.각 룰은 일련의 속성으로 구성돼 있는데, 정확도를 떨어뜨리는 속성을 제거한다
.프루닝이 완료되면 정확도 순으로 정렬하고 이 순서대로 판별식에 활용한다
프루닝을 하기 전에 룰 세트로 변환하는 이유는 사람이 이해하기에 직관적일 뿐만 아니라 각 룰에서 사용되는 속성이 의사결정 경로에 따라 달리 해석될 수 있기 때문이다. 또한 트리 구조에서는 모든 속성값들이 연관돼 있기 때문에 프루닝 전후를 기억하는 작업이 매우 힘들다. 의사결정 트리 분야에 대해 좀 더 심도 있는 내 용을 원하는 독자는 퀸란의 저서 「머신러닝을 위한 프로그램을 적극 추천한다.
책 제목 : 알고리즘으로 배우는 인공지능, 머신러닝, 딥러닝 입문
지은이 : 김의중