기계 학습 - XGBoost 시계열을 사용한 에너지 소비 예측

간단히 말해서, 시계열 예측은 이전의 과거 데이터를 기반으로 미래 가치를 예측하는 프로세스입니다. 현재 시계열 예측을 사용하는 가장 인기 있는 영역 중 하나는 암호화폐 시장입니다. 사람들은 비트코인이나 이더리움과 같은 인기 암호화폐의 가격이 앞으로 며칠 또는 그 이상 동안 어떻게 변동할지 예측하고 싶어합니다. 또 다른 실제 사례는 에너지 소비 예측입니다. 특히 에너지가 주요 화두 중 하나인 오늘날의 세계에서 에너지 소비 요구 사항을 정확하게 예측할 수 있는 능력은 모든 유틸리티에 필수적인 도구입니다. 본문에서,

질문

우리는 에너지 소비 문제에 초점을 맞출 것이며, 도시의 다양한 가구의 일일 에너지 소비에 대한 충분히 큰 데이터 세트가 주어지면 우리의 임무는 미래 에너지 수요를 최대한 정확하게 예측하는 것입니다. 이 튜토리얼의 목적을 위해 저는 2011년 11월부터 2014년 2월까지 영국 런던 시에서 무작위로 선택된 5,567 가구의 에너지 소비량이 포함된 London Energy 데이터세트를 선택했습니다. 예측을 개선하기 위해 우리는 이 데이터 세트를 런던 날씨 데이터 세트 와 결합하여 날씨 관련 데이터를 추가합니다.

이 미니시리즈의 첫 번째 부분입니다. 이 기사 를 읽은 후 지연된 기능을 통합하여 결과를 크게 향상시키는 다음 섹션을 확인하십시오 .

전처리

모든 프로젝트에서 우리가 가장 먼저 하는 일은 데이터를 완전히 이해하고 필요한 경우 전처리하는 것입니다. 팬더를 사용하여 데이터를 보려면 다음을 수행할 수 있습니다.

"LCLId"는 각 가구를 식별하는 고유 문자열이고, "Date"는 설명이 필요하며, "KWH"는 해당 날짜에 소비된 총 킬로와트시 수이며 누락된 값이 전혀 없습니다. 가구별이 아닌 일반적인 방식으로 소비를 예측하고 싶기 때문에 결과를 날짜별 및 평균 kWh별로 그룹화해야 합니다.

이 시점에서 지난 몇 년 동안 소비가 어떻게 변화했는지 살펴볼 수 있다면 좋을 것 같습니다. 선 그래프를 통해 다음을 알 수 있습니다.

전체 데이터 세트에 대한 에너지 소비 맵

계절적 특성은 매우 분명합니다. 겨울에는 에너지 수요가 증가한 반면, 여름 내내 에너지 소비는 최저 수준이었습니다. 이 동작은 데이터 세트에서 매년 다른 높은 값과 낮은 값으로 반복됩니다. 1년 간의 변동을 시각화하려면 다음을 수행할 수 있습니다.

연간 에너지 소비

XGBoost 및 LightGB와 같은 모델을 훈련하려면 기능을 직접 생성해야 합니다. 현재는 전체 날짜라는 단 하나의 기능만 있습니다. 요일, 연도, 월 등 전체 날짜를 기준으로 다양한 특징을 추출할 수 있습니다. 이를 달성하기 위해 다음을 수행할 수 있습니다.

따라서 "날짜" 기능은 현재 중복됩니다. 이를 사용하여 데이터 세트를 제거하기 전에 학습 세트와 테스트 세트로 분할합니다. 전통적인 훈련과는 달리, 시계열에서는 데이터의 순서가 매우 중요하고 이전 데이터만 병합할 수 있기 때문에 세트를 무작위 방식으로 분할할 수 없습니다. 그렇지 않으면 미래 값도 고려하여 값을 예측하라는 메시지가 표시될 수 있습니다! 데이터 세트에는 지난 2.5년간의 데이터가 포함되어 있으므로 테스트 세트에는 지난 6개월의 데이터만 사용합니다. 훈련 세트가 더 크면 작년 전체를 테스트 세트로 사용합니다.

학습 세트와 테스트 세트 간의 분할과 구별을 다시 시각화하기 위해 다음을 그릴 수 있습니다.

열차-테스트 분리 시각화

이제 "날짜" 기능을 제거하고 훈련 및 테스트 세트를 만들 수 있습니다.

