ID3 알고리즘
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
ID3 알고리즘은 주어진 데이터 집합으로부터 의사 결정 트리를 생성하는 데 사용되는 알고리즘이다. 이 알고리즘은 재귀적인 방식으로 작동하며, 각 단계에서 엔트로피를 최소화하거나 정보 획득량을 최대화하는 속성을 선택하여 데이터를 분할한다. ID3는 데이터를 분할하는 선택된 속성을 나타내는 내부 노드와 최종 하위 집합의 클래스 레이블을 나타내는 리프 노드로 구성된 의사 결정 트리를 생성한다. 이 알고리즘은 정보 이론의 엔트로피 개념을 사용하여 속성을 선택하며, 정보 획득량이 최대가 되는 속성을 기준으로 데이터를 분할한다. ID3는 탐욕 전략을 사용하기 때문에 국소 최적값에 수렴할 수 있으며, 훈련 데이터에 과적합될 수 있다는 특징이 있다. ID3 알고리즘은 결정 트리를 생성하여 새로운 데이터의 클래스를 분류하는 데 활용되며, C4.5 알고리즘으로 확장되어 노이즈, 연속형 값, 결측값 처리 및 과적합 문제 완화 기능을 제공한다.
더 읽어볼만한 페이지
- 결정 트리 - 랜덤 포레스트
랜덤 포레스트는 결정 트리들을 앙상블하여 분류, 회귀, 검출 등에 활용되며, 랜덤화 기술로 일반화 성능을 향상시키는 기계 학습 알고리즘이다. - 결정 트리 - 결정 트리 학습법
결정 트리 학습법은 데이터 마이닝의 지도 학습 방법으로, 입력 변수를 기반으로 목표 변수를 예측하는 트리 형태의 모델을 생성하며, 해석 용이성, 자료 가공 용이성, 다양한 자료형 적용 가능성 등의 장점과 과적합 및 민감성 등의 단점을 가진다. - 분류 알고리즘 - 인공 신경망
- 분류 알고리즘 - 퍼셉트론
퍼셉트론은 프랭크 로젠블랫이 고안한 인공신경망 모델로, 입력 벡터에 가중치를 곱하고 편향을 더한 값을 활성화 함수에 통과시켜 이진 분류를 수행하는 선형 분류기 학습 알고리즘이며, 초기 신경망 연구의 중요한 모델로서 역사적 의미를 가진다.
ID3 알고리즘 | |
---|---|
기본 정보 | |
이름 | ID3 알고리즘 |
종류 | 의사결정 트리 학습 알고리즘 |
개발자 | 로스 퀸란 |
발표년도 | 1986년 |
특징 | |
목적 | 데이터 집합에서 가장 중요한 속성을 식별하여 의사결정 트리를 구축 |
정보 이득 | 각 속성의 정보 이득을 계산하여 최적의 분할 속성 선택 |
가지치기 | 과적합을 방지하기 위해 가지치기 수행 |
속성 선택 | 범주형 속성을 기반으로 분할 |
대상 변수 | 범주형 대상 변수를 예측하는 데 사용 |
장점 | 이해하기 쉬운 모델 생성 중요한 속성 식별 용이 |
단점 | 연속적인 속성 처리 어려움 과적합 발생 가능성 정보 이득 편향 문제 |
활용 분야 | |
사용 예시 | 신용 위험 평가 의료 진단 마케팅 캠페인 타겟팅 |
관련 알고리즘 | |
관련 알고리즘 | C4.5 알고리즘 CART 알고리즘 |
2. 알고리즘
ID3 알고리즘은 각 단계에서 아직 사용하지 않은 속성들의 엔트로피 또는 정보 획득을 계산하고, 이 중 엔트로피가 가장 낮은 (또는 정보 획득이 가장 큰) 속성을 선택하여 데이터를 분할하는 방식으로 작동한다.
존 로스 퀸란이 1979년에 제안한 ID3는 오컴의 면도날 원리에 기반하여 최소한의 가설로 사건을 결정한다. 각 독립 변수에 대해 변수 값을 결정했을 때의 평균 정보량 기대값을 구하고, 그 중 최댓값을 선택하여 트리의 노드로 만드는 연산을 재귀적으로 수행한다.
ID3는 학습 효율이 좋고 다수의 예제로부터 학습할 수 있지만, 예제를 일괄적으로 처리해야 하므로 학습 결과의 순차적인 개선이 불가능하고, 입력 변수가 연속값을 갖는 경우에는 사용할 수 없다는 단점이 있다. 퀸란은 이러한 문제점을 보완한 C4.5 알고리즘을 제안했다.
ID3 알고리즘의 진행 과정은 다음과 같다.
1. 루트 노드를 생성하고 모든 예제를 루트 노드에 포함시킨다.
2. 루트 노드의 예제가 모두 같은 결과를 가지면 해당 결과로 라벨을 붙이고 종료한다.
3. 예제 집합의 평균 정보량을 계산한다.
4. 각 독립 변수의 값에 따라 예제 집합을 분할한다.
5. 분할된 집합들의 평균 정보량을 계산한다.
6. 계산된 평균 정보량으로부터 독립 변수의 평균 정보량 기대값을 구한다.
7. 평균 정보량 기대값이 최대가 되는 독립 변수를 선택한다.
8. 선택된 독립 변수를 노드의 라벨로 지정하고, 자식 노드를 생성하여 분할된 집합들을 각각 소속시킨다.
9. 각 자식 노드에 대해 위 과정을 재귀적으로 반복한다.
다음은 동물의 분류를 결정하는 예시이다.
log의 밑은 기본적으로 무엇이든 상관없지만, 출력은 포유류, 파충류, 조류의 세 종류이므로 평균 정보량의 최댓값이 1.0, 최솟값이 0.0이 되도록 여기서는 3을 밑으로 사용한다.
전체 평균 정보량을 계산하면, 이 예제에서의 출력은 포유류 = 2, 파충류 = 1, 조류 = 2이므로,
:
이 된다. 먼저 독립 변수로 식성(''a1'')을 사용한다. 이 변수는 "초식"과 "육식"의 두 가지 값을 가질 수 있으므로, 먼저 예제 집합을 다음 두 가지로 나눈다.
- 펭귄, 사자, 도마뱀 (식성 = 육식)
- 소, 문조 (식성 = 초식)
분할된 ''C11''과 ''C12''에서 평균 정보량을 구하면, ''C11''의 출력은 포유류 = 1, 파충류 = 1, 조류 = 1이므로,
:
마찬가지로 ''C12''의 출력은 포유류 = 1, 파충류 = 0, 조류 = 1이므로,
:
따라서 평균 정보량의 기댓값 ''M1''은
:
마찬가지로, 발생 형태(''a2''), 체온(''a3'')으로부터 ''M2'', ''M3''를 계산하면,
:
:
가 되어, 최댓값은 ''M2''이다. 따라서 노드의 라벨은 발생 형태(''a2'')가 된다.
이상의 과정을 반복하면, 학습 과정에서 불필요한 변수를 삭제하고 최소한의 가설(이 예시에서는 발생 형태와 체온)로 예제와의 관련성을 학습한다.
2. 1. 작동 원리
ID3 알고리즘은 원래 집합 를 루트 노드로 시작한다. 알고리즘의 각 반복에서 집합 의 사용하지 않은 모든 속성을 반복하고 해당 속성의 엔트로피 또는 정보 획득 을 계산한다. 그런 다음 엔트로피가 가장 작은 (또는 정보 획득이 가장 큰) 속성을 선택한다. 그런 다음 선택한 속성으로 집합 를 분할하거나 파티션하여 데이터의 하위 집합을 생성한다. (예를 들어, 노드는 나이가 50세 미만, 50세에서 100세 사이, 100세 초과인 모집단의 하위 집합을 기반으로 자식 노드로 분할될 수 있다.) 알고리즘은 이전에 선택하지 않은 속성만 고려하여 각 하위 집합에 대해 재귀를 계속 수행한다.하위 집합에 대한 재귀는 다음 경우 중 하나에서 중단될 수 있다.
- 하위 집합의 모든 요소가 동일한 클래스에 속하는 경우; 이 경우 노드는 리프 노드로 변환되고 예제의 클래스로 레이블이 지정된다.
- 더 이상 선택할 속성이 없지만 예제가 여전히 동일한 클래스에 속하지 않는 경우; 이 경우 노드는 리프 노드로 만들어지고 하위 집합의 예제에서 가장 일반적인 클래스로 레이블이 지정된다.
- 하위 집합에 예제가 없는 경우; 이는 부모 집합의 예제가 선택한 속성의 특정 값과 일치하는 것으로 발견되지 않을 때 발생한다. 예를 들어, 100세 이상인 사람 중 부재가 있을 수 있다. 그런 다음 리프 노드가 생성되고 부모 노드의 집합에 있는 예제의 가장 일반적인 클래스로 레이블이 지정된다.
알고리즘 전체에서 의사 결정 트리는 데이터가 분할된 선택된 속성을 나타내는 각 비터미널 노드(내부 노드)와 이 분기의 최종 하위 집합의 클래스 레이블을 나타내는 터미널 노드(리프 노드)로 구성된다.
2. 2. 재귀 중단 조건
다음은 하위 집합에 대한 재귀가 중단될 수 있는 경우이다.- 하위 집합의 모든 요소가 동일한 클래스에 속하는 경우, 노드는 리프 노드로 변환되고 예제의 클래스로 레이블이 지정된다.[1]
- 더 이상 선택할 속성이 없지만 예제가 여전히 동일한 클래스에 속하지 않는 경우, 노드는 리프 노드로 만들어지고 하위 집합의 예제에서 가장 일반적인 클래스로 레이블이 지정된다.[1]
- 하위 집합에 예제가 없는 경우, 이는 부모 집합의 예제가 선택한 속성의 특정 값과 일치하는 것으로 발견되지 않을 때 발생한다. 예를 들어, 100세 이상인 사람 중 부재가 있을 수 있다. 그런 다음 리프 노드가 생성되고 부모 노드의 집합에 있는 예제의 가장 일반적인 클래스로 레이블이 지정된다.[1]
2. 3. 속성 선택 기준
ID3 알고리즘은 정보 이론의 엔트로피 개념을 사용하여 속성을 선택한다. ID3는 각 단계에서 아직 사용하지 않은 속성들의 엔트로피 또는 정보 획득을 계산하고, 이 중 엔트로피가 가장 낮은 (또는 정보 획득이 가장 큰) 속성을 선택하여 데이터를 분할한다.존 로스 퀸란이 1979년에 제안한 ID3는 오컴의 면도날 원리에 기반하여 최소한의 가설로 사건을 결정한다. 각 독립 변수에 대해 변수 값을 결정했을 때의 평균 정보량 기대값을 구하고, 그 중 최대값을 선택하여 트리의 노드로 만드는 연산을 재귀적으로 수행한다.
ID3는 학습 효율이 좋고 다수의 예제로부터 학습할 수 있지만, 예제를 일괄적으로 처리해야 하므로 학습 결과의 순차적인 개선이 불가능하고, 입력 변수가 연속값을 갖는 경우에는 사용할 수 없다는 단점이 있다. 퀸란은 이러한 문제점을 보완한 C4.5 알고리즘을 제안했다.
ID3 알고리즘은 다음과 같은 과정을 거친다.
1. 루트 노드를 생성하고 모든 예제를 루트 노드에 포함시킨다.
2. 루트 노드의 예제가 모두 같은 결과를 가지면 해당 결과로 라벨을 붙이고 종료한다.
3. 예제 집합의 평균 정보량을 계산한다.
4. 각 독립 변수의 값에 따라 예제 집합을 분할한다.
5. 분할된 집합들의 평균 정보량을 계산한다.
6. 계산된 평균 정보량으로부터 독립 변수의 평균 정보량 기대값을 구한다.
7. 평균 정보량 기대값이 최대가 되는 독립 변수를 선택한다.
8. 선택된 독립 변수를 노드의 라벨로 지정하고, 자식 노드를 생성하여 분할된 집합들을 각각 소속시킨다.
9. 각 자식 노드에 대해 위 과정을 재귀적으로 반복한다.
2. 3. 1. 엔트로피 (Entropy)
정보 이론에서 엔트로피()는 데이터 집합 의 불확실성 정도를 측정하는 척도이다. 즉, 엔트로피는 데이터 집합 의 불순도(impurity)를 나타낸다.[1]:
여기서,
- – 엔트로피를 계산하려는 현재 데이터 집합[1]
- * ID3 알고리즘의 각 단계에서 속성에 따라 분할되는 경우, 이전 집합의 하위 집합으로 변경되거나, 재귀가 이전에 종료된 경우 상위 항목의 "형제" 분할로 변경된다.[1]
- – 에 있는 클래스의 집합[1]
- – 클래스 의 비율을 집합 의 원소 수로 나눈 값[1]
일 때, 집합 는 완벽하게 분류된다. 즉, 의 모든 원소가 동일한 클래스에 속한다.[1]
ID3에서 엔트로피는 각 남은 속성에 대해 계산된다. 가장 작은 엔트로피를 가진 속성이 이 반복에서 집합 를 분할하는 데 사용된다.[1] 정보 이론에서 엔트로피는 측정을 통해 얻을 것으로 예상되는 정보의 양을 측정한다.[1] 이처럼, 분포를 얼마나 알지 못하는지 정량화하는 데에도 사용할 수 있다.[1] 상수는 분포가 완벽하게 알려져 있으므로 엔트로피가 0이다.[1] 반대로 균등하게 분포된 랜덤 변수(이산적으로 또는 연속적으로 균등 분포)는 엔트로피를 최대화한다.[1] 따라서 노드의 엔트로피가 클수록 이 단계의 데이터 분류에 대해 알려진 정보가 적으며, 따라서 여기서 분류를 개선할 가능성이 더 크다.[1]
ID3는 탐욕적 휴리스틱으로, 국소 최적 엔트로피 값을 찾는 최선 우선 탐색을 수행한다.[1] 데이터 전처리를 통해 정확도를 향상시킬 수 있다.[1]
다음은 동물 예시이다.[1]
예제 | 식성(a1) | 발생 형태(a2) | 체온(a3) | 분류 |
---|---|---|---|---|
예제 1 (펭귄) | 육식 | 난생 | 항온 | 조류 |
예제 2 (사자) | 육식 | 태생 | 항온 | 포유류 |
예제 3 (소) | 초식 | 태생 | 항온 | 포유류 |
예제 4 (도마뱀) | 육식 | 난생 | 변온 | 파충류 |
예제 5 (문조) | 초식 | 난생 | 항온 | 조류 |
ID3을 사용하여 식성, 발생 형태, 체온에서 분류를 결정하는 경우를 고려한다.[1]
ID3에서 log의 밑은 기본적으로 무엇이든 상관없지만, 출력은 포유류, 파충류, 조류의 세 종류이므로 평균 정보량의 최댓값이 1.0, 최솟값이 0.0이 되도록 여기서는 3을 밑으로 사용한다.[1]
전체 평균 정보량을 계산하면, 이 예제에서의 출력은 포유류 = 2, 파충류 = 1, 조류 = 2이므로,[1]
:
이 된다. 먼저 독립 변수로 식성(''a1'')을 사용한다. 이 변수는 "초식"과 "육식"의 두 가지 값을 가질 수 있으므로, 먼저 예제 집합을 다음 두 가지로 나눈다.[1]
분할된 ''C11''과 ''C12''에서 평균 정보량을 구하면, ''C11''의 출력은 포유류 = 1, 파충류 = 1, 조류 = 1이므로,[1]
:
마찬가지로 ''C12''의 출력은 포유류 = 1, 파충류 = 0, 조류 = 1이므로,[1]
:
따라서 평균 정보량의 기댓값 ''M1''은[1]
:
2. 3. 2. 정보 획득량 (Information Gain)
ID3 알고리즘에서 정보 획득량은 특정 속성을 사용하여 데이터를 분할했을 때 엔트로피가 얼마나 감소하는지를 나타내는 지표이다.[1] ID3는 정보 획득량이 가장 큰 속성을 선택하여 데이터를 분할한다.[1]정보 획득량 는 집합 가 속성 를 기준으로 분할되기 전후의 엔트로피 차이를 측정한다. 즉, 집합 를 속성 를 기준으로 분할한 후 의 불확실성이 얼마나 감소했는지를 나타낸다.[1]
:
여기서,
- – 집합 의 엔트로피
- – 속성 에 의해 집합 를 분할하여 생성된 부분 집합, 를 만족한다.
- – 부분 집합 의 원소 개수가 집합 의 원소 개수에서 차지하는 비율
- – 부분 집합 의 엔트로피
ID3에서, 각 나머지 속성에 대해 (엔트로피 대신) 정보 이득을 계산할 수 있다.[1] 이 반복에서 집합 를 분할하는 데 사용되는 속성은 '''가장 큰''' 정보 이득을 갖는 속성이다.[1]
다음은 동물의 분류를 결정하는 예시이다.
예제 | 식성(a1) | 발생 형태(a2) | 체온(a3) | 분류 |
---|---|---|---|---|
예제 1 (펭귄) | 육식 | 난생 | 항온 | 조류 |
예제 2 (사자) | 육식 | 태생 | 항온 | 포유류 |
예제 3 (소) | 초식 | 태생 | 항온 | 포유류 |
예제 4 (도마뱀) | 육식 | 난생 | 변온 | 파충류 |
예제 5 (문조) | 초식 | 난생 | 항온 | 조류 |
ID3는 최적의 해를 보장하지 않는다. 탐욕 전략을 사용하여 각 반복에서 지역적으로 최상의 속성을 선택하여 데이터를 분할하고 국소 최적값에 수렴할 수 있기 때문이다. 백트래킹을 사용하면 최적의 결정 트리를 보장할 수 있지만, 더 많은 시간이 소요될 수 있다.[2]
ID3 알고리즘은 데이터 집합에 대한 훈련을 통해 결정 트리를 생성하며, 이 트리는 메모리에 저장된다. 실행 시간에 이 결정 트리는 새로운 테스트 사례(특징 벡터)를 분류하는 데 사용된다. 리프 노드에 도달하기 위해 데이터의 특징을 사용하여 결정 트리를 순회하는 방식으로 분류가 이루어진다.
존 로스 퀸란은 ID3의 확장으로 C4.5 알고리즘을 제안했다. C4.5는 입력에 있는 노이즈에 대응할 수 있다.[4]
[1]
논문
Induction of Decision Trees
1986-03-01
ID3을 사용하여 식성, 발생 형태, 체온에서 분류를 결정하는 경우를 생각해보자.
log의 밑은 기본적으로 무엇이든 상관없지만, 출력은 포유류, 파충류, 조류의 세 종류이므로 평균 정보량의 최대값이 1.0, 최소값이 0.0이 되도록 여기서는 3을 밑으로 사용한다.
전체 평균 정보량을 계산하면, 이 예제에서의 출력은 포유류 = 2, 파충류 = 1, 조류 = 2이므로,
:
이 된다. 먼저 독립 변수로 식성(''a1'')을 사용한다. 이 변수는 "초식"과 "육식"의 두 가지 값을 가질 수 있으므로, 먼저 예제 집합을 다음 두 가지로 나눈다.
: 예제 1, 예제 2, 예제 4 (식성 = 육식) 클래스.
: 예제 3, 예제 5 (식성 = 초식) 클래스.
분할된 ''C11''과 ''C12''에서 평균 정보량을 구하면, ''C11''의 출력은 포유류 = 1, 파충류 = 1, 조류 = 1이므로,
:
마찬가지로 ''C12''의 출력은 포유류 = 1, 파충류 = 0, 조류 = 1이므로,
:
따라서 평균 정보량의 기대값 ''M1''은
:
마찬가지로, 발생 형태(''a2''), 체온(''a3'')으로부터 ''M2'', ''M3''를 계산하면,
:
:
가 되어, 최대값은 ''M2''이다. 따라서 노드의 레이블은 발생 형태(''a2'')가 된다.
이상의 과정을 반복하면, 학습 과정에서 불필요한 변수를 삭제하고 최소한의 가설(이 예시에서는 발생 형태와 체온)로 예제와의 관련성을 학습한다.
3. ID3 알고리즘의 특징
ID3는 훈련 데이터에 과적합될 수 있다. 이를 방지하기 위해 더 큰 결정 트리보다 작은 결정 트리를 선호하는 경향이 있다. 그러나 ID3가 항상 가장 작은 결정 트리를 생성하는 것은 아니다.
ID3는 연속적인 데이터보다 범주형 데이터에서 사용하기 더 쉽다. 연속적인 속성 값의 경우 데이터를 분할할 수 있는 경우가 더 많아져 최적의 분할 지점을 찾는 데 시간이 오래 걸릴 수 있다.[4]
ID3는 학습 효율이 좋고, 다수의 예제로부터 학습할 수 있지만, 예제를 일괄적으로 처리해야 하므로 학습 결과의 순차적인 개선이 불가능하다는 단점이 있다.
4. ID3 알고리즘의 활용
예를 들어, 동물의 식성, 발생 형태, 체온을 바탕으로 분류를 결정하는 경우를 생각해 볼 수 있다.예제 식성(a1) 발생 형태(a2) 체온(a3) 분류 예제 1 (펭귄) 육식 난생 항온 조류 예제 2 (사자) 육식 태생 항온 포유류 예제 3 (소) 초식 태생 항온 포유류 예제 4 (도마뱀) 육식 난생 변온 파충류 예제 5 (문조) 초식 난생 항온 조류
ID3 알고리즘은 학습 과정에서 불필요한 변수를 삭제하고 최소한의 가설로 예제와의 관련성을 학습한다. 위의 예시에서는 식성, 발생 형태, 체온의 세 가지 입력 변수가 있었지만, 출력되는 결정 트리에서는 발생 형태와 체온 두 종류만 사용되었다.
5. ID3 알고리즘의 확장
참조
[2]
간행물
Large-scale mapping of branchpoints in human pre-mRNA transcripts in vivo
2012-06-17
[3]
논문
Induction of decision trees
1986
[4]
서적
C4. 5: programs for machine learning
Elsevier
2014
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com