<p>Data deret waktu mengubah bentuk gelombangnya dari waktu ke waktu, tetapi dapat meningkat atau menurun dari waktu ke waktu. Perubahan bertahap dan tidak periodik seperti itu kadang-kadang disebut sebagai tren.
Data dengan tren mengubah mean, varians, dan statistik lain dari data dari waktu ke waktu, dan akibatnya lebih sulit untuk diprediksi.
Pada halaman ini, kita akan mencoba untuk menghapus komponen tren dari data time series menggunakan python.</p>
df["曜日"]=df["日付"].dt.weekdaydf["年初からの日数%14"]=df["日付"].dt.dayofyear%14df["年初からの日数%28"]=df["日付"].dt.dayofyear%28defget_trend(timeseries,deg=3,trainN=0):"""Membuat garis tren untuk data deret waktu
Args:
timeseries(pd.Series) : Time series data
deg(int) : Degree of polynomial
trainN(int): Number of data used to estimate the coefficients of the polynomial
Returns:
pd.Series: Time series data corresponding to trends
"""iftrainN==0:trainN=len(timeseries)x=list(range(len(timeseries)))y=timeseries.valuescoef=np.polyfit(x[:trainN],y[:trainN],deg)trend=np.poly1d(coef)(x)returnpd.Series(data=trend,index=timeseries.index)trainN=500df["Trend"]=get_trend(df["y"],trainN=trainN,deg=2)plt.figure(figsize=(10,5))sns.lineplot(x=df["日付"],y=df["y"])sns.lineplot(x=df["日付"],y=df["Trend"])
XGBoost tidak tahu bahwa data berubah perlahan antara data pelatihan dan pengujian.
Oleh karena itu, semakin banyak Anda memprediksi masa depan, semakin banyak prediksi Anda akan meleset.
Agar XGBoost dapat meramalkan dengan baik, distribusi y dari data pelatihan dan pengujian harus dekat.
We first remove the portion corresponding to the trend from the observed values and then predict the values without the trend.
The XGBoost prediction is then added to the XGBoost prediction to obtain the final prediction.