Chuyển đến nội dung chính

Hướng dẫn Dự báo Chuỗi Thời gian

Hướng dẫn chi tiết về dự báo chuỗi thời gian. Học cách sử dụng Python và các framework hỗ trợ. Tìm hiểu về mô hình hoá thống kê liên quan.
Đã cập nhật 5 thg 10, 2026  · 15 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Dữ liệu chuỗi thời gian là dữ liệu được thu thập trên cùng một đối tượng tại các thời điểm khác nhau, chẳng hạn như GDP của một quốc gia theo năm, giá cổ phiếu của một công ty trong một khoảng thời gian, hoặc nhịp tim của chính bạn được ghi lại mỗi giây. Bất kỳ dữ liệu nào bạn có thể ghi nhận liên tục theo các khoảng thời gian khác nhau đều là một dạng dữ liệu chuỗi thời gian.

Bên dưới là ví dụ về dữ liệu chuỗi thời gian thể hiện số ca COVID-19 tại Hoa Kỳ được báo cáo cho CDC. Trục x biểu thị thời gian trôi qua và trục y biểu thị số ca COVID-19 tính theo hàng nghìn.


dữ liệu chuỗi thời gian thể hiện số ca COVID-19 tại Hoa Kỳ được báo cáo cho CDC

Mặt khác, các bộ dữ liệu thông dụng hơn lưu trữ thông tin tại một thời điểm duy nhất, như thông tin về khách hàng, sản phẩm, công ty, v.v., được gọi là dữ liệu chéo (cross-sectional). Ví dụ về điều này được thể hiện trong bộ dữ liệu bên dưới, theo dõi các quốc gia có số ca COVID-19 nhiều nhất trong một khoảng thời gian cố định và nhất quán cho tất cả các quốc gia.


theo dõi các quốc gia có số ca COVID-19 nhiều nhất

Không quá khó để phân biệt dữ liệu chéo và dữ liệu chuỗi thời gian vì mục tiêu phân tích của hai loại dữ liệu này rất khác nhau. Trong các ví dụ của chúng tôi, trước tiên chúng tôi quan tâm đến việc theo dõi số ca COVID-19 theo thời gian, sau đó mới phân tích số ca COVID-19 theo quốc gia trong một khoảng thời gian cố định.

Một bộ dữ liệu thực tế điển hình có khả năng là sự kết hợp của hai định dạng này. Ví dụ, hãy nghĩ về một nhà bán lẻ như Walmart bán hàng nghìn sản phẩm mỗi ngày. Nếu bạn phân tích doanh số theo sản phẩm trong một ngày cụ thể, đó sẽ là phân tích dữ liệu chéo. Bạn có thể muốn biết mặt hàng bán chạy số 1 vào đêm Giáng Sinh là gì chẳng hạn. Ngược lại, nếu bạn muốn tìm doanh số của một mặt hàng cụ thể theo thời gian (giả sử 5 năm gần đây), đó sẽ là phân tích chuỗi thời gian.

Mục tiêu khác nhau khi phân tích dữ liệu chuỗi thời gian và dữ liệu chéo, và một bộ dữ liệu thực tế nhiều khả năng là sự lai giữa cả hai dạng dữ liệu này.

Dự báo Chuỗi Thời gian là gì?

Dự báo chuỗi thời gian đúng như tên gọi; dự đoán các giá trị chưa biết. Dự báo chuỗi thời gian bao gồm việc thu thập dữ liệu lịch sử, chuẩn bị cho thuật toán xử lý, rồi dự đoán các giá trị tương lai dựa trên các mẫu được học từ dữ liệu lịch sử.

