Machine Learning

[머신 러닝] 결정트리(Decision Tree)

Scarlett_C 2021. 9. 1. 21:45
728x90

결정트리(Decision Tree)

- 데이터 마이닝에서 일반적으로 사용되는 방법론

- 입력 변수를 바탕으로 목표 변수의 값을 예측하는 모델을 생성하는 것을 목표로 한다

- 수 많은 if절로 이루어져 있다고 생각하면 이해하기 쉬움

 

*장점

- 알고리즘의 동작과정이 직관적이다 -> 이해하기 쉽다

- 학습시간이 빠르다

- 개별 feature들을 판단하므로, 일반화가 필요하지 않다.

*단점

- 오버피팅에 빠지기 쉽다

==> 너무 세부적으로 나누어 진 트리는 결국 training data에만 맞추어지기 때문에 예측값의 정확도가 떨어질 수 있다. 

 

*scikit-learn의 DecisionTree Estimator

from sklearn.tree import DecisionTreeClassifier #분류(classification) 문제에 사용
from sklearn.tree import DecisionTreeRegressor #회귀(regression)문제에 사용

dt_clf=DecisionTreeClassifier()
dt_rg=DecisionTreeRegressor()

#트레이닝 시키기
dt_clf.fit(X_train, y_train)
#예측하기
y_pred=dt_clf.predict(X_test)

#예측정확도

from sklearn.metrics import accuracy_score
accur=accuracy_score(y_test,y_pred)

*결측치 채우기

범주형 (categorical Column) : 제일 많이 나온 값으로 채운다.

dataset['column'].fillna(dataset['column'].decribe()['top'], inplace=True)

숫자형 (numerical Column) : 평균값으로 채운다.

dataset['column'].fillna(dataset['column'].mean(), inplace=True)

*컬럼을 String type -> int type으로 변경

=> 문자형태로 나타나던 값들을 int type으로 매핑하는 과정

from sklearn import processing
le=processing.LabelEncoder()
dataset['column']=le.fit(dataset['column']).transform(dataset['column'])

*중복되는 컬럼 삭제

drop_cols=["column","column"]
dataset=dataset.drop(drop_cols, axis=1)

 

728x90