[혼자 공부하는 머신러닝 + 딥러닝] 11강_로지스틱 회귀로 와인 분류하기 & 결정 트리
11강_로지스틱 회귀로 와인 분류하기 & 결정 트리
- 결정 트리 알고리즘을 사용해 새로운 분류 문제를 다루어 봄.
- 결정 트리가 머신러닝 문제를 어떻게 해결하는지 이해함.
- <혼자 공부하는 머신러닝+딥러닝>의 코드 저장소
로지스틱 회귀로 와인 분류하기
- class 가 타깃값
- 레드 와인과 화이트 와인을 구분하는 이진 분류 문제 (화이트가 양성)
- info()
- 데이터프레임의 각 열의 데이터 타입과 누락된 데이터가 있는지 확인하는데 유용.
- 누락된 값이 있을때
- 그 데이터를 버리거나 평균값으로 채운 후 사용가능
- 두가지 모두 시도해보는 것 추천.
- 훈련 세트의 평균값으로 테스트 세트의 누락된 값을 채워야 함.
- describe()
- 열에 대한 간략한 통계 출력
- 최소, 최대, 평균값 등
- 스케일 확인 가능 (Q)
- StandardScaler 클래스를 사용해 특성을 표준화
설명하기 쉬운 모델과 어려운 모델
- 결정트리 모델이 이유를 설명하기 쉬움.
결정 트리
- 사이킷런의 DecisionTreeClassifier 클래스 사용해서 결정 트리 모델 훈련
- 예측방법: 리프 노드에서 가장 많은 클래스가 예측 클래스가 됨.
- fit() 모델 훈련 / score() 정확도 평가
- random_state 지정이유
- 사이킷런의 결정 트리 알고리즘은 노드에서 최적의 분할을 찾기 전에 특성의 순서를 섞기 때문에 약간의 무작위성이 주입되는데 실행할 때마다 점수가 조금씩 달라짐. (결과가 같도록 유지하기 위해 지정한것이고, 실전에서는 불필요)
- plot_tree()
- 결정 트리를 이해하기 쉬운 트리 그림으로 출력해 줌
- 노드
- 결정 트리를 구성하는 핵심 요소 (루트 / 리프 노드)
- 훈련 데이터의 특성에 대한 테스트를 표현
- 가지는 테스트의 결과를 나타내며 일반적으로 하나의 노드는 2개의 가지를 가짐
- 만약 결정 트리를 회귀 문제에 적용하면 리프 노드에 도달한 샘플의 타깃을 평균하여 예측값으로 사용함. (DecisionTreeRegressor)
- 알고리즘
- 불순도 기준을 사용해 정보 이득이 최대가 되도록 노드를 분할함.
- 순수하게 나눌수록 정보 이득이 커짐.
- 새로운 샘플에 대해 예측할 때에는 노드의 질문에 따라 트리를 이동.
- 마지막에 도달한 노드의 클래스 비율을 보고 예측을 만듬.
- 결정 트리는 표준화 전처리 과정이 필요 없음.
- 결정 트리는 어떤 특성이 가장 유용한지 나타내는 특성 중요도를 계산해 줌.
- 특성 중요도
- 결정 트리 모델의 feature_importances_속성
- 각 노드의 정보 이득과 전체 샘플에 대한 비율을 곱한 후 특성별로 더하여 계산
- 결정 트리의 특성 중요도를 특성 선택에 활용할 수 있음.
불순도
- gini 는 지니 불순도를 의미.
- 결정트리 모델은 부모 노드와 자식 노드의 불순도 차이가 가능한 크도록 트리를 성장시킴
- 정보 이득
- 부모와 자식 노드 사이의 불순도 차이
가지치기
- 가지치기를 하지 않으면 훈련 세트에는 아주 잘 맞겠지만 테스트 세트에서 점수는 그에 못 미침. (일반화가 잘 안 될 것 같다고 말함)
- 자라날 수 있는 트리의 최대 깊이를 지정.
- DecisionTreeClassifier 클래스의 max_depth 매개변수 지정
-실전에서 결정 트리를 사용할 때는 많은 특성을 사용하고 트리의 깊이도 깊어짐.
이해하기 쉬운 결정 트리 모델
- 이진 분류 로지스틱 회귀 모델은 이해하기 힘듬
- 결정 트리 사용
- 특성 추가 하지 않고도 성능이 더 좋음.
- 깊이가 깊지 않다면 설명도 쉬움.
- 불순도, 정보 이득 이해
- 결정 트리는 많은 앙상블 학습 알고리즘의 기반이 됨.
- 앙상블 학습은 신경망과 함께 가장 높은 성능을 내기 때문에 인기가 높은 알고리즘임.
키워드로 끝내는 핵심 포인트
- 결정트리
- 예 / 아니오에 대한 질문을 이어나가면서 정답을 찾아 학습하는 알고리즘
- 비교적 예측 과정을 이해하기 쉽고 성능도 뛰어남.
- 불순도
- 결정 트리가 최적의 질문을 찾기 위한 기준
- 사이킷런은 지니 불순도와 엔트로피 불순도를 제공함.
- 정보 이득
- 부모 노드와 자식 노드의 불순도 차이.
- 결정 트리 알고리즘은 정보 이득이 최대화되도록 학습함.
- 가지치기
- 결정 트리의 성장을 제한하는 방법 (제한 없이 성장하면 훈련 세트에 과대적합되기 쉬움.)
- 특성 중요도
- 결정 트리에 사용된 특성이 불순도를 감소하는데 기여한 정도를 나타내는 값
- 특성 중요도를 계산할 수 있는 것이 결정 트리의 또 다른 큰 장점
핵심 패키지와 함수
- pandas
- info()
- 데이터프레임의 요약된 정보를 출력
- 인덱스와 컬럼 타입을 출력하고 널(null)이 아닌 값의 개수, 메모리 사용량을 제공.
- verbose 매개변수 (True, False)
- describe()
- 데이터프레임 열의 통계 값 제공
- 수치형일 경우 최소, 최대, 평균, 표준편차와 사분위값 등이 출력
- 문자열 같은 객체 타입의 열은 가장 자주 등장하는 값과 횟수 등이 출력됨.
- percentiles 매개변수 (백분위수 지정)
- scikit-learn
- DecisionTreeClassifier
- 결정 트리 분류 클래스
- criterion / splitter / max_depth / min_samples_split / max_features
- plot_tree()
- 결정 트리 모델 시각화
- max_depth / feature_names / filled
확인 문제
- 다음 중 결정 트리의 불순도에 대해 옳게 설명한 것을 모두 고르세요.
- 결정 트리에서 계산한 특성 중요도가 저장되어 있는 속성은 무엇인가요?
댓글
댓글 쓰기