Có nhiều lý do khiến các công ty quan tâm đến việc dự báo các giá trị trong tương lai, như GDP, doanh số theo tháng, tồn kho, thất nghiệp và nhiệt độ toàn cầu:

  • Một nhà bán lẻ có thể muốn dự đoán doanh số tương lai ở cấp độ SKU (mã lưu kho) để lập kế hoạch và ngân sách.
  • Một cửa hàng nhỏ có thể muốn dự báo doanh số theo từng cửa hàng để lên lịch nguồn lực phù hợp (nhiều người hơn vào giai đoạn cao điểm và ngược lại).
  • Một ông lớn phần mềm như Google có thể muốn biết giờ bận rộn nhất trong ngày hay ngày bận rộn nhất trong tuần để phân bổ tài nguyên máy chủ phù hợp.
  • Cơ quan y tế có thể muốn dự đoán tổng số liều vắc-xin COVID được tiêm để tiếp tục dự đoán khi nào miễn dịch cộng đồng sẽ bắt đầu phát huy.

Các loại Dự báo Chuỗi Thời gian

Có ba loại dự báo chuỗi thời gian. Bạn nên dùng loại nào phụ thuộc vào kiểu dữ liệu bạn đang xử lý và bài toán cụ thể:

Dự báo đơn biến

Chuỗi thời gian đơn biến, như tên gọi, là chuỗi chỉ có một biến phụ thuộc theo thời gian. Ví dụ, nếu bạn theo dõi nhiệt độ theo giờ cho một khu vực và muốn dự báo nhiệt độ tương lai dựa trên nhiệt độ lịch sử, đó là dự báo chuỗi thời gian đơn biến. Dữ liệu của bạn có thể trông như thế này:

Dự báo đơn biến

Dự báo đa biến

Ngược lại, chuỗi thời gian đa biến có nhiều hơn một biến phụ thuộc theo thời gian. Mỗi biến không chỉ phụ thuộc vào các giá trị quá khứ của chính nó mà còn chịu ảnh hưởng từ các biến khác. Sự phụ thuộc này được dùng để dự báo các giá trị tương lai.

Xét ví dụ trên và giả sử bộ dữ liệu của chúng ta bao gồm các thuộc tính thời tiết khác trong cùng giai đoạn, như độ ẩm, điểm sương, tốc độ gió, v.v., cùng với giá trị nhiệt độ. Trong trường hợp này, có nhiều biến cần xem xét để dự đoán nhiệt độ tối ưu. Một chuỗi như vậy thuộc loại chuỗi thời gian đa biến. Lúc này bộ dữ liệu của bạn sẽ trông như sau:

Dự báo đa biến

Bạn vẫn dự báo giá trị nhiệt độ trong tương lai, nhưng giờ đây bạn có thể sử dụng thông tin khác sẵn có trong dự báo vì chúng ta giả định giá trị nhiệt độ cũng phụ thuộc vào các yếu tố này.

dự báo chuỗi thời gian đa biến Nguồn ảnh: Van Nguyen

Khi xử lý dự báo chuỗi thời gian đa biến, biến đầu vào có thể thuộc hai loại:

  • Ngoại sinh: Các biến đầu vào không bị ảnh hưởng bởi các biến đầu vào khác và biến đầu ra phụ thuộc vào chúng.
  • Nội sinh: Các biến đầu vào bị ảnh hưởng bởi các biến đầu vào khác và biến đầu ra phụ thuộc vào chúng.

Hướng dẫn này sẽ thảo luận một số mô hình cổ điển, nhưng không phải tất cả đều hỗ trợ dự báo chuỗi thời gian đa biến. Trong những tình huống như vậy, các mô hình máy học tỏ ra hữu ích vì bạn có thể mô hình hoá bất kỳ bài toán dự báo chuỗi thời gian nào dưới dạng hồi quy. Chúng ta sẽ xem ví dụ về điều này sau trong bài.

Phương pháp Dự báo Chuỗi Thời gian

Dự báo chuỗi thời gian có thể phân loại rộng thành các nhóm sau:

  • Mô hình cổ điển/thống kê — Trung bình trượt, Làm trơn mũ, ARIMA, SARIMA, TBATS
  • Máy học — Hồi quy tuyến tính, XGBoost, Random Forest, hoặc bất kỳ mô hình ML nào với phương pháp giảm
  • Học sâu — RNN, LSTM

Hướng dẫn này tập trung vào hai phương pháp đầu: mô hình cổ điển/thống kê và máy học. Các phương pháp học sâu nằm ngoài phạm vi của bài này.

Các mô hình Thống kê

