-
지도학습 | 결정트리 (Decision Tree)Machine Learning/ML with Python Library 2024. 4. 3. 22:30
Decision Tree 만들기
결정트리(Decision Tree)는 분류와 회귀 문제에 널리 사용하는 모델이다. 기본적으로 결정 트리는 결정까지 Yes/No 질문을 이어 나가면서 학습한다. 마치 스무고개와 같다. 만약 포켓몬을 맞추는 문제라고 해보자.
뮤, 아르세우스, 피카츄, 파이리 중 두가지 질문을 통해 정답을 맞출 수 있다. 이런 방법을 이용해서 지도 학습 방식으로 데이터로부터 학습할 수 있다. Decision Tree를 만들어보자. 2차원 데이터셋을 분류하는 Tree이다. 이 데이터셋은 각 클래스에 데이터 포인트가 50개씩 있고, 반달 두개가 포개진 것 같은 모양을 하고 있다.
결정 트리를 학습한다는 것은 정답에 가장 빨리 도달하는 Yes/No질문 목록을 학습하는 것이다. ML에서는 이런 질문을 테스트라고 하는데, 모델의 일반화를 검사하는 테스트 세트 또는 테스트 데이터와는 다른 의미이다.
트리를 만들 때 알고리즘은 가능한 모든 테스트에서 타깃 값에 대해 가장 많은 정보를 가진 것을 고른다. 첫번째로 선택된 테스트를 보자.
root node라고 불리는 맨 위 노드는 클래스 0에 속한 50개, 클래스 1에 속한 50를 모두 포함한 전체 데이터셋을 의미한다. 그리고 직선이 의미하는 x[1] <= 0.06의 테스트에서 분기가 일어나서, 만약 0.06보다 아래 있는 것은 왼쪽인데, 클래스 0에 속한 포인트 2개, 1에 속한 포인트 32개가 있었다 (그림과 일치하지 않지만 대충 그렇다고 가정하자). 그리고 만약 이 테스트를 통과하지 못한 것들은 오른쪽 노드에 할당되는데, 클래스 0의 포인트 48개, 클래스 1의 포인트 18개가 포함되었다. 분류가 꽤 잘 되었지만, 완벽하게 해내지는 못했다.
하지만 이런 식으로, 만약 이전에 true였다면, 거기서 먼추는게 아니라, 세로로, X[0] <= -0.418 인지, 그리고 False인 경우에도 X[0] <= 1.196인지 테스트를 통해, 조금 더 정밀하게 나눌 수 있다.
이런 식으로 반복된 프로세스는 많은 노드를 만드는데, 각 노드는 테스트를 의미한다. 마지막으로 타깃 하나로만 이뤄진 리프 노드를 순수 노드, pure node라고 한다. Root노드에서 시작해 테스트의 결과에 따라 왼쪽 또는 오른쪽으로 트리를 탐색해나가는 식으로 영역을 찾을 수 있다.
Reference
https://www.yes24.com/Product/Goods/42806875
파이썬 라이브러리를 활용한 머신러닝 - 예스24
사이킷런 핵심 개발자에게 배우는 머신러닝 이론과 구현 현업에서 머신러닝을 연구하고 인공지능 서비스를 개발하기 위해 꼭 학위를 받을 필요는 없다. 사이킷런(scikit-learn)과 같은 훌륭한 머신
www.yes24.com
'Machine Learning > ML with Python Library' 카테고리의 다른 글
지도학습 | 나이브 베이즈 분류기 (Naive Bayes Classification) (0) 2024.04.03 지도학습 | 선형모델의 장단점과 매개변수 (0) 2024.04.02 지도학습 | 다중클래스 분류용 선형 모델 (MultiClass Classification Linear Model) (0) 2024.04.02 지도학습 | 분류용 선형 모델 (Linear Classification Model) (0) 2024.04.01 지도학습 | 라소 회귀 (Lasso Regression) (0) 2024.04.01