Sai Phân Chuỗi Thời Gian (Time-Series Differencing) Đạt Tính Dừng
Deltad xt = xt - xt-d (t ≥ d)
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: linear-layer-and-mlp-foundations.
Nội dung đề bài
Mục tiêu kiến thức
- Đa số chuỗi thời gian trong thực tế (giá cổ phiếu, lưu lượng truy cập, nhiệt độ) không có tính dừng (Non-stationary): có xu hướng tăng trưởng (trend) hoặc tính chu kỳ mùa vụ (seasonality).
- Mô hình Machine Learning (ARIMA, Linear Regression) đòi hỏi chuỗi phải đạt tính dừng (trung bình và phương sai không đổi qua thời gian).
- Sai phân bậc d (Lag d):
Deltad xt = xt - xt-d (t ≥ d)
- Phục hồi đảo chiều (Inverse Differencing):
Khi mô hình dự đoán ra chuỗi sai phân Deltad xt, ta phục hồi lại giá trị gốc: xt = Deltad xt + xt-d
Yêu cầu
Xây dựng lớp TimeSeriesDifferencer:
class TimeSeriesDifferencer:
def __init__(self, lag: int = 1):
pass
def difference(self, series: np.ndarray) -> np.ndarray:
pass
def inverse(self, diff_series: np.ndarray, original_history: np.ndarray) -> np.ndarray:
pass- difference(series):
- series: Mảng 1D độ dài N.
- Trả về mảng 1D độ dài N - lag chứa Delta xt = xt - xt-lag.
- inverse(diff_series, original_history):
- diff_series: Mảng 1D chứa các giá trị sai phân được dự đoán (độ dài K).
- original_history: Mảng 1D chứa ít nhất lag giá trị gốc trước đó.
- Trả về mảng 1D độ dài K chứa chuỗi giá trị đã phục hồi.
Input
- Lớp TimeSeriesDifferencer(lag): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của TimeSeriesDifferencer: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 2000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
series = np.array([10.0, 12.0, 15.0, 19.0, 24.0])
diff_tool = TimeSeriesDifferencer(lag=1)
diff = diff_tool.difference(series)
recovered = diff_tool.inverse(diff, original_history=np.array([10.0]))
Output
[12., 15., 19., 24.]
Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
series = np.array([1.0, 2.0, 4.0, 6.0, 9.0, 12.0])
diff_tool = TimeSeriesDifferencer(lag=2)
diff = diff_tool.difference(series)
rec = diff_tool.inverse(diff, original_history=series[:2])
Output
[ 4., 6., 9., 12.]
Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