Khi dự báo chuỗi thời gian bằng các mô hình thống kê, có khá nhiều thuật toán phổ biến và được chấp nhận rộng rãi. Mỗi thuật toán có hình thức toán học khác nhau và đi kèm tập giả định riêng cần được thoả mãn. Hướng dẫn này sẽ không đi sâu vào các khái niệm toán học, mà chỉ đưa trực giác mà hy vọng bạn sẽ thấy hữu ích.

ARIMA

ARIMA là một trong những phương pháp cổ điển phổ biến nhất cho dự báo chuỗi thời gian. Tên đầy đủ là autoregressive integrated moving average (tự hồi quy, tích phân, trung bình trượt) và là kiểu mô hình dự báo một chuỗi thời gian dựa trên chính các giá trị quá khứ của nó, tức các độ trễ và sai số dự báo bị trễ. ARIMA gồm ba thành phần:

  • Autoregression (AR): chỉ mô hình mà biến thay đổi hồi quy theo các giá trị trễ hay trước đó của chính nó.
  • Integrated (I): biểu thị việc lấy sai phân các quan sát thô để làm cho chuỗi thời gian trở nên dừng (tức, giá trị dữ liệu được thay bằng hiệu giữa giá trị hiện tại và giá trị ngay trước đó).
  • Moving average (MA): kết hợp sự phụ thuộc giữa một quan sát và sai số dư từ mô hình trung bình trượt áp dụng cho các quan sát bị trễ.

Phần "AR" của ARIMA cho thấy biến quan tâm đang tiến triển được hồi quy theo các giá trị trễ (tức đã quan sát trước đó) của chính nó. Phần "MA" cho thấy sai số hồi quy thực chất là tổ hợp tuyến tính của các hạng sai số có giá trị xảy ra đồng thời và tại các thời điểm khác nhau trong quá khứ. Chữ "I" (viết tắt của "integrated") cho thấy các giá trị dữ liệu đã được thay bằng hiệu giữa chúng và các giá trị trước đó (và quá trình sai phân này có thể được thực hiện nhiều lần). Mục đích của từng đặc trưng này là để mô hình khớp dữ liệu tốt nhất có thể.

SARIMA

Một phần mở rộng của ARIMA hỗ trợ mô hình hoá trực tiếp thành phần mùa vụ của chuỗi được gọi là SARIMA. Vấn đề với mô hình ARIMA là không hỗ trợ dữ liệu có tính mùa vụ, tức chuỗi thời gian có chu kỳ lặp lại. ARIMA kỳ vọng dữ liệu hoặc không có mùa vụ hoặc đã được loại bỏ thành phần mùa vụ, ví dụ điều chỉnh theo mùa bằng các phương pháp như sai phân theo mùa. SARIMA bổ sung ba siêu tham số mới để chỉ định tự hồi quy (AR), sai phân (I) và trung bình trượt (MA) cho thành phần mùa vụ của chuỗi.

Dự báo bằng mô hình SARIMA Dự báo bằng mô hình SARIMA

Làm trơn mũ (Exponential Smoothing)

Làm trơn mũ là phương pháp dự báo chuỗi thời gian cho dữ liệu đơn biến. Nó có thể được mở rộng để hỗ trợ dữ liệu có xu hướng hoặc thành phần mùa vụ. Đây có thể là lựa chọn thay thế cho họ mô hình ARIMA phổ biến.

Làm trơn mũ cho dữ liệu chuỗi thời gian gán trọng số giảm dần theo hàm mũ cho các quan sát từ mới đến cũ. Dữ liệu càng cũ, trọng số càng nhỏ, trong khi dữ liệu mới hơn được gán trọng số lớn hơn

  • vLàm trơn mũ đơn (single) sử dụng trung bình trượt có trọng số giảm dần theo hàm mũ.
  • Làm trơn mũ Holt thường đáng tin cậy hơn khi xử lý dữ liệu có xu hướng.
  • Làm trơn mũ ba (còn gọi là Holt-Winters nhân) đáng tin cậy hơn cho xu hướng parabol hoặc dữ liệu có cả xu hướng và mùa vụ.

