티스토리 뷰
의사결정나무 (Decision Tree, DT)
의사 결정 규칙을 나무 구조로 나타내어 전체 자료를 몇 개의 소집단으로 분류하거나 예측을 수행하는 분석 방법 입니다.
- 명칭
루트 노드 (Root Node) : 의사 결정나무의 시작점. 최초의 분할조건 - 리프노드 (Leaf Node) : 루트 노드로부터 파생된 중간 혹은 최종 노드
- 분류기준(Criteria) : Sex는 여성인 경우 0, 남성인 경우 1로 인코딩. 여성인 경우 좌측 노드로,남성인 경우 우측 노드로
- 불순도(impurity)
불순도 측정 방법 중 하나 인 지니 계수는 0과 1사이 값으로 0이 완벽한 순도(모든 샘플이 하나의 클래스),
1은 완전한 불순도(노드의 샘플의 균등하게 분포) 됨을 나타냄
리프 노드로 갈수록 불순도가 작아지는(한쪽으로 클래스가 분류가 잘되는)방향으로 나무가 자람 - 샘플 : 해당 노드의 샘플 개수
- 값(value) : Y 변수에 대한 배열. 549명이 죽었고 (Y = 0), 342명이 살았음 (Y = 1)
- 클래스
- 가장 많은 샘플을 차지하는 클래스를 표현
- 위에서는 주황색(Y = 0 다수), 파란색(Y=1다수)를 표현
의사결정 나무 정리
- 장점
-쉽고 해석하기 용이 , 다중분류와 회귀에 모두 적용이 가능
- 이상치에 견고하며 데이터 스케일링이 불필요(데이터의 상대적인 순서를 고려해서) - 단점
- 나무가 성장을 너무 많이하면 과대 적합의 오류에 빠질 수 있다.
- 훈련 데이터에 민감하여 반응하여 작은 변화에 노이즈에도 나무의 구조가 크게 달라짐
(불안정한) - python 라이브 러리
-sklearn.tree.DecisionTreeClassifier
-sklearn.tree.Decision
X_features = ['Pclass', 'Sex', 'Age']
le = LabelEncoder()
titaninc_df['Sex'] = le.fit_transform(titaninc_df['Sex'])
le2 = LabelEncoder()
titaninc_df['Pclass'] =le2.fit_transform(titaninc_df['Pclass'])
age_mean = titaninc_df['Age'].mean()
titaninc_df['Age'] = titaninc_df['Age'].fillna(age_mean)
X = titaninc_df[X_features]
Y = titaninc_df['Survived']
model_dt = DecisionTreeClassifier(random_state=42)
model_dt.fit(X,y)
fit.fiure(figszie = (10,5))
plot_tree(model_dt, feature_names=X_features, class_names=['Not Survived', 'Survived'].filled = True)
plt_show()
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
최근에 올라온 글
최근에 달린 댓글
글 보관함
링크
TAG
- ADsP
- 방법론
- 데이터 리터러시
- 빅테크
- 통계학
- PM
- 데이터 분석
- 그로스 해킹
- 머신러닝
- BI
- 데이터 분석가
- 빅데이터
- 프로젝트 매니저
- 퍼포먼스 마케팅
- 책 추천
- BA
- 아하 모먼트
- 북극성 지표
- 프로덕트 매니저
- 퍼포먼스 마케터
- 기획자
- 알고리즘
- A/B테스트
- 프로덕트 분석가
- 데이터분석가
- 데이터 분석가 주니어
- 데이터 분석 주니어
- 데이터 시각화
- 아무일 없는것처럼
- 설레다
- Total
- Today
- Yesterday