이번에는 선형회귀와 의사결정나무를 좀 비교해보는 글 입니다.
3. 선형회귀 vs 의사 결정 나무
from sklearn.linear_model import LinearRegression #클래스를 이용하는것
lr = LinearRegression()
선형회귀를 이용해보겠습니다. 객체는 lr로 했습니다.
lr.fit(X_train, y_train)
학습을 하고 완료가 되면 예측을 해야합니다.
pred2 = lr.predict(X_test)
예측을 학습했습니다. 이후에 scatterplot으로 실행해보겠습니다.
sns.scatterplot(x=y_test, y=pred2)
mean_squared_error(y_test, pred2, squared=False)
#221.1987722244733
예측을 후 rmse를 출력해보면서 둘의 성능을 비교할 수 있습니다.
#의사결정나무 : 210.74186203651976
#선형회귀: 221.1798811600512
210.74186203651976 - 221.1798811600512
각각 값을 이용해서 계산하면 -10이 나와서 의사결정나무가 이 데이터에는 좀 더 적합한걸로 확인이 됩니다.
하이퍼 파라미터란?
-모델생성할때 옵션을 넣어서 조정하는 값들을 이야기 합니다
그러면 이제 하이퍼파라미터를 넣어서 모델을 튜닝해보려고 합니다.
#하이퍼 파라미터 적용하기
dtr = DecisionTreeRegressor(random_state=2024, max_depth=50, min_samples_leaf=30)
데이터 섞임은 동일하게 2024로고정하겠습니다.
만약 다르게하면 조건이 동일하지 않기에 불확실한 답이 됩니다.
위에있는 하이퍼파라미터는 가지치기개념으로 볼 수 있습니다.
dtr.fit(X_train, y_train)
학습을 시킵니다 또 예측을 합니다.
#학습
dtr.fit(X_train, y_train)
#예측
pred3 = dtr.predict(X_test)
#rmse
mean_squared_error(y_test, pred3, squared=False)
#181.29247853838177
# 의사 결정 나무: 210.74186203651976
# 의사 결정 나무(하이퍼 파라미터 튜닝): 181.29247853838177
# 선형 회귀: 221.1987722244733
181.29247853838177 - 210.74186203651976
#-29.44938349813799
하이퍼파라미터를 튜닝해줄수록 성능이 좋아지는것을 알 수 있습니다.
여기서 알 수 있는것
1. linearRegressor에서 데이터의 전처리와 섞임에 따라서 같은 모델이라도 성능이 달라질 수 있다.
2. 의사결정나무에서는 데이터의 형태에따라 fit한 알고리즘에 따라 더 적합할 수 있다는 점
3. 의사결정나무를 정했다고 하더라도 하이퍼파라미터 튜닝을 하게되면 성능이 더 좋아질 수 있다는 점.]
plot_tree로 tree모양 확인해보기
from sklearn.tree import plot_tree
plot_Tree 는 tree를 그려주는 모듈입니다.
plt.figure(figsize=(24,12))
plot_tree(dtr, max_depth=5, fontsize=10)
plt.show()
하이퍼파라미터 옵션 | 설명 |
max_depth=x | 트리 고정을 설정하는것(max최대로 x까지 내려줘) |
min_samples_leaf=x | 의사결정 나무중 가지치기를 하다가 x가 나오면 멈추기 |
'데이터 분석 및 시각화' 카테고리의 다른 글
[ML] 랜덤 포레스트를 이용한 호텔 데이터 다루기 (1) | 2024.07.14 |
---|---|
[ML] 서포트 벡터 머신(SVM),스케일링을 통한 손글씨 데이터셋만들어보기 (1) | 2024.07.08 |
[ML] 의사 결정 나무(decision tree)_bike 데이터 활용 (1) | 2024.07.05 |
[ML] 사이킷런(Scikit-learn) (0) | 2024.06.30 |
[데이터 시각화] 떡볶이 프렌차이즈의 입점전략은 바로 이것. (0) | 2024.06.29 |