so sánh kết quả giữa làm trơn mũ đơn, làm trơn mũ kép và EWMA hai giai đoạn so sánh kết quả giữa làm trơn mũ đơn (ES), ES kép và EWMA hai giai đoạn

TBATS

Các mô hình TBATS dành cho dữ liệu chuỗi thời gian có nhiều mùa vụ. Ví dụ, dữ liệu doanh số bán lẻ có thể có mẫu lặp theo ngày và theo tuần, cũng như theo năm.

Trong TBATS, phép biến đổi Box-Cox được áp dụng lên chuỗi thời gian gốc, sau đó được mô hình hoá như tổ hợp tuyến tính của xu hướng được làm trơn mũ, thành phần mùa vụ và thành phần ARMA.

Dự báo bằng TBATS Dự báo bằng TBATS

Máy học

Nếu bạn không muốn dùng mô hình thống kê hoặc chúng cho kết quả không tốt, bạn có thể thử phương pháp này. Máy học là một cách thay thế để mô hình hoá dữ liệu chuỗi thời gian cho mục đích dự báo. Trong phương pháp này, chúng ta trích xuất đặc trưng từ ngày tháng để thêm vào "biến X" và giá trị của chuỗi thời gian là "biến y". Hãy xem một ví dụ:

Cho mục đích của hướng dẫn này, tôi dùng bộ dữ liệu hành khách hàng không Hoa Kỳ có thể tải về từ Kaggle.

Mẫu dữ liệu

Chúng ta có thể trích xuất các đặc trưng từ cột "Date" như tháng, năm, tuần của năm, v.v. Xem ví dụ:

# extract month and year from dates
data['Month'] = [i.month for i in data['Date']]
data['Year'] = [i.year for i in data['Date']]

# create a sequence of numbers
data['Series'] = np.arange(1,len(data)+1)

# drop unnecessary columns and re-arrange
data.drop(['Date', 'MA12'], axis=1, inplace=True)
data = data[['Series', 'Year', 'Month', 'Passengers']]

# check the head of the dataset
data.head()

Các hàng mẫu sau khi trích xuất đặc trưng Các hàng mẫu sau khi trích xuất đặc trưng

Một điều cần lưu ý là phép chia train-test cho dữ liệu chuỗi thời gian có tính đặc thù. Vì bạn không thể thay đổi thứ tự bảng, bạn phải đảm bảo không lấy mẫu ngẫu nhiên, do bạn muốn dữ liệu kiểm tra chứa các điểm nằm trong tương lai so với các điểm trong dữ liệu huấn luyện (thời gian luôn tiến về phía trước).

# split data into train-test set
train = data[data['Year'] < 1960]
test = data[data['Year'] >= 1960]

# check shape
train.shape, test.shape
>>> ((132, 4), (12, 4))

Bây giờ chúng ta đã chia train-test xong, ta sẵn sàng huấn luyện mô hình máy học trên dữ liệu train, chấm điểm trên dữ liệu test và đánh giá hiệu năng của mô hình. Trong ví dụ này, tôi sẽ dùng PyCaret; một thư viện máy học mã nguồn mở, low-code trong Python, tự động hoá các quy trình máy học. Để dùng PyCaret, bạn phải cài đặt bằng pip.

# install pycaret
pip install pycaret

Nếu bạn cần trợ giúp trong quá trình cài đặt, vui lòng tham khảo tài liệu chính thức.

Giả sử bạn đã cài đặt PyCaret thành công:

# import the regression module
from pycaret.regression import *

# initialize setup
s = setup(data = train, test_data = test, target = 'Passengers', fold_strategy = 'timeseries', numeric_features = ['Year', 'Series'], fold = 3, transform_target = True, session_id = 123)

Giờ để huấn luyện các mô hình máy học, bạn chỉ cần chạy một dòng:

best = compare_models(sort = 'MAE')

Kết quả từ compare_models Kết quả từ compare_models

