회귀모형에서의 평가 지표 선택은 언제나 어렵고 애매한 측면이 있는 것 같다. 이번 프로젝트에서는 구별 쓰레기 데이터는 존재하나 행정동별 쓰레기 데이터는 존재하지 않아서 "행정동별 쓰레기 배출량 데이터(PET, CAN) 예측" 이 필요하게 되었다.
여러 머신러닝 모델이 있었지만 특히 물리적으로 남은 시간을 중점으로 학습 가능성을 고려하고, 데이터의 수가 매우 작은 것을 고려하여 랜덤포레스트 회귀로 결정하게 되었다.
과정에서 당연하게도 회귀 모형의 평가지표를 무엇으로 할지에 대한 고려가 필요하게 되었고, 관련된 학습 내용을 이 글에서 정리해보도록 하겠다.
1. 먼저 Y 데이터의 분포를 확인
1-1 PET
1-1-1 시각화 및 왜도 점검
- 분포의 왜도 정도가 심하거나, 이상치가 많으면 RMSE 경우에는 이상치에 영향을 MAE보다 상대적으로 많이 받는다.
- 때문에 데이터마다 분포 + 도메인 지식(이상치도 분석에 영향을 끼쳐야하는 데이터인가 혹은 분석의 목적이 그러한가?)을 고려하여 선택하려면 필수 과정이다.
# PET 총량 칼럼 데이터
pet_total = dfr['PET 총량']
# Figure 및 서브플롯 설정
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
# 1번 그래프: 히스토그램
ax1.hist(pet_total, bins=30, color='blue', alpha=0.7, edgecolor='black')
ax1.set_title('히스토그램')
ax1.set_xlabel('PET 총량')
ax1.set_ylabel('빈도수')
# 왜도 (skewness) 계산
skew_value = stats.skew(pet_total)
ax1.text(0.6, 0.9, f'Skewness: {skew_value:.2f}', transform=ax1.transAxes, fontsize=12)
# 2번 그래프: Box plot
ax2.boxplot(pet_total, vert=False)
ax2.set_title('Box plot')
ax2.set_yticklabels(['PET 총량']) # y축 레이블 설정
# 레이아웃 조정
plt.tight_layout()
# 그래프 출력
plt.show()
- 처음 이 모양을 봤을 때는 어이없게 W 모양이라 또 스트레스를 받았다(25건이라 CLT도 안됨).
- 당연하게도 왜도가 높고, 이상치도 많을 것으로 생각했지만 시각화하고 왜도를 구한 경우에는 그렇지 않았다. 박스 플롯에는 이상치가 나타나지 않았고, 왜도는 양의 왜도이기는 하나 0.5에 아주 살짝 못미치는 수치가 나오게 되었다.
- 왜도에 대한 수치를 어떻게 해석해야할까?
Bulmer(Bulmer, MG 1979. Principles of Statistics. Dover) 는 다음과 같이 왜도 값을 해석하고 있다.
- 왜도가 -1보다 작거나 +1보다 크면 분포가 심하게 치우친 것임.
- 왜도가 -1과 -.5 사이 또는 +.5와 +1 사이이면 분포가 적당히 치우친 것임.
- 왜도가 -.5와 +.5 사이이면 분포가 거의 대칭임.
출처 : https://2stndard.tistory.com/140 글 내용을 재인용함.
하지만 0.5에 아~주 근사하게 걸쳐있었고, 아무리봐도 정규한 느낌은 들지 않아서 정규성 검정까지 실시해보았다.
- 정규성 검정 방법 고려 사항
데이터의 크기:
- 대규모 데이터셋: 대부분의 경우, 대규모 데이터셋에서는 두 검정 중 어떤 것을 선택하더라도 정확한 결과를 얻을 수 있습니다.
- 소규모 데이터셋: 작은 크기의 데이터셋인 경우, 샤피로-윌크 검정이 더 신뢰할 만합니다. 이는 콜모고로프-스미르노프 검정이 큰 데이터셋에서 미세한 차이를 감지하기 때문입니다.
분포의 형태:
- 이론적으로 정규분포에 가까운 데이터: 콜모고로프-스미르노프 검정을 사용할 수 있습니다.
- 비대칭적이거나 이상치가 있는 데이터: 샤피로-윌크 검정이 더 강건한(robust) 특성을 가지므로, 이러한 상황에서 신뢰할 수 있습니다.
출처 : Chat-Gpt
- 데이터가 25개로 매우 적고, 비대칭적인 모양이라 샤피로-윌크 검정을 실시했고 다음과 같이 정규성 또한 검정하였다.
1-1-2 PET 분포 탐색 결과
: 해당 데이터는 왜도가 0.49이고, 정규성 검정 결과 정규분포를 따르므로 비교적 이상치가 적고 분포가 고른 데이터임을 고려하여 회귀 모델 평가지표를 결정해야한다.
=> 이상치를 크게 신경쓰지 않아도 되므로, 직관적인 MAE
1-2 CAN
1-2-1 시각화 및 왜도 점검
- 위와 동일한 내용은 생략
- 왜도가 이미 높게 나왔으나, 코드에 이름만 바꾸면 되므로 정규성검정까지 확실하게 실시하였다.
1-2-2 PET 분포 탐색 결과
: 해당 데이터는 왜도가 1.32이고, 정규성 검정 결과 정규분포를 따르지 않고, 이상치가 존재하며, 분포가 고르지않은 데이터임을 고려하여 회귀 모델 평가지표를 결정해야한다.
=> 이상치와 비교적 중심에서 먼 데이터들이 상당 수 존재하므로, 이상치에 대한 오차들을 고려할 수 있는 MSE 그러나 MAE와 단위를 맞추어 비교가 가능해야 하므로 RMSE를 주요 평가 지표로서 사용하도록 하자.
1-2-3 log 변환 이용
- 다만 왜도가 높은 경우에 Y변수에 로그 변환을 실시하여 모델링을 실시하는 방법도 있어 이를 학습해보았으나, 아직 CAN에 대한 피처 엔지니어링 내용이 반영 전에 실시한 것으로 단순 참고와 학습에 의의를 두고자 한다.
로그 변환시 유의사항(다시 되돌리는 이유)
- 예측 값의 스케일이 다르다
모델이 로그 변환된 종속 변수로 학습되었기 때문에 예측값은 로그 스케일에서 나옵니다. 이는 실제 종속 변수의 스케일과 다릅니다. - 해석이 어렵다
로그 스케일에서의 예측값은 종종 직관적으로 이해하기 어렵습니다. 이는 특히 일반적인 사람들에게는 더욱 어려울 수 있습니다. - 평가 지표의 의미가 변경될 수 있다
일반적으로 회귀 모델의 성능은 원래 스케일에서 평가됩니다. 따라서 로그 스케일로 변환된 예측값을 사용하여 평가 지표를 계산하면 원래 의도와 다를 수 있습니다.
출처 : chat-GPT
다만, 지금처럼 로그 변환 이후가 이전보다 안좋은 경우
데이터의 특성에 따라 다를 수 있는데, 주로 로그 변환을 했을 때 Y 변수가 정규 분포에 가까워지고 모델의 성능이 향상되는 경우가 많습니다. 그러나 모든 데이터셋이나 문제에 로그 변환이 항상 도움이 되는 것은 아닙니다.
때때로는 로그 변환을 했을 때 모델의 성능이 오히려 저하될 수 있습니다. 이런 경우에는 로그 변환을 하지 않은 원래의 Y 변수를 사용하는 것이 더 나을 수 있습니다.
따라서 데이터와 문제에 따라 로그 변환의 효과는 달라질 수 있습니다. 실험을 통해 어떤 방식이 더 나은 결과를 가져오는지 확인하는 것이 중요합니다.
출처 : chat-GPT
'프로젝트 > (공모전)순환경제 활성화를 위한 서울시 스마트수거함 입지선정' 카테고리의 다른 글
좌표에 대하여 ...(EPSG 5181 6179 4326 등) (0) | 2023.10.31 |
---|---|
공모전 참여 케이스 스터디 -3 (일회용품 쓰레기 감소를 위한 다회용기 렌탈 사업 비즈니스 모델 개발) (0) | 2023.10.06 |
공모전 참여 케이스 스터디 -2 (서울시 수소차 충전소 우선 입지 선정) (0) | 2023.10.05 |
공모전 참여 케이스 스터디 -1 (크롤링 / 워드클라우드) (0) | 2023.10.04 |