훈련 모델

하이퍼파라미터 최적화는 그리드 검색을 통해 수행됩니다. 그리드 검색은 매개변수와 일부 값을 구성으로 사용하여 가능한 모든 조합을 시도합니다. 최상의 결과를 달성하는 매개변수 구성은 최상의 추정기를 형성하는 매개변수 구성이 됩니다. 그리드 검색은 교차 검증도 활용하므로 적절한 분할 메커니즘을 제공하는 것이 중요합니다. 또한 문제의 특성상 단순한 k-겹 교차 검증만 사용할 수는 없습니다. Scikit Learn은 연속성을 존중하는 방식으로 데이터를 증분적으로 분할하는 TimeSeriesSplit 메서드를 제공합니다.

LightGB 모델의 경우 다양한 매개변수를 제공하여 동일한 작업을 수행할 수 있습니다.

평가하다

테스트 세트에서 가장 좋은 추정기를 평가하기 위해 몇 가지 측정항목을 계산합니다. 이는 평균 절대 오차(MAE), 평균 제곱 오차(MSE) 및 평균 절대 백분율 오차(MAPE)입니다. 이들 각각은 훈련된 모델의 실제 성능에 대한 서로 다른 관점을 제공합니다. 또한 모델의 성능을 더 잘 시각화하기 위해 선 그래프를 그릴 것입니다.

마지막으로 위 모델을 평가하려면 다음 명령을 실행해야 합니다.

XGBoost 결과

LightGBM 결과

XGBoost는 겨울 에너지 소비를 더 정확하게 예측할 수 있지만 성능을 엄격하게 정량화하고 비교하려면 오류 측정 기준을 계산해야 합니다. 아래 표를 보면 XGBoost가 모든 경우에 LightGBM보다 성능이 뛰어남이 분명합니다.

날씨 데이터 전처리

모델의 성능이 비교적 좋은데, 이를 더 개선할 수 있는 방법이 있나요? 대답은 '예'입니다. 더 나은 결과를 얻기 위해 사용할 수 있는 다양한 팁과 요령이 있습니다. 그 중 하나는 에너지 소비와 직간접적으로 관련된 접근성 기능을 사용하는 것입니다. 예를 들어, 날씨 데이터는 에너지 수요 예측에 결정적인 역할을 할 수 있습니다.

먼저 데이터의 구조를 살펴보겠습니다.

채워야 할 여러 유형의 누락된 데이터가 있습니다. 누락된 데이터를 채우는 것은 간단하지 않으며 상황에 따라 다릅니다. 날씨 데이터의 각 날짜는 이전 날짜와 다음 날짜에 따라 달라지므로 보간을 통해 이러한 값을 채울 것입니다. 또한 "date" 열을 "datetime"으로 변환한 다음 두 데이터프레임을 병합하여 하나의 증강된 데이터프레임을 얻습니다.

부스팅 세트를 생성한 후 분할 프로세스를 다시 실행하고 새로운 "training_data" 및 "testing_data"를 가져와야 한다는 점을 기억하세요. 새로운 기능도 포함하는 것을 잊지 마세요.

훈련 단계를 업데이트할 필요가 없습니다. 새 데이터 세트에서 모델을 훈련한 후 다음과 같은 결과를 얻습니다.

날씨 결과에 따라 XGBoost가 향상됩니다.

날씨 결과로 강화된 LightGBM

날씨 데이터는 두 모델의 성능을 크게 향상시켰습니다. 특히 XGBoost 시나리오에서는 MAE가 거의 44% 감소하는 반면 MAPE는 19%에서 16%로 증가합니다. LightGBM의 경우 MAE는 42% 감소하고 MAPE는 19.8%에서 16.7%로 감소합니다.

결론 및 다음 단계

앙상블 모델은 시계열 예측 문제에 사용할 수 있는 매우 강력한 기계 학습 도구입니다. 이 글에서 우리는 이것이 에너지 소비의 맥락에서 어떻게 이루어지는지 살펴보았습니다. 먼저 날짜 요소만 사용하여 모델을 학습합니다. 나중에 우리는 결과를 크게 개선하기 위해 훈련 중에 진행 중인 작업과 관련된 추가 데이터를 고려했습니다.

Supongo que te gusta

Origin blog.csdn.net/qq_41929396/article/details/132456799
Recomendado
Clasificación