Mô hình tốt nhất sử dụng kiểm định chéo 3 lần dựa trên Sai số Tuyệt đối Trung bình (MAE) là Leased Angle Regression. Giờ chúng ta có thể dùng mô hình này để dự báo tương lai. Để làm vậy, chúng ta phải tạo các "biến X" trong tương lai. Có thể thực hiện bằng cách tạo các ngày tương lai rồi trích xuất đặc trưng từ đó.

Vì chúng ta đã huấn luyện mô hình trên dữ liệu đến năm 1960, hãy dự đoán năm năm tiếp theo đến 1965. Để dùng mô hình cuối cùng tạo dự báo tương lai, trước tiên chúng ta cần tạo một bộ dữ liệu gồm các cột Month, Year, Series cho các ngày tương lai. Đoạn mã dưới đây tạo bộ dữ liệu "X" tương lai.

future_dates = pd.date_range(start = '1961-01-01', end = '1965-01-01', freq = 'MS')
future_df = pd.DataFrame()
future_df['Month'] = [i.month for i in future_dates]
future_df['Year'] = [i.year for i in future_dates]    
future_df['Series'] = np.arange(145,(145+len(future_dates)))
future_df.head()

Các hàng mẫu từ future_df Các hàng mẫu từ future_df

Giờ chúng ta có thể dùng future_df để dự đoán:

predictions_future = predict_model(best, data=future_df)
predictions_future.head()

Kết quả từ predictions_future.head() Kết quả từ predictions_future.head()

Và giờ chúng ta có thể vẽ biểu đồ:

concat_df = pd.concat([data,predictions_future], axis=0)
concat_df_i = pd.date_range(start='1949-01-01', end = '1965-01-01', freq = 'MS')
concat_df.set_index(concat_df_i, inplace=True)
fig = px.line(concat_df, x=concat_df.index, y=["Passengers", "Label"], template = 'plotly_dark')
fig.show()

Số hành khách hàng không Hoa Kỳ thực tế (1949–1960) và dự đoán (1961–1964) Số hành khách hàng không Hoa Kỳ thực tế (1949–1960) và dự đoán (1961–1964)

Có vài điểm quan trọng cần lưu ý. Bất cứ khi nào xử lý chuỗi thời gian đơn biến, bạn luôn có thể chuyển chúng thành bài toán hồi quy và giải như ví dụ này. Tuy nhiên, bạn phải cẩn trọng với kiểm định chéo. Bạn không thể dùng kiểm định chéo ngẫu nhiên cho mô hình chuỗi thời gian và phải dùng các kỹ thuật phù hợp với chuỗi thời gian. Trong ví dụ này, PyCaret sử dụng TimeSeriesSplit từ thư viện scikit-learn.

Các Framework Python cho Dự báo

Facebook Prophet

Prophet là phần mềm mã nguồn mở do nhóm Core Data Science của Facebook phát hành. Có sẵn trên CRAN và PyPI.

Prophet là một quy trình dự báo dữ liệu chuỗi thời gian dựa trên mô hình cộng, trong đó các xu hướng phi tuyến được khớp với mùa vụ theo năm, tuần và ngày, cộng với hiệu ứng ngày lễ. Nó hoạt động tốt nhất với chuỗi thời gian có hiệu ứng mùa vụ mạnh và có vài mùa dữ liệu lịch sử. Prophet chịu được dữ liệu thiếu, sự dịch chuyển xu hướng và thường xử lý ngoại lệ tốt.

Để tìm hiểu thêm, xem liên kết này.

Dự báo bằng FB Prophet Dự báo bằng FB Prophet

sktime

sktime là một framework hợp nhất mã nguồn mở cho máy học với chuỗi thời gian. Nó cung cấp nền tảng dễ dùng, linh hoạt và mô-đun cho nhiều tác vụ máy học chuỗi thời gian. sktime cung cấp giao diện tương thích với scikit-learn và công cụ tổ hợp mô hình, với mục tiêu giúp hệ sinh thái dễ dùng và tương tác tốt hơn nói chung.

sktime Để tìm hiểu thêm về sktime, xem liên kết này.

pmdarima

