Chuỗi thời gian - Phương pháp ngây thơ
Giới thiệu
Các phương pháp ngây thơ, chẳng hạn như giả định giá trị dự đoán tại thời điểm 't' là giá trị thực của biến tại thời điểm 't-1' hoặc giá trị trung bình của chuỗi, được sử dụng để cân nhắc mức độ hoạt động của các mô hình thống kê và mô hình học máy và nhấn mạnh nhu cầu của họ.
Trong chương này, chúng ta hãy thử các mô hình này trên một trong những tính năng của dữ liệu chuỗi thời gian của chúng tôi.
Đầu tiên, chúng ta sẽ xem giá trị trung bình của đặc điểm 'nhiệt độ' trong dữ liệu của chúng ta và độ lệch xung quanh nó. Nó cũng hữu ích để xem các giá trị nhiệt độ tối đa và tối thiểu. Chúng ta có thể sử dụng các chức năng của thư viện numpy tại đây.
Hiển thị thống kê
Trong [135]:
import numpy
print (
'Mean: ',numpy.mean(df['T']), ';
Standard Deviation: ',numpy.std(df['T']),';
\nMaximum Temperature: ',max(df['T']),';
Minimum Temperature: ',min(df['T'])
)
Chúng tôi có số liệu thống kê cho tất cả 9357 quan sát trên dòng thời gian cách đều nhau, rất hữu ích để chúng tôi hiểu dữ liệu.
Bây giờ chúng ta sẽ thử phương pháp ngây thơ đầu tiên, đặt giá trị dự đoán ở thời điểm hiện tại bằng giá trị thực tại thời điểm trước đó và tính toán sai số bình phương trung bình gốc (RMSE) để nó định lượng hiệu suất của phương pháp này.
Hiển thị 1 st phương pháp ngây thơ
Trong [136]:
df['T']
df['T_t-1'] = df['T'].shift(1)
Trong [137]:
df_naive = df[['T','T_t-1']][1:]
Trong [138]:
from sklearn import metrics
from math import sqrt
true = df_naive['T']
prediction = df_naive['T_t-1']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 1: ', error)
RMSE cho Phương pháp Naive 1: 12.901140576492974
Chúng ta hãy xem phương pháp ngây thơ tiếp theo, trong đó giá trị dự đoán tại thời điểm hiện tại được tính bằng giá trị trung bình của các khoảng thời gian trước nó. Chúng tôi cũng sẽ tính toán RMSE cho phương pháp này.
Hiển thị phương pháp ngây thơ thứ 2
Trong [139]:
df['T_rm'] = df['T'].rolling(3).mean().shift(1)
df_naive = df[['T','T_rm']].dropna()
Trong [140]:
true = df_naive['T']
prediction = df_naive['T_rm']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 2: ', error)
RMSE for Naive Method 2: 14.957633272839242
Tại đây, bạn có thể thử nghiệm với nhiều khoảng thời gian trước đó cũng được gọi là 'độ trễ' mà bạn muốn xem xét, được giữ là 3 ở đây. Trong dữ liệu này, có thể thấy rằng khi bạn tăng số độ trễ và lỗi tăng lên. Nếu độ trễ được giữ là 1, nó sẽ giống như phương pháp ngây thơ được sử dụng trước đó.
Points to Note
Bạn có thể viết một hàm rất đơn giản để tính toán sai số bình phương trung bình gốc. Ở đây, chúng tôi đã sử dụng hàm lỗi bình phương trung bình từ gói 'sklearn' và sau đó lấy căn bậc hai của nó.
Trong gấu trúc, df ['column_name'] cũng có thể được viết là df.column_name, tuy nhiên đối với tập dữ liệu này, df.T sẽ không hoạt động giống như df ['T'] vì df.T là hàm để chuyển khung dữ liệu. Vì vậy, chỉ sử dụng df ['T'] hoặc xem xét đổi tên cột này trước khi sử dụng cú pháp khác.