Open njs03332 opened 2 years ago
DecisionTreeClassifier
기준, min_
으로 시작하는 매개변수를 증가시키거나, max_
로 시작하는 매개변수를 감소시키면
모델에 규제가 커짐
from sklearn.tree import DecisionTreeRegressor
tree_reg = DecisionTreeRegressor(max_depth=2) tree_reg.fit(X, y)
![image](https://user-images.githubusercontent.com/37107740/178526379-d004043c-7a71-4a20-b342-ae0647cef2ff.png)
- 앞서 만든 분류 트리와 비슷하지만, 회귀 트리에서는 각 노드에서 클래스를 예측하는 대신 어떤 값을 예측함 (value)
- 예) 0.111인 리프노드에 도달하는 경우: 이 리프 노드에 있는 110개 훈련 샘플의 평균 타깃값이 예측값 (0.111)이고, 이 예측값을 사용해 110개 샘플에 대한 평균제곱오차 (MSE)를 계산하면 0.015
![image](https://user-images.githubusercontent.com/37107740/178528759-e61cf065-a827-4167-8f56-1323e16f55b3.png)
- 이 모델의 예측은 왼쪽과 같음. max_depth=3으로 설정하면 오른쪽과 같음
- 각 영역의 예측값은 항상 그 영역에 있는 타깃값의 평균
- 알고리즘은 예측값과 가능한 한 많은 샘플이 가까이 있도록 영역을 분할함
- CART 알고리즘은 훈련 세트를 불순도를 최소화하는 방향으로 분할하는 대신 평균제곱오차(MSE)를 최소화하도록 분할 (비용함수: 식 6-4)
![image](https://user-images.githubusercontent.com/37107740/178530830-32de04cc-7157-4fcc-9b11-8a28d9b6f62f.png)
- 분류에서와 마찬가지로 회귀 작업에서도 결정트리가 과대적합되기 쉬움
- 규제가 없다면 왼쪽과 같은 예측을 함
- mn_samples_leaf=10으로 지정하면 오른쪽과 같음
(좌) 쉽게 데이터셋을 구분, (우) 45도 회전한 결정 트리는 불필요하게 구불구불함 = 일반화되기 어려울 것
한 가지 좋은 해결 방안은 PCA 기법으로 데이터를 회전시키는 것