Pmdarima là thư viện thống kê được thiết kế để lấp khoảng trống trong khả năng phân tích chuỗi thời gian của Python. Bao gồm:

  • Tương đương chức năng auto.arima của R
  • Tập hợp các kiểm định thống kê về tính dừng và tính mùa vụ
  • Phân rã chuỗi thời gian theo mùa vụ
  • Tiện ích kiểm định chéo
  • Bộ sưu tập dữ liệu chuỗi thời gian dựng sẵn phong phú để tạo mẫu và ví dụ

Để tìm hiểu thêm về pmdarima, xem trang này.

Kats

Kats là một dự án mã nguồn mở tuyệt vời khác của Facebook, do nhóm Infrastructure Data Science phát hành. Có sẵn trên PyPI.

Kats là bộ công cụ phân tích dữ liệu chuỗi thời gian; một framework nhẹ, dễ dùng và khái quát để thực hiện phân tích chuỗi thời gian. Kats hướng tới cung cấp giải pháp một điểm đến cho phân tích chuỗi thời gian, bao gồm phát hiện, dự báo, trích xuất/nhúng đặc trưng và phân tích đa biến, v.v.

Dự báo bằng KATS Dự báo bằng KATS

Để tìm hiểu thêm về KATS, xem liên kết này.

Orbit

Orbit là một dự án mã nguồn mở xuất sắc của Uber. Đây là thư viện Python cho dự báo chuỗi thời gian theo hướng Bayes. Nó cung cấp giao diện quen thuộc và trực quan theo quy trình khởi tạo - fit - dự đoán cho các tác vụ chuỗi thời gian, trong khi sử dụng các ngôn ngữ lập trình xác suất bên dưới.

Dự báo bằng Orbit Dự báo bằng Orbit

Để tìm hiểu thêm về Orbit, xem liên kết này.

PyCaret

PyCaret là một thư viện máy học low-code, mã nguồn mở trong Python, tự động hoá các quy trình máy học. Với PyCaret, bạn dành ít thời gian viết mã và nhiều thời gian phân tích hơn. Bạn có thể huấn luyện mô hình, phân tích, lặp nhanh hơn bao giờ hết, và triển khai ngay lập tức dưới dạng REST API hoặc thậm chí xây một ứng dụng ML giao diện đơn giản, tất cả ngay trong Notebook ưa thích của bạn.

Kiến trúc Mô-đun Chuỗi Thời gian của PyCaret. Phát triển bởi Trưởng nhóm phát triển Nikhil Gupta. Kiến trúc Mô-đun Chuỗi Thời gian của PyCaret. Phát triển bởi Trưởng nhóm phát triển Nikhil Gupta.

Tiếp theo, chúng ta sẽ xem ví dụ end-to-end về tác vụ dự báo chuỗi thời gian sử dụng thư viện PyCaret.

Ví dụ End-to-end

Mô-đun chuỗi thời gian của PyCaret hiện ở giai đoạn beta, bạn có thể tải về từ pip.

pip install pycaret-ts-alpha

Liên kết đến hướng dẫn này trên Colab.

Bộ dữ liệu

Ở đây, chúng tôi sử dụng bộ dữ liệu airline, cũng có sẵn trong kho dữ liệu của PyCaret.

from pycaret.datasets import get_data
data = get_data('airlineer')

Bộ dữ liệu

data.plot()

data.plot()

Thiết lập Thí nghiệm

Các thí nghiệm trong PyCaret bắt đầu bằng hàm setup. Hàm này lo toàn bộ các bước tiền xử lý, chia train-test, chiến lược kiểm định chéo và một vài tác vụ khác.

from pycaret.time_series import *
s = setup(data, session_id = 123)

Kết quả từ hàm setup Kết quả từ hàm setup

Phân tích Dữ liệu Khám phá (EDA)

Khi EDA dữ liệu chuỗi thời gian đơn biến, có vài việc bạn có thể và nên làm.

Đối với việc sử dụng các mô hình cổ điển và thống kê, bạn có thể chạy một số kiểm định thống kê. Có một hàm trong PyCaret thực hiện việc này cho bạn.

check_stats()

Kết quả từ hàm check_stats Kết quả từ hàm check_stats

