결정트리는 분류와 회귀 문제에 널리 사용하는 모델
예/아니오 질문을 이어나가며 학습한다
결정트리 만들기
가장 좋은 테스트를 찾는 과정을 반복해서 모델을 더 정확하게 만들 수 있다.
반복된 프로세스는 각 노드가 테스트 하나씩을 가진 이진 결정 트리를 만든다 (True/False)
즉 각 테스트는 하나의 축을 따라 데이터를 둘로 나눈다
계층적으로 영역을 분할해가는 알고리즘이며 각 테스트는 하나의 특성에 대해서만 이루어지므로 나누어진 영역은 항상 축에 평행
데이터를 분할하는 것은 각 분할된 영역이 (결정 트리의 리프) 한 개의 타깃값(하나의 클래스나 회귀 분석 결과)을 가질 때까지 반복!
타깃 하나로만 이루어진 리프 노드를 순수 노드라고 한다.
새로운 데이터 포인트에 대한 예측은 주어진 데이터 포인트가 특성을 분할한 영역들 중 어디에 놓이는지를 확인,
그 영역의 타깃 값 중 다수인 것을 예측 결과로 한다.
순수 노드라면 하나!
결정 트리의 복잡도 제어하기
<과대적합을 막는 전략>
트리의 특성 중요도
전체 트리를 살펴보는 것 대신, 트리가 어떻게 작동하는지 요약하는 속성을 사용할 수 있음
특성 중요도 : 각 특성이 트리를 만드는 결정에 얼마나 중요한지를 평가.
0과 1 사이의 숫자로 1에 가까울 수록 중요한 특성.
특성 중요도의 전체 합은 1.
분류 트리와 달리 회귀 결정 트리 DecisionTreeRegressor는 외삽, 즉 훈련 데이터의 범위 밖의 포인트에 대해 예측할 수 없다.
장단점과 매개변수
결정 트리에서 모델 복잡도를 조절하는 매개변수는 사전 가지치기 매개변수 (사이킷런은 사전 가지치기만 지원)
결정 트리의 장점
주요 단점
앙상블 : 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법
분류와 회귀 모델의 다양한 데이터셋에서 효과적인 모델
--> 랜덤 포레스트와 그레이디언트 부스팅~!!
랜덤 포레스트
랜덤 포레스트는 기본적으로 조금씩 다른 여러 결정 트리의 묶음
잘 작동하되 서로 다른 방향으로 과대적합된 트리를 많이 만들고, 그 결과를 평균냄으로써 과대적합된 양을 줄일 수 있다.
--> 예측 성능 유지, 과대적합 줄임
트리 생성 시 트리들이 달라지도록 무작위성을 주입.
랜덤 포레스트 구축
생성할 트리의 개수를 정한다. - n_estimators 매개변수
각 트리를 완전히 독립적으로 만들기 위해 먼저 데이터의 부트스트랩 샘플을 생성.
(n_samples개의 데이터 포인트 중에서 무작위로 데이터를 n_samples 횟수만큼 반복 추출한다)
특성의 개수는 max_feature 매개변수로 조정 가능
이렇게 만든 데이터셋으로 결정트리를 만듦
매개변수 max_features
max_features의 값을 크게 하면 트리들은 매우 비슷해지고 가장 두드러진 특성을 이용해 데이터에 잘 맞춰짐
값을 낮추면 트리들은 많이 달라지고 각 트리는 데이터에 맞추기 위해 깊이가 깊어짐
장단점과 매개변수
그래디언트 부스팅 회귀 트리
여러 개의 결정 트리를 묶어 강력한 모델을 만드는 또 다른 앙상블 방법
(회귀와 분류 모두에 사용 가능)
장단점과 매개변수
배깅
Bootstrap aggregating의 줄임말
중복을 허용한 랜덤 샘플링으로 만든 훈련 세트를 사용하여 분류기를 각기 다르게 학습시킴
엑스트리 트리
랜덤 포레스트와 비슷하지만 후보 특성을 무작위로 분할한 다음 최저의 분할을 찾음
에이다부스트
Adaptive Boostion의 줄임말
약한 학습기를 사용, 이전의 모델이 잘못 분류한 샘플에 가중치를 높여서 다음 모델을 훈련시킴
입력 데이터에서 단순한 초평면으로 정의되지 않는 더 복잡한 모델을 만들 수 있도록 확장한 것
선형 모델과 비선형 특성
선형 모델을 유연하게 만드는 방법은 특성끼리 곱하거나 특성을 거듭제곱하는 식으로 새로운 특성을 추가하는 것
커널 기법
실제로 데이터를 확장하지 않고 확장된 특성에 대한 데이터 포인트들의 거리를 계산
SVM 이해하기
일반적으로 두 클래스 사이의 경계에 위치한 훈련 데이터의 일부만 결정 경계를 만드는 데 영향을 준다. 이런 데이터 포인트를 서포트 벡터라고 한다.
새로운 데이터 포인트에 대한 분류 결정은 서포트 벡터까지의 거리에 기반, 서포트 벡터의 중요도는 훈련 과정에서 학습!
SVM 매개변수 튜닝
gamma 매개변수
C 매개변수
정리
gamma 매개변수가 커지면 모델 복잡도 증가
작은 C 매개변수는 매우 제약이 큰 모델을 만들고 각 데이터 포인트의 영향력이 작음
C 매개변수가 커지면 더 복잡한 모델을 만듦
gamma, C 둘 다 값이 커지면 모델이 복잡해지는 거임
SVM을 위한 데이터 전처리
장단점과 매개변수
다층 퍼셉트론은 복잡한 알고리즘의 출발점이며 비교적 간단하게 분류와 회귀에 쓸 수 있다.
신경망 모델
MLP multi-layer perceptron 는 여러 단계를 거쳐 결정을 만들어내는 선형 모델의 일반화된 모습이라고 볼 수 있다
<그림 2-44>의 왼쪽 노드는 입력 특성을 나타내며
연결선은 학습된 계수를 표현하고
오른쪽 노드는 입력의 가중치 합, 즉 출력을 나타낸다
MLP에서 가중치 합을 만드는 과정이 여러 번 반복됨
계수는 각 입력과 은닉층의 은닉 유닛 사이, 그리고 각 은닉 유닛과 출력 사이마다 있다
신경망 모델을 선형 모델보다 강력하게 만들기 위해 각 은닉 유닛의 가중치 합을 계산한 후 그 결과에 비선형 함수인 렐루나 하이퍼볼릭 탄젠트를 적용한다.
비선형 함수를 이용하여 신경망이 더 복잡한 함수 학습하게 됨
장단점과 매개변수
scikit-learn 분류기에서 불확실성을 추정할 수 있는 함수
2.4.1 결정 함수
2.4.2 예측 확률
predict_proba() 출력은 각 클래스에 대한 확률
이 값의 크기는 이진 분류에서는 항상 (n_samples, 2)
첫 번째 원소 = 첫 번째 클래스의 예측 확률
두 번째 원소 = 두 번째 클래스의 예측 확률
확률이므로 항상 0과 1 사이의 값이며 합은 항상 1