Time Series Analysis
Phân tích chuỗi thời gian nghiên cứu dữ liệu được sắp xếp theo thời gian để tìm xu hướng, tính mùa vụ và điểm bất thường, đồng thời dự báo giá trị tương lai bằng các model thống kê và deep learning.
Phân tích chuỗi thời gian là nghiên cứu các điểm dữ liệu được ghi nhận theo thứ tự thời gian, thường ở những khoảng đều đặn, chẳng hạn số đọc cảm biến mỗi giờ, doanh số mỗi ngày hoặc số xe mà camera giao thông nhìn thấy mỗi phút. Điểm khác biệt của lĩnh vực này so với các phương pháp phân tích dữ liệu khác là thứ tự mang thông tin: mỗi quan sát phụ thuộc vào những quan sát trước đó, nên xáo trộn dữ liệu sẽ phá hủy các mẫu cần nghiên cứu. Các mục tiêu chính gồm mô tả chuỗi thông qua xu hướng và tính mùa vụ, dự báo giá trị tương lai, phát hiện bất thường và phân loại toàn bộ chuỗi, chẳng hạn nhịp tim trên ECG.
Xu hướng, tính mùa vụ và tính dừng#
Phần lớn chuỗi kết hợp một vài thành phần. Xu hướng là chiều hướng dài hạn; tính mùa vụ là mẫu lặp lại theo chu kỳ cố định như ngày, tuần hoặc năm; chu kỳ là những đợt tăng giảm kéo dài hơn nhưng không có chu kỳ cố định; phần dư là những gì còn lại. Phân rã tách các thành phần này, theo cách cổ điển bằng trung bình trượt và theo cách vững chắc hơn bằng STL, phương pháp phân rã mùa vụ-xu hướng dựa trên hồi quy cục bộ do Robert Cleveland và cộng sự công bố năm 1990.
Tự tương quan, tức tương quan giữa một chuỗi và bản sao bị dịch độ trễ của chính chuỗi đó, làm lộ cấu trúc này: giá trị cao tại độ trễ 24 trong dữ liệu theo giờ nghĩa là mỗi giờ giống với cùng giờ của ngày trước đó. Nhiều model thống kê cũng giả định tính dừng, nghĩa là trung bình, phương sai và tự tương quan không thay đổi theo thời gian. Kiểm định Dickey-Fuller mở rộng kiểm tra một dạng không dừng phổ biến; phép sai phân, mô hình hóa thay đổi từ bước này sang bước tiếp theo thay vì mức giá trị, loại bỏ xu hướng.
Ví dụ này mô phỏng số lượng xe theo giờ trong bốn tuần với chu kỳ ngày, xu hướng tăng chậm và nhiễu; ví dụ đo tự tương quan của chuỗi rồi dự báo ngày cuối cùng theo hai cách:
import numpy as np
import pandas as pd
# Four weeks of hourly vehicle counts: a daily cycle, a slow upward trend, and noise
rng = np.random.default_rng(0)
hours = pd.date_range("2026-03-01", periods=24 * 28, freq="h")
daily_cycle = 40 + 30 * np.sin(2 * np.pi * (hours.hour - 9) / 24)
counts = pd.Series(daily_cycle + 0.02 * np.arange(len(hours)) + rng.normal(0, 5, len(hours)), index=hours)
# Autocorrelation: how strongly each count resembles the count 1, 12, and 24 hours earlier
for lag in [1, 12, 24]:
print(f"Autocorrelation at lag {lag}: {counts.autocorr(lag):.2f}")
# Forecast the final day from the 27 days before it
history, actual = counts[:-24], counts[-24:].to_numpy()
naive = np.full(24, history.iloc[-1]) # repeat the last observed count
seasonal_naive = history.iloc[-24:].to_numpy() # repeat the same hour of the previous day
print(f"Naive MAE: {np.abs(actual - naive).mean():.1f} vehicles")
print(f"Seasonal naive MAE: {np.abs(actual - seasonal_naive).mean():.1f} vehicles")Tự tương quan đạt 0,92 ở độ trễ 1, -0,89 ở độ trễ 12, khi đỉnh buổi chiều trùng với mức thấp ban đêm, và 0,95 ở độ trễ 24. Lặp lại số lượng quan sát cuối cùng có sai số trung bình 24,5 xe mỗi giờ, trong khi lặp lại số lượng của ngày trước đó có sai số 5,6; do đó, dự báo ngây thơ theo mùa là đường cơ sở mà model dự báo phải vượt qua.
Các phương pháp dự báo#
Các phương pháp thống kê vẫn có hiệu quả cao, đặc biệt với chuỗi ngắn. San bằng hàm mũ, do Charles Holt và Peter Winters phát triển khoảng năm 1960, gán trọng số lớn nhất cho các quan sát gần đây rồi bổ sung thành phần xu hướng và mùa vụ. Model ARIMA, được George Box và Gwilym Jenkins phổ biến năm 1970, kết hợp tự hồi quy, sai phân và trung bình trượt của sai số quá khứ. Prophet của Meta khớp xu hướng, tính mùa vụ và ảnh hưởng của ngày lễ cho dữ liệu doanh nghiệp.
Model machine learning xem dự báo là bài toán mô hình hóa dự đoán trên các giá trị trễ và đặc trưng lịch. Các cây tăng cường gradient như LightGBM thống trị cuộc thi M5 năm 2020 về doanh số Walmart, còn cuộc thi M4 năm 2018 với 100.000 chuỗi do mô hình lai giữa san bằng hàm mũ và mạng nơ-ron hồi quy của Slawek Smyl giành chiến thắng. Các model học sâu bao gồm LSTM, model không gian trạng thái và Transformer; các model nền tảng tiền huấn luyện như Chronos của Amazon và TimesFM của Google có thể dự báo zero-shot cho các chuỗi mới. Bộ lọc Kalman giải quyết tác vụ liên quan là ước tính trạng thái ẩn, chẳng hạn vị trí của đối tượng, từ các phép đo nhiễu theo thời gian thực.
Đánh giá phải tôn trọng thứ tự thời gian. Cross-validation ngẫu nhiên cho phép model nhìn thấy tương lai, một dạng rò rỉ dữ liệu; vì vậy, dự báo được kiểm thử bằng đánh giá theo gốc cuốn chiếu, phương pháp huấn luyện trên toàn bộ dữ liệu trước một mốc cắt, dự đoán giai đoạn tiếp theo rồi lặp lại khi mốc cắt dịch về phía trước.
Chuỗi thời gian từ video#
Thị giác máy tính chuyển video thành chuỗi thời gian. Đếm đối tượng trên camera giao thông tạo ra số xe mỗi phút; theo dõi đối tượng tạo ra vị trí và tốc độ của mỗi khung hình; camera cửa hàng tạo ra số lượng người hiện diện theo giờ. Các chuỗi này tiếp tục được đưa vào cùng những phương pháp đó để dự báo giờ cao điểm hoặc nhu cầu nhân sự, cũng như phát hiện bất thường nhằm cảnh báo khi lưu lượng giao thông đột ngột giảm sau tai nạn. Trong giải pháp Analytics của Ultralytics, analytics_type="line" theo dõi đối tượng bằng model YOLO26 và biểu đồ hóa số đối tượng trong tầm nhìn sau mỗi 30 khung hình, tức khoảng một lần mỗi giây với video 30 fps, để luồng camera trở thành chuỗi số đếm khi phát.
Phân tích chuỗi thời gian có điểm giao với mô hình hóa chuỗi trong xử lý ngôn ngữ tự nhiên, nơi văn bản có thứ tự theo vị trí nhưng không có khoảng lấy mẫu. Số lượng và tốc độ trích xuất từ video bằng các model phát hiện, theo dõi và hiểu video chiếm ít dung lượng hơn nhiều so với khung hình, nên có thể lưu trữ dữ liệu nhiều năm và so sánh giữa các camera.










