이 글은 기존 Tistory 블로그에서 옮겨온 글입니다. 원문: https://jms3084.tistory.com/25
판다스 데이터프레임의 유용한 메서드
- 데이터프레임
객체.info()→ 데이터프레임의 열의 데이터 타입과 누락된 데이터가 있는지 확인 - 데이터프레임 객체.describe() → 열에 대한 간략한 통계를 출력(mean, std, min, max 등등)
데이터프레임에서 각 통계 확인 후 특성에 대한 스케일이 다를경우 StandardScaler 클래스를 사용해서 특성을 전처리 (훈련세트로 학습 후 → 훈련세트와 테스트 세트 전처리)
데이터프레임을 넘파이 배열로 변환 후 훈련세트와 테스트 세트로 나눈다.
train_test_split 함수의 매개변수인 test_size는 테스트 세트의 사이즈를 지정한다. 디폴트는 0.25이다.
test_size = 0.2시 입력데이터의 20%를 테스트세트로 변환한다.
결정트리
로지스틱 회귀 모델보다는 결정트리 모델이 설명하기 쉽다.
질문을 하나씩 던져가며 정답을 맞춰가는 과정

사이킷런은 결정트리 알고리즘을 제공한다. DecisionTreeClassifier 클래스로 제공
다른 모델 훈련 클래스와 동일하게 fit() 함수로 훈련한다.
트리의 깊이(레벨)을 매개변수로 정해주지 않을 경우 정답을 찾을 때까지 학습한다.
→ 훈련테스트에 대해 과대적합된다.

결정 트리의 맨 위의 노트를 루트노드, 맨 아래의 노드를 리프노드라고 한다.
plot_tree() 함수에서 트리의 깊이를 제한해서 출력하는 매개변수는 max_depth이고 값을 1로 주면 루트 노드를 제외하고 1개의 노드를 확장해서 출력한다.
filled 매개변수를 True로 지정시 클래스에 맞게 노드의 색을 칠할 수 있다.
클래스의 비율이 높아질 경우 색이 진해진다.
feature_names 매개변수는 노드에 특성의 이름을 전달한다. 어떤 기준으로 나뉘는지 확인 가능
부모노드의 기준보다 작거나 같은 값인 샘플들은 왼쪽 노드로 이동, 반대는 오른쪽 노드로 이동
왼쪽, 오른쪽으로 나뉜 샘플들은 부모노드의 value에 자세히 나타나있다.
불순도

노드 안에 gini는 지니 불순도를 의미한다.
DecisionTreeClassifier 클래스의 criterion 매개변수는 노드에서 데이터를 분할할 기준을 정하는 것, 기본값이 gini이다.
지니 불순도 = 1 - (음성 클래스 비율^2 + 양성 클래스 비율^2)
최악의 지니 불순도: 부모노드의 샘플의 비율이 왼쪽 50%, 오른쪽 50%인 경우 = 0.5가 된다.
최상의 지니 불순도: 노드에 하나의 클래스만 있는 경우, 순수노드라고 한다. = 0이 된다.
결정 트리 모델은 부모노드와 자식노드의 불순도 차이(정보이득)가 크도록 트리를 성장시킨다.
정보이득 = 부모의 불순도 - (왼쪽노드 샘플 수 / 부모의 샘플 수) x 왼쪽 노드 불순도 - (오른쪽노드 샘플 수 / 부모의 샘플 수) x 오른쪽 노드 불순도
노드를 순수하게 나눌수록 정보이득이 커진다.
사이킷런에는 엔트로피 불순도도 존재한다. criterion = ‘entropy’ 지정하여 사용
지니 불순도처럼 제곱이 아니라 밑이 2인 로그(이진 로그)를 사용하여 곱한다.
엔트로피 불순도 = 1 - (log2(음성 클래스 비율) x 음성 클래스 비율 - 양성 클래스 비율 x log2(양성 클래스 비율))
가지치기
제한 없이 끝까지 자라난 트리는 훈련세트에는 적합하지만 테스트세트에서는 맞지 않는다. (과대적합) → 일반화 되지 않았다.
일반화의 가장 간단한 방법은 학습을 덜 시키는 것이다. → 트리의 최대 깊이를 지정해서 훈련량을 정하는 것이다. DecisionTreeClassifier 클래스의 max_depth 매개변수에서 지정한다.
→ dt = DecisionTreeClassifier(max_depth=3)
이렇게 가지치기 진행시 훈련세트의 성능은 낮아지지만 테스트 세트의 성능은 거의 변함 없다. (과대적합 방지)
결정트리 알고리즘은 표준화 전처리를 할 필요가 없다.
결정트리는 마지막에 어떤 특성이 분류에 제일 중요하게 작용했는지 나타내는 특성 중요도를 계산해준다.
→ dt.feature_importances_ 로 확인 가능
Copyright 2021. 박해선 All rights reserved.