Day 23/24 - 머신러닝 5 > 결정 트리 (Decision Tree)

2022. 11. 12. 22:38Python

이번 글에서는 머신러닝 알고리즘 중 하나인 결정 트리에 대해 정리할 것이다.

결정 트리는 각 변수의 특정 지점을 기준으로 데이터를 쪼개가면서 예측 모델을 만드는 알고리즘으로, 트리 기반 모델의 기본 모델이다. 다른 트리 기반 모델에 비해 예측력과 성능이 떨어지지만 다른 모델을 이해하기 위해 필요하며, 시각화에 용이하다. 종속변수의 데이터 타입에 관계 없이 사용 가능하며, 아웃라이어에 영향을 거의 받지 않는다는 장점이 있지만, 트리의 깊이가 너무 깊어지면 오버피팅이 발생할 위험성이 크다는 단점이 있다.

 

Kaggle의 Salary 데이터를 활용하여 실습을 진행했다.

데이터를 불러와 데이터 정보를 확인했다.
범주형 데이터인 class 컬럼을 연속형 데이터로 변환했다.
unique한 데이터가 10개 이상인 범주형 데이터로 이루어져 있는 컬럼만 골라냈다.
education 컬럼은 education-num을 통해 대체 가능하기 때문에 삭제했다.
native-country 컬럼은 국적별 연봉 규모 평균을 구해 데이터프레임화 한 뒤 원 데이터프레임에 합쳤다.
바뀐 native-country 컬럼의 결측치에 임의값을 삽입했다.
workclass와 occupation 컬럼은 각각 최빈값 삽입과 결측치라는 것을 표현하기 위한 값 삽입을 통해 결측치를 대체했다.
범주형 데이터를 dummy 변수를 활용해 연속형으로 바꾼 뒤, 모델 학습과 평가를 진행했다.
오버피팅 문제가 일어난다는 것을 확인하고, 트리 깊이 조정을 통해 최적의 값을 찾았다. 트리 깊이가 8일 때 가장 높은 정확도를 보인다.
데이터 시각화를 진행했다.

결정 트리의 장점과 단점을 너무나 잘 알 수 있는 실습이었다. 설명력이 높고 시각화에 유용하다는 장점도 확인했고, 오버피팅 문제가 일어나기 쉽다는 단점도 확인했다. 그 외에는, 역시 데이터 분석 과정에서 데이터 전처리 작업이 제일 지난하고, 또 제일 중요하다는 사실을 다시 한 번 깨달았다.