Nếu bạn đang xử lý chuỗi thời gian đơn biến, bạn cũng có thể phân rã chúng thành các thành phần xu hướng, mùa vụ và sai số để phục vụ phân tích tiếp theo.

plot_model(plot = 'decomp_classical")

Kết quả từ hàm plot_model ## Huấn luyện và Lựa chọn Mô hình ## Kết quả từ hàm plot_model<c/entre> ## Huấn luyện và Lựa chọn Mô hình ## Để huấn luyện nhiều mô hình và chọn một mô hình tốt nhất, chúng ta chỉ chạy một dòng lệnh. best = compare_models() Kết quả từ hàm compare_models Kết quả từ hàm compare_models

PyCaret đã huấn luyện hơn 25 mô hình bằng kiểm định chéo phù hợp với chuỗi thời gian và trình bày danh sách mô hình theo thứ tự hiệu năng từ cao đến thấp. Mô hình tốt nhất dựa trên thí nghiệm này cho bộ dữ liệu này là Exponential Smoothing, với sai số tuyệt đối trung bình là 7,781.

Phân tích Mô hình

Trước khi triển khai mô hình này để tạo dự báo tương lai, chúng ta có thể xem một vài biểu đồ phân tích để đánh giá chất lượng mô hình.

plot_model(best, plot = 'forecast', data_kwargs = {'fh': 24})

Biểu đồ Dự báo Chuỗi Thời gian Biểu đồ Dự báo Chuỗi Thời gian

plot_model(best, plot = 'residuals')

Biểu đồ phần dư chuỗi thời gian Biểu đồ phần dư chuỗi thời gian

plot_model(best, plot = 'insample')

Biểu đồ insample chuỗi thời gian Biểu đồ insample chuỗi thời gian

Triển khai Mô hình

Tại thời điểm này, chúng ta đã sẵn sàng hoàn thiện mô hình và lưu lại để sử dụng sau.

# finalize model
final_best = finalize_model(best)

# save model
final_best = finalize_model(best)

Triển khai Mô hình

Để tải lại tệp này và tạo dự báo cho dữ liệu tương lai:

# load model
loaded_model = load_model('my_best_model')

# generate predictions for the next 48 months
predict_model(loaded_model, fh = 48)

Đầu ra rút gọn Đầu ra rút gọn

Kết luận

Dự báo chuỗi thời gian là một kỹ năng rất hữu ích để học. Nhiều vấn đề trong đời sống mang bản chất chuỗi thời gian. Dự báo có nhiều ứng dụng trong các ngành, với vô số trường hợp thực tiễn như: dự báo thời tiết, kinh tế, y tế, tài chính, bán lẻ, kinh doanh, nghiên cứu môi trường, khoa học xã hội và nhiều hơn nữa.

Về cơ bản, bất kỳ dữ liệu lịch sử nào có khoảng thời gian nhất quán đều có thể được phân tích bằng các phương pháp chuỗi thời gian để dẫn đến bài toán dự báo học từ dữ liệu lịch sử và cố gắng dự đoán tương lai. Tóm lại, có ba nhóm lớn cho dự báo chuỗi thời gian:

  • Mô hình thống kê - Làm trơn mũ, ARIMA, SARIMA, TBATS, v.v.
  • Máy học - Hồi quy tuyến tính, XGBoost, Random Forest, v.v.
  • Học sâu - RNN, LSTM

Nếu bạn muốn tiếp tục xây dựng kiến thức và kỹ năng về dự báo chuỗi thời gian, hãy xem lộ trình "Time Series with Python" tuyệt vời của Datacamp. Trong lộ trình này, bạn sẽ học cách thao tác dữ liệu chuỗi thời gian bằng pandas, làm việc với các thư viện thống kê bao gồm NumPy và statsmodels để phân tích dữ liệu, và phát triển kỹ năng trực quan hoá bằng Matplotlib, SciPy và seaborn. Kết thúc lộ trình, bạn sẽ biết cách dự báo tương lai bằng các mô hình họ ARIMA và tạo dự đoán, insight bằng các mô hình máy học.

Chủ đề
Khoa học Dữ liệu
Machine